Задача об оптимальном префиксном коде с сохранением порядка. Монотонность точки разреза — различия между версиями
м |
м |
||
| Строка 30: | Строка 30: | ||
| definition= | | definition= | ||
Функция a удовлетворяет '''неравенству четырехугольника(quadrangle inequation)''', если | Функция a удовлетворяет '''неравенству четырехугольника(quadrangle inequation)''', если | ||
| − | : <tex>\forall i \ | + | : <tex>\forall i \le i' \le j \le j' : a[i][j] + a[i'][j'] \le a[i'][j] + a[i][j']</tex> |
}} | }} | ||
| Строка 36: | Строка 36: | ||
| definition= | | definition= | ||
Функция a является '''монотонной(monotone)''', если | Функция a является '''монотонной(monotone)''', если | ||
| − | : <tex>\forall i \ | + | : <tex>\forall i \le i' < j \le j' : a[i][j'] \le a[i'][j] </tex> |
}} | }} | ||
| Строка 44: | Строка 44: | ||
| proof= | | proof= | ||
Заметим, что <tex> w[i][j] = w[i][t] + w[t+1][j] </tex>, так как <tex> w[i][j] </tex> - простая арифметическая сумма. Тогда: | Заметим, что <tex> w[i][j] = w[i][t] + w[t+1][j] </tex>, так как <tex> w[i][j] </tex> - простая арифметическая сумма. Тогда: | ||
| − | : <tex> w[i][j] + w[i'][j'] \ | + | : <tex> w[i][j] + w[i'][j'] \le w[i'][j] + w[i][j']</tex> |
| − | : <tex> (w[i][i' - 1] + w[i'][j]) + (w[i'][j] + w[j + 1][j']) \ | + | : <tex> (w[i][i' - 1] + w[i'][j]) + (w[i'][j] + w[j + 1][j']) \le (w[i'][j]) + (w[i][i' - 1] + w[i'][j] + w[j + 1][j']) </tex> |
Получили <tex> 0 \leq 0 </tex>, что является верным. Лемма доказана. | Получили <tex> 0 \leq 0 </tex>, что является верным. Лемма доказана. | ||
}} | }} | ||
| Строка 56: | Строка 56: | ||
Рассмотрим два случая: | Рассмотрим два случая: | ||
| − | # i' = j | + | # <tex> i' = j </tex> |
| − | : i < i' = j < j'. Тогда неравенство четырехугольника сводится к: | + | #: <tex> i < i' = j < j' </tex>. Тогда неравенство четырехугольника сводится к: |
| − | : D[i][j] + D[j][j'] \ | + | #: <tex> D[i][j] + D[j][j'] \le D[i][j'] </tex> |
| − | : Пусть k = R[i][j']. Получили два симметричных случая: | + | #: Пусть <tex> k = R[i][j'] </tex>. Получили два симметричных случая: |
| − | ## k \ | + | ## <tex> k \le j </tex> |
| − | : | + | ##: <tex> D[i][j] + D[j][j'] \le w[i][j] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - по определению <tex> D[i][j] </tex> |
| − | + | ##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j] + D[j][j'] </tex> - по монотонности w | |
| − | + | ##: <tex> \le w[i][j'] + D[i][k-1] + D[k][j'] </tex> - по предположению индукции | |
| − | + | ##: <tex> \le D[i][j'] </tex> - по определению <tex> D[i][j'] </tex> | |
| − | ## k \ | + | ## <tex> k \ge j </tex> - аналогичный предыдущему случай. |
| − | # i' < j | + | # <tex> i' < j </tex> |
| − | : i < i' < j < j' | + | #: <tex> i < i' < j < j' </tex> |
| − | Пусть y = R[i'][j] и z = R[i][j]. Получили два различных симметричных случая: | + | #: Пусть <tex> y = R[i'][j] </tex> и <tex> z = R[i][j] </tex>. Получили два различных симметричных случая: |
| − | z \ | + | ## <tex> z \le y </tex> |
| − | + | ##: Получили z \le y \le j (по определению y) и i < z(по определению z). Получим: | |
| − | Получили z \ | + | ##: <tex> D[i'][j'] + D[i][j] \le D_y[i'][j'] + D_z[i][j] = w[i'][j'] + D[i'][y-1] + D[y][j'] + w[i][j] + D[i][z-1] + D[z][j] </tex> |
| − | + | ##: <tex> \le w[i][j'] + w[i'][j] + D[i'][y-1] + D[i][z-1] + D[z][j] + D[y][j'] </tex> - по неравенству четырехугольника для <tex> w </tex> | |
| − | D[i'][j'] + D[i][j] \ | + | ##: <tex> \le w[i][j'] + w[i'][j] + D[i'][y-1] + D[i][z-1] + D[y][j] + D[z][j'] </tex> - по индукционному предположению |
| − | \ | + | ##: <tex> = (w[i][j'] + D[i][z-1] + D[z][j']) + (w[i'][j] + D[i'][y-1] + D[y][j]) </tex> //переставить нормально |
| − | \ | + | ##: <tex> \le D[i][j'] + D[i'][j] </tex> - по определению D. |
| − | = (w[i][j'] + D[i][z-1] + D[z][j']) + (w[i'][j] + D[i'][y-1] + D[y][j]) //переставить нормально | + | ## <tex> z \ge y </tex> доказывается аналогично |
| − | \ | ||
| − | |||
Индукционный шаг завершен, лемма доказана. | Индукционный шаг завершен, лемма доказана. | ||
}} | }} | ||
| Строка 86: | Строка 84: | ||
Монотонность точки разреза | Монотонность точки разреза | ||
| statement= | | statement= | ||
| − | <tex> R[i][j - 1] \ | + | <tex> R[i][j - 1] \le R[i][j] \le R[i + 1][j] </tex> |
| proof= | | proof= | ||
Для доказательства этого сперва докажем несколько лемм: | Для доказательства этого сперва докажем несколько лемм: | ||
}} | }} | ||
Версия 03:45, 18 декабря 2010
Содержание
Определение
| Определение: |
| Оптимальный префиксный код с сохранением порядка(англ. order-preserving code, alphabetic code).
Пусть у нас есть алфавит . Каждому символу сопоставим его код . Кодирование называется оптимальным префиксным с сохранением порядка, если соблюдаются:
|
Алгоритм
Алгоритм нахождения оптимального префиксного кода с сохранением порядка. Решим задачу, используя ДП на подотрезках. Пусть в ячейке хранится минимальная стоимость кодового дерева для отрезка алфавита от i до j.
Тогда пересчет будет происходить так:
Базой динамики будет
Добавочный член возникает от того что каждым объединением двух подотрезков мы увеличиваем высоту дерева на 1, а значит, и длины всех кодов символов также увеличиваются на 1.
Тогда такое наибольшее k, на котором достигается этот минимум, называется точкой разреза для отрезка . Пусть в ячейке хранится точка разреза на отрезке .
Монотонность точки разреза
Для доказательства этого сперва докажем несколько лемм.
| Определение: |
| Функция a удовлетворяет неравенству четырехугольника(quadrangle inequation), если
|
| Определение: |
| Функция a является монотонной(monotone), если
|
| Лемма: |
w удовлетворяет неравенству четырехугольника. |
| Доказательство: |
|
Заметим, что , так как - простая арифметическая сумма. Тогда: |
| Лемма: |
Если w удовлетворяет неравенству четырехугольника и монотонна, то D также удовлетворяет неравенству четырехугольника. |
| Доказательство: |
|
При или , очевидно, неравенство выполняется. Рассмотрим два случая:
|
| Теорема (Монотонность точки разреза): |
| Доказательство: |
| Для доказательства этого сперва докажем несколько лемм: |