Pattern Matching Longest Common Subsequence
Pattern Matching Longest Common Subsequence. Bill Robertson Zac Livingston John Garvin Bradley Wagner Nick Becker. Agenda. Introduction Pattern Matching String Matching Dynamic Programming Longest Common Subsequence Application 1 Application 2 Application n Future Areas of Interest.
Pattern Matching Longest Common Subsequence
E N D
Presentation Transcript
Pattern MatchingLongest Common Subsequence Bill Robertson Zac Livingston John Garvin Bradley Wagner Nick Becker
Agenda • Introduction • Pattern Matching • String Matching • Dynamic Programming • Longest Common Subsequence • Application 1 • Application 2 • Application n • Future Areas of Interest
Introduction • Present real-world scenario or interesting application • Grab audience
Pattern Matching • Main objective • Issues to be solved • Basic overview
History • Timeline preferable • History of problems solved by pattern matching
Areas of Application • Application areas • Types of pattern matching
String Matching • History • Overview • Highlight various algorithms with respective applications • Mention LCS problem briefly but need background on dynamic programming in order to fully understand
Dynamic Programming • Overview • Motivation of Area • Key requirements • Alternatives (greedy algorithms)
Longest Common Subsequence • Algorithm intro • Analysis • Correctness? …proofs, etc. • Walk through pseudocode • Step through example
LCS algorithm, step one LCS(X=“All your base”, Y=“are belong to us”)
LCS algorithm, step one Len(Y) “A” + LCS(X=“ll your base”, Y=“re belong to us”) Len(X) LCS(X=“All your base”, Y=“are belong to us”) ‘A’=’a’
LCS algorithm, step one Len(Y) LCS(X=“ll your base”, Y=“are belong to us”) max Len(X) LCS(X=“All your base”, Y=“re belong to us”) LCS(X=“All your base”, Y=“are belong to us”) ‘A’≠’a’
LCS algorithm, step one Len(Y) LCS(“ll your base”, “are belong to us”) “A” + LCS(“ll your base”, “re belong to us”) Len(X) LCS(X=“All your base”, Y=“are belong to us”) LCS(“All your base”, “re belong to us”)
LCS algorithm--building table LCS-Length: len[0,length(X)] 0 len[length(Y),0] 0 for i 1 to length(X): for j 1 to length(Y): if X[i] = Y[j]: len[i,j] len[i-1,j-1] dir[i,j] “” else if len[i-1,j] len[i,j-1]: len[i,j] len[i-1,j] dir[i,j] “” else: len[i,j] len[i,j-1] dir[i,j] “” 0 0 0 0 0 0 1 1 1 1 0 0 0
LCS algorithm--finding length LCS-find: ... ... ... 0 0 0 0 0 0 1 1 1 1 0 0 0
Asymptotic complexity LCS-length: ... O(?) ... O(?) ... O(?) Total: O(mn)
Asymptotic complexity LCS-find: ... O(?) ... O(?) ... Total: O(m+n)
Correctness • Proof sketch
Applications • Application 1 • Application 2 • Application n • Bioinformatics • Sequence alignment • Secondary protein structure comparison/prediction • DNA microarrays (if we have time during presentation. would be good idea) • Relevance of work and how related to LCS
Future Areas of Interest • Current areas of research and possible directions for work • Future of field and extensions of algorithm • Theoretical lower bound of LCS
Conclusion • Summarize what the audience should have learned