В
1967 году Витерби разработал и проанализировал
алгоритм, в котором, по сути, реализуется декодирование, основанное на
принципе максимального правдоподобия; однако в нем уменьшается вычислительная нагрузка за счет использования особенностей структуры конкретной решётки
кода. Преимущество декодирования Витерби, по сравнению с декодированием по методу полного перебора, заключается в том, что сложность декодера Витерби не является функцией количества символов в последовательности
кодовых слов. Алгоритм включает в себя вычисление
меры подобия (или
расстояния), между
сигналом, полученным в момент времени
(....), и всеми путями решётки, входящими в каждое состояние в момент времени
(....). В алгоритме Витерби не рассматриваются те пути решётки, которые, согласно принципу максимального правдоподобия, заведомо не могут быть оптимальными. Если в одно и то же состояние входят два пути, выбирается тот, который имеет лучшую
метрику; такой путь называется
выживающим. Отбор выживающих путей выполняется для каждого состояния. Таким образом, декодер углубляется в решётку, принимая решения путём исключения менее вероятных путей. Предварительный отказ от маловероятных путей упрощает процесс декодирования. В
1969 году Омура (Omura) показал, что основу алгоритма Витерби составляет оценка максимума правдоподобия. Отметим, что задачу отбора оптимальных путей можно выразить как выбор кодового слова с
максимальной метрикой правдоподобия или
минимальной метрикой расстояния.