Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза — различия между версиями
м |
м |
||
Строка 1: | Строка 1: | ||
− | + | __TOC__ | |
− | Определение | + | == Определение == |
− | Пусть у нас есть алфавит <tex> \Sigma </tex>. Каждому символу <tex>c_i </tex> сопоставим его код <tex> p_i </tex>. Кодирование называется оптимальным префиксным с сохранением порядка, если: | + | {{Определение |
− | # Условие порядка - <tex> \forall i, j : c_i < c_j \iff p_i < p_j </tex>. То есть, если символ c_i лексикографически меньше символа c_j, его код также будет [[лексикографический порядок | лексикографически]] меньше, и наоборот. | + | | definition = |
− | # Условие оптимальности - <tex> \sum\limits_{i = 1}^{|\Sigma|} f_i \cdot |p_i| </tex> - минимально, где f_i - количество(или вероятность) встретить символ c_i в тексте, а |p_i| - длина его кода. | + | [[Оптимальный префиксный код]] с сохранением порядка(англ. ''order-preserving code'', ''alphabetic code''). |
+ | |||
+ | Пусть у нас есть алфавит <tex> \Sigma </tex>. Каждому символу <tex>c_i </tex> сопоставим его код <tex> p_i </tex>. Кодирование называется оптимальным префиксным с сохранением порядка, если соблюдаются: | ||
+ | # Условие порядка - <tex> \forall i, j : c_i < c_j \iff p_i < p_j </tex>. То есть, если символ <tex>c_i </tex> лексикографически меньше символа <tex> c_j </tex>, его код также будет [[лексикографический порядок | лексикографически]] меньше, и наоборот. | ||
+ | # Условие оптимальности - <tex> \sum\limits_{i = 1}^{|\Sigma|} f_i \cdot |p_i| </tex> - минимально, где <tex> f_i </tex> - количество(или вероятность) встретить символ <tex> c_i </tex> в тексте, а <tex>|p_i| </tex> - длина его кода. | ||
+ | }} | ||
+ | == Алгоритм == | ||
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. | Алгоритм нахождения оптимального префиксного кода с сохранением порядка. | ||
− | Решим задачу используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева | + | Решим задачу, используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j. |
− | + | ||
− | + | Тогда пересчет D[i][j] будет происходить так: | |
− | + | ||
− | <tex> D[i][j] = \min\limits_{k = i}^{j - 1} D[i][k] + D[k + 1][j] + | + | <tex> D[i][j] = \min\limits_{k = i}^{j - 1} \left ( D[i][k] + D[k + 1][j] \right ) + \sum\limits_{t = i}^{j} f_t </tex> |
+ | |||
+ | Добавочный член <tex> \sum\limits_{t = i}^{j} f_t </tex> возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов <tex> c_i - c_j </tex> также увеличиваются на 1. | ||
+ | |||
+ | Тогда такое k, на котором достигается этот минимум, называется точкой разреза для отрезка [i, j]. Пусть в ячейке R[i][j] хранится точка разреза на отрезке [i, j]. | ||
+ | |||
+ | == Монотонность точки разреза == | ||
+ | {{Теорема | ||
+ | | about= | ||
+ | Монотонность точки разреза | ||
+ | | statement= | ||
+ | <tex> R[i][j - 1] \leq R[i][j] \leq R[i + 1][j] </tex> | ||
+ | | proof= | ||
+ | ???? | ||
+ | }} |
Версия 16:19, 16 декабря 2010
Содержание
Определение
Определение: |
Оптимальный префиксный код с сохранением порядка(англ. order-preserving code, alphabetic code).
Пусть у нас есть алфавит . Каждому символу сопоставим его код . Кодирование называется оптимальным префиксным с сохранением порядка, если соблюдаются:
|
Алгоритм
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. Решим задачу, используя ДП на подотрезках. Пусть в ячейке D[i][j] хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j.
Тогда пересчет D[i][j] будет происходить так:
Добавочный член
возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов также увеличиваются на 1.Тогда такое k, на котором достигается этот минимум, называется точкой разреза для отрезка [i, j]. Пусть в ячейке R[i][j] хранится точка разреза на отрезке [i, j].
Монотонность точки разреза
Теорема (Монотонность точки разреза): |
Доказательство: |
???? |