Algorytm Viterbiego




Algorytm Viterbiego – algorytm dekodujący, o strategii programowania dynamicznego, opracowany przez Andrew Viterbiego i opublikowany przez niego w 1967 roku w IEEE Transactions on Information Theory, IT-13 w artykule Error bounds for convolutional codes and an asymptotically optimum decoding algorithm (str. 260-269).


Jego pierwszym zastosowaniem było, i nadal jest, dekodowanie kodów splotowych. Jednak stosowany jest również w innych zaawansowanych technologiach telekomunikacyjnych, np. jako odbiornik nieliniowy dla kanału z interferencją międzysymbolową.


Stosowany jest także w kontekście ukrytych modeli Markowa (ang. HMM) do dekodowania sekwencji stanów ukrytych, które z największym prawdopodobieństwem mogły dać sekwencję obserwacji.


Działanie tego algorytmu oparte jest o kryterium najwyższej wiarygodności, a jego ideą jest to, że optymalna ścieżka dojścia przez dekoder do aktualnego stanu składa się ze ścieżki o najmniejszej metryce dojścia do któregoś ze stanów poprzednich oraz przejścia do aktualnego stanu. Jak widać proces ten można wyrazić iteracją.


Im dłuższy czas obserwacji i działania tego algorytmu, tym bardziej wiarygodny wynik otrzymujemy. Można jednak zauważyć, że już po mniej więcej 3L do 5L krokach (gdzie L jest długością wymuszenia kodu) otrzymujemy na wykresie kratowym, wspólną ścieżkę, tzw. pień, dla kolejnych stanów. Możemy więc ograniczyć opóźnienie dekodowania właśnie do tego okresu i przyjąć wynik za wystarczająco dokładny.


Algorytm Viterbiego sprawdza się zarówno w przypadku dekodowania twardo-, jak również miękkodecyzyjnego (przy użyciu algorytmu SOVA - Soft Output Viterbi Algorithm).


Nie jest on jedynym algorytmem dekodowania kodów splotowych, aczkolwiek na pewno najbardziej popularnym ze względu na łatwość jego realizacji sprzętowej.







這個網誌中的熱門文章

12.7 cm/40 Type 89 naval gun

Shark

Wiciokrzew