Aquí hay una implementación del Viterbi algorithm que "descubrí" recientemente. El propósito aquí es decidir la distribución óptima de los tipos de cuadros en la codificación de video. Viterbi en sí es un poco difícil de entender a veces, así que creo que el mejor método es a través del ejemplo real.
En este ejemplo, Max-B consecutivos B-frames es 2. Todas las rutas deben terminar con un P-frame.
La longitud de ruta de 1 nos da P
como nuestra mejor ruta, ya que todas las rutas deben terminar en un P-frame, no hay otra opción.
La longitud de la ruta de acceso de 2 nos da BP
y _P
. "_"
es la mejor ruta de longitud 1. Esto nos da BP
y PP
. Ahora, calculamos los costos reales. Digamos, por el bien de este ejemplo, que BP es lo mejor.
La longitud de la ruta de 3 nos da BBP
y _B
P y __P
. "__"
es la mejor ruta de longitud 2. Esto nos da BBP
y PBP
y BPP
. Ahora, calculamos los costos reales. Digamos, por el bien de este ejemplo, que BBP es lo mejor.
La longitud de ruta de 4 nos da _BBP
y __BP
y ___P
. "___"
es la mejor ruta de longitud 3. Esto nos da PBBP y BPBP y BBPP. Ahora, calculamos los costos reales. Digamos, por el bien de este ejemplo, que BPBP es el mejor.
La longitud de ruta de 4 nos da __BBP
y ___BP
y ____P
. "____"
es la mejor ruta de longitud 4. Esto nos da BPBBP
y BBPBP
y BPBPP
.
Ahora, espere un minuto, todas las rutas coinciden en que el primer fotograma es B
. Entonces, el primer fotograma es B
.
El proceso se repite hasta que coincidan en qué cuadro es el primer cuadro P, y luego comienza la codificación.
Este algoritmo se puede adaptar a una gran variedad de problemas en muchos campos; también es el mismo algoritmo al que me refería en this post.
¿Puede una pregunta como esta tener una respuesta aceptada? –