У меня получается, минут через пару выложу код
Проблема оказалась собственно в синтаксисе, идея была правильная. Ошибка вылезала в том случае, когда рассматривая "бабочку" для нижнего узла выбиралось значение метрики, которые приходят в первый. В случае отсутствия ошибок в канале эта проблема никак не проявлялась, а вот при некоторых комбинациях выдавало как раз таки пакеты ошибок. Надо быть внимательнее.
Если кому то интересно, то я реализовал это дело вот так. Несколько коряво, но оно работает и главное я понимаю, как оно работает.
В буфере я компю не единицы и нули (вверх-вниз), это будет следующим шагом, на котором буду отрабатывать способы реализации. В этом случае действительно необходимо пройти весь путь, чтобы выяснить, что же за переход у нас был. Но в моих то матрицах копиться сам путь. 4 возможных состояния, значит 4 возможных пути, которые могут выглядеть вот так
Path_Matrix
1 2 1 1 2 2
2 3 3 4 1 2
3 3 4 2 3 1
4 1 3 4 1 2
И соответствующий ему столбец метрики эти путей
2
4
6
3
Далее выбираем минимальный путь из этих - это будет первый путь, у него самый старый известный переход
это крайние правые числа 2-2. Такому переходу будет соответствовать выдача 1, к примеру. На следующем шаге справа будут переходы
12
41
31
12
И выбирать уже будем из этих переходов.
Система работает :-)

Картинка, показывающая, что декодер работает. Из 1000 символов было поврежденно 142, после декодера ошибочных оказалось 23. На больших последовательностях полученные мной результаты похожи на те, что выдает встроенный декодер Витерби, с теми же параметрами. Сейчас посмотрю 2 графика BER(SNR) для моего декодера и для встроенного. Если совпадут, то и славно.