|
- This is a quick description of the viterbi aka dynamic programing
- algorthm.
-
- Its reason for existence is that wikipedia has become very poor on
- describing algorithms in a way that makes it useable for understanding
- them or anything else actually. It tends now to describe the very same
- algorithm under 50 different names and pages with few understandable
- by even people who fully understand the algorithm and the theory behind.
-
- Problem description: (that is what it can solve)
- assume we have a 2d table, or you could call it a graph or matrix if you
- prefer
-
- O O O O O O O
-
- O O O O O O O
-
- O O O O O O O
-
- O O O O O O O
-
-
- That table has edges connecting points from each column to the next column
- and each edge has a score like: (only some edge and scores shown to keep it
- readable)
-
-
- O--5--O-----O-----O-----O-----O
- 2 / 7 / \ / \ / \ /
- \ / \ / \ / \ / \ /
- O7-/--O--/--O--/--O--/--O--/--O
- \/ \/ 1/ \/ \/ \/ \/ \/ \/ \/
- /\ /\ 2\ /\ /\ /\ /\ /\ /\ /\
- O3-/--O--/--O--/--O--/--O--/--O
- / \ / \ / \ / \ / \
- 1 \ 9 \ / \ / \ / \
- O--2--O--1--O--5--O--3--O--8--O
-
-
-
- Our goal is to find a path from left to right through it which
- minimizes the sum of the score of all edges.
- (and of course left/right is just a convention here it could be top down too)
- Similarly the minimum could be the maximum by just fliping the sign,
- Example of a path with scores:
-
- O O O O O O O
-
- >---O. O O .O-2-O O O
- 5. .7 .
- O O-1-O O O 8 O O
- .
- O O O O O O-1-O---> (sum here is 24)
-
-
- The viterbi algorthm now solves this simply column by column
- For the previous column each point has a best path and a associated
- score:
-
- O-----5 O
- \
- \
- O \ 1 O
- \/
- /\
- O / 2 O
- /
- /
- O-----2 O
-
-
- To move one column forward we just need to find the best path and associated
- scores for the next column
- here are some edges we could choose from:
-
-
- O-----5--3--O
- \ \8
- \ \
- O \ 1--9--O
- \/ \3
- /\ \
- O / 2--1--O
- / \2
- / \
- O-----2--4--O
-
- Finding the new best pathes and scores for each point of our new column is
- trivial given we know the previous column best pathes and scores:
-
- O-----0-----8
- \
- \
- O \ 0----10
- \/
- /\
- O / 0-----3
- / \
- / \
- O 0 4
-
-
- the viterbi algorthm continues exactly like this column for column until the
- end and then just picks the path with the best score (above that would be the
- one with score 3)
-
-
- Author: Michael niedermayer
- Copyright LGPL
|