Skip to content

Commit ecef3cf

Browse files
committed
README: clarify O(√t) memory and define t in practical terms
1 parent 882f02d commit ecef3cf

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@
2828
- **Partition invariance**: outputs are unchanged across valid choices of block size and chunking; merges are deterministic and order independent.
2929
- **Full-history equivalence**: results match an unbounded-history evaluation; the space savings come from recomputation, not information loss.
3030

31+
### What O(√t) memory means (and what 't' is)
32+
- 't' denotes the total units of work (time steps) the pipeline performs. In practice it grows roughly with total bases processed: number of reads × read length, plus modest indexing/merge overhead proportional to the reference.
33+
- Peak resident memory grows with the square root of t, not linearly. If you double the total data processed, peak memory rises by about √2 ≈ 1.41×, not 2×.
34+
- The bound holds because Rosalind keeps only the current block buffer of size Θ(√t), a rolling boundary, and a height‑compressed merge stack of O(log t); older block state is recomputed when needed, not stored.
35+
- Practically: whole‑genome runs stay under ~100 MB on commodity laptops while matching the outputs of an unbounded‑history evaluation.
36+
3137
---
3238

3339
## Why This Is Different

0 commit comments

Comments
 (0)