1679
правок
Изменения
м
Нет описания правки
# Условие порядка - <tex> \forall i, j : c_i < c_j \iff p_i < p_j </tex>. То есть, если символ c_i лексикографически меньше символа c_j, его код также будет [[лексикографический порядок | лексикографически]] меньше, и наоборот.
# Условие оптимальности - <tex> \sum\limits_{i = 1}^{|\Sigma|} f_i \cdot |p_i| </tex> - минимально, где f_i - количество(или вероятность) встретить символ c_i в тексте, а |p_i| - длина его кода.
Алгоритм нахождения оптимального префиксного кода с сохранением порядка.
Решим задачу используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева(???) для отрезка алфавита от i до j.
Определение точки разреза:
R[i][j]
Пересчет:
<tex> D[i][j] = \min\limits_{k = i}^{j - 1} D[i][k] + D[k + 1][j] + S </tex>