[FFmpeg-cvslog] r17772 - trunk/doc/viterbi.txt

michael subversion
Tue Mar 3 16:35:20 CET 2009


Author: michael
Date: Tue Mar  3 16:35:20 2009
New Revision: 17772

Log:
Quick desription of the viterbi algorithm so i dont have to repeat it
over and over again on the ML.

Added:
   trunk/doc/viterbi.txt

Added: trunk/doc/viterbi.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/doc/viterbi.txt	Tue Mar  3 16:35:20 2009	(r17772)
@@ -0,0 +1,110 @@
+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
+




More information about the ffmpeg-cvslog mailing list