4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) мНет описания правки |
||
Строка 6: | Строка 6: | ||
Далее будет рассматриваться задача поиска сходства между двумя сжатыми строками. Она связана с эффективным вычислением сходства без декомпрессии двух строк. В литературе рассматривалось решение этой задачи для случаев сжатия методом кодирования | Далее будет рассматриваться задача поиска сходства между двумя сжатыми строками. Она связана с эффективным вычислением сходства без декомпрессии двух строк. В литературе рассматривалось решение этой задачи для случаев сжатия методом кодирования длин серий (run-length encoding) и сжатия Лемпеля-Зива (LZ) [14]. | ||
{| class="wikitable" style="margin:auto" | {| class="wikitable" style="margin:auto" | ||
Строка 30: | Строка 30: | ||
'''Кодирование | '''Кодирование длин серий''' | ||
Строка S кодируется по длине серии, если она описывается упорядоченной последовательностью пар (a, i), часто обозначаемых как «a'», каждая из которых состоит из символа алфавита, a, и целого числа, i. Каждая пара соответствует длине серии в S, состоящей из i последовательных вхождений a. Например, строка aaabbbbbaccccbb может быть закодирована в виде a3b4a1c4b2 или, что эквивалентно, (a, 3) (b, 4) (a, 1) (c, 4) (b, 2). Пусть A и B – две строки длиной n и m, соответственно, A0 и B0 – закодированные | Строка S кодируется по длине серии, если она описывается упорядоченной последовательностью пар (a, i), часто обозначаемых как «a'», каждая из которых состоит из символа алфавита, a, и целого числа, i. Каждая пара соответствует длине серии в S, состоящей из i последовательных вхождений a. Например, строка aaabbbbbaccccbb может быть закодирована в виде a3b4a1c4b2 или, что эквивалентно, (a, 3) (b, 4) (a, 1) (c, 4) (b, 2). Пусть A и B – две строки длиной n и m, соответственно, A0 и B0 – закодированные при помощи длин серий строки A и B, а n0 и m0 – длины A0 и B0, соответственно. | ||
'''Задача 1''' | '''Задача 1''' | ||
Дано: две строки A0 aи B0, закодированные | Дано: две строки A0 aи B0, закодированные при помощи длин серий; метрика оценки d. | ||
Требуется: найти сходство между A0 и B0 с использованием метрики d. | Требуется: найти сходство между A0 и B0 с использованием метрики d. | ||
Строка 55: | Строка 55: | ||
'''Блочное вычисление''' | '''Блочное вычисление''' | ||
Для эффективного вычисления сходства между сжатыми строками можно использовать метод блочного вычисления. Таблицы динамического программирования делятся на подматрицы, называемые «блоками». Для строк с кодированием | Для эффективного вычисления сходства между сжатыми строками можно использовать метод блочного вычисления. Таблицы динамического программирования делятся на подматрицы, называемые «блоками». Для строк с кодированием длин серий блок представляет собой подматрицу, состоящую из двух элементов – серий по A и серий по B. Для строк с LZ-сжатием блоком является подматрица, состоящая из двух фраз – по одной фразе из каждой строки. Подробнее об этом см. в [5]. Затем блоки вычисляются слева направо и сверху вниз. Для каждого блока вычисляются только нижняя строка и крайний правый столбец. Пример вычисления блоков приведен на рис. 1. | ||
== Основные результаты == | == Основные результаты == | ||
Задача вычисления сходства двух строк A0 и B0, закодированных | Задача вычисления сходства двух строк A0 и B0, закодированных при помощи длин серий, была изучена для различных метрик оценки. Бунке и Сирик [ ] первыми предложили решение задачи 1, используя метрику самой длинной общей подпоследовательности. Их алгоритм основан на блочном вычислении таблицы динамического программирования. | ||
Теорема 1 (Бунке и Цирик, 1995 [ ]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных | Теорема 1 (Бунке и Цирик, 1995 [ ]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных при помощи длин серий, может быть вычислена за время O(nm0 + n0m). | ||
Строка 67: | Строка 67: | ||
Теорема 2 (Арбелл, Ландау и Митчелл [2]; Макинен, Наварро и Укконен [10]). Расстояние Левенштейна между строками A0 и B0, закодированными | Теорема 2 (Арбелл, Ландау и Митчелл [2]; Макинен, Наварро и Укконен [10]). Расстояние Левенштейна между строками A0 и B0, закодированными при помощи длин серий, может быть вычислена за время O(nm0 + n0m). | ||
Строка 73: | Строка 73: | ||
Теорема 3 (Крочмор, Ландау и Зив-Укельсон 2003 [6]; Макинен, Наварро и Укконен [11]). Взвешенное расстояние редактирования между строками A0 и B0, закодированными | Теорема 3 (Крочмор, Ландау и Зив-Укельсон 2003 [6]; Макинен, Наварро и Укконен [11]). Взвешенное расстояние редактирования между строками A0 и B0, закодированными при помощи длин серий, может быть вычислена за время O(nm0 + n0m). | ||
Строка 80: | Строка 80: | ||
Теорема 4 (Ким, Амир, Ландау и Парк, 2005 [8]). | Теорема 4 (Ким, Амир, Ландау и Парк, 2005 [8]). | ||
Сходство между закодированными | Сходство между закодированными при помощи длин серий строками A0 и B0 согласно метрике аффинного штрафа за гэп может быть вычислено за время O(nm0 + n0m). | ||
Приведенные выше результаты показывают, что сравнение закодированных | Приведенные выше результаты показывают, что сравнение закодированных при помощи длин серий строк с использованием метрики самой длинной общей подпоследовательности успешно распространяется на метрики оценки более общего плана. | ||
Строка 89: | Строка 89: | ||
Теорема 5 (Апостолико, Ландау и Скиена, 1999 [ ]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных | Теорема 5 (Апостолико, Ландау и Скиена, 1999 [ ]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных при помощи длин серий, может быть вычислена за время O(n0 m0 log(n0 + m0)). | ||
Строка 95: | Строка 95: | ||
Теорема 6 (Митчелл, 1997 [12]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных | Теорема 6 (Митчелл, 1997 [12]). Самая длинная общая подпоследовательность строк A0 и B0, закодированных при помощи длин серий, может быть вычислена за время O((d + n0 + m0) log(d + n0 + m0)), где d– число совпадений сжатых символов. | ||
Строка 101: | Строка 101: | ||
Гипотеза 1 (Макинен, Наварро и Укконен, 2003 [11]). Самая длинная подпоследовательность строк A0 и B0, закодированных | Гипотеза 1 (Макинен, Наварро и Укконен, 2003 [11]). Самая длинная подпоследовательность строк A0 и B0, закодированных при помощи длин серий, в среднем может быть вычислена за время O(n0m0). | ||
Строка 110: | Строка 110: | ||
== Применение == | == Применение == | ||
Кодирование | Кодирование длин серий является популярным методом сжатия изображений, поскольку многие классы изображений (например, двоичные изображения при факсимильной передаче или при использовании в оптическом распознавании символов) обычно содержат большие участки пикселей с одинаковыми значениями. Нахождение приближенного соответствия в изображениях может быть полезным инструментом для работы с искажениями. Даже одномерный алгоритм приближенного сравнения для сжатого текста был бы полезен для ускорения двумерного приближенного сравнения, допускающего несовпадения и даже повороты [3, 7, 9]. | ||
== Открытые вопросы == | == Открытые вопросы == | ||
Сложность задачи в наихудшем случае не вполне понятна. Для метрики самой длинной общей подпоследовательности найдены некоторые результаты с временной сложностью выше O(nm0 + n0m) при вычислении сходства двух строк, закодированных | Сложность задачи в наихудшем случае не вполне понятна. Для метрики самой длинной общей подпоследовательности найдены некоторые результаты с временной сложностью выше O(nm0 + n0m) при вычислении сходства двух строк, закодированных при помощи длин серий [1, 11, 12]. Остается открытым вопрос о распространении этих результатов на метрику расстояния Левенштейна, метрику взвешенного расстояния редактирования и метрику аффинного штрафа за гэп. | ||
правка