Announcements:
| ![]() |
Values on the previous column are all that are needed for the next
Final score is the max of the last column

What about reconstructing an optimal alignment?
Any optimal path must go through one edge through the midpoint

graph cuts
At the heart of this trick


Total time: O(nm), Total space: O(n)

We divide the grid into blocks and only compute scores at the corners


If we solved the mini-alignments by DP we'd be back to O(nm).
Is there any advantage to solving the mini-alignments by DP?
![]() | If the block sizes are small enough, this is not too crazy an idea. This is really nothing more than creating a product alphabet. Another example of computation sharing |


After 23 years
Crochemore et al in 2003: A subquadratic sequence alignment algorithm for unrestricted scoring matrices.
Global alignment
All these factors are nearly orthogonal (the last two might not be)
We've discussed each one in isolation
Great effort to code simultaneously (an opportunity for someone)