Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза — различия между версиями
м |
м |
||
Строка 4: | Строка 4: | ||
# Условие порядка - <tex> \forall i, j : c_i < c_j \iff p_i < p_j </tex>. То есть, если символ c_i лексикографически меньше символа c_j, его код также будет [[лексикографический порядок | лексикографически]] меньше, и наоборот. | # Условие порядка - <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| - длина его кода. | # Условие оптимальности - <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> |
Версия 04:52, 16 декабря 2010
печальная статья. Определение: Оптимальный префиксный код с сохранением порядка(англ. order-preserving code, alphabetic code) Пусть у нас есть алфавит . Каждому символу сопоставим его код . Кодирование называется оптимальным префиксным с сохранением порядка, если:
- Условие порядка - лексикографически меньше, и наоборот. . То есть, если символ c_i лексикографически меньше символа c_j, его код также будет
- Условие оптимальности - - минимально, где f_i - количество(или вероятность) встретить символ c_i в тексте, а |p_i| - длина его кода.
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. Решим задачу используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева(???) для отрезка алфавита от i до j. Определение точки разреза: R[i][j] Пересчет: