Приближенное сравнение регулярных выражений: различия между версиями

Перейти к навигации Перейти к поиску
 
(не показаны 4 промежуточные версии 1 участника)
Строка 36: Строка 36:




Теперь возьмем все поддеревья R, максимальный размер которых не превышает r, и предварительно обработаем их при помощи вышеприведенной техники. Преобразуем каждое такое поддерево в лист в R, помеченный специальным символом <math>a_A</math>, ассоциированным с соответствующим небольшим НКА A. Если в R нет последовательных замыканий Клини, которые можно упростить как R** = R*, то размер R после этого преобразования составит O(m/r). Обозначим преобразованное регулярное выражение за R'. В сущности, к R' применяется техника теоремы 1, которая говорит о том, как обращаться с особыми листьями, соответствующими небольшим НКА. Эти листья при помощи построения Томпсона преобразуются в две вершины, соединенных с ребром с меткой <math>a_A</math>. Когда процесс распространения стоимости пути достигает вершины-источника ребра с меткой <math>a_A</math> со стоимостью c, необходимо обновить счетчик начального состояния НКА A до c (или k + 1, если c > k). Затем с помощью таблицы «метода четырех русских» можно выполнить все операции распространения стоимости в пределах A за константное время и, наконец, получить в счетчике конечного состояния A новое значение для целевой вершины ребра, помеченного <math>a_A</math>, в НКА верхнего уровня. Таким образом, все ребра (обычные и особые) НКА верхнего уровня могут быть пройдены за константное время, поэтому с помощью теоремы 1 стоимости в <math>G_i</math> можно получить за время O(mn/r). После этого стоимости переносятся в <math>G_{i + 1}</math>, используя таблицы «четырех русских» для получения текущих значений счетчиков каждого подграфа <math>G_{i + 1}</math>.
Теперь возьмем все поддеревья R, максимальный размер которых не превышает r, и предварительно обработаем их при помощи вышеприведенной техники. Преобразуем каждое такое поддерево в лист в R, помеченный специальным символом <math>a_A</math>, ассоциированным с соответствующим небольшим НКА A. Если в R нет последовательных замыканий Клини, которые можно упростить как R** = R*, то размер R после этого преобразования составит O(m/r). Обозначим преобразованное регулярное выражение за R'. В сущности, к R' применяется техника теоремы 1, которая говорит о том, как обращаться с особыми листьями, соответствующими небольшим НКА. Эти листья при помощи построения Томпсона преобразуются в две вершины, соединенных ребром с меткой <math>a_A</math>. Когда процесс распространения стоимости пути достигает вершины-источника ребра с меткой <math>a_A</math> со стоимостью c, необходимо обновить счетчик начального состояния НКА A до c (или k + 1, если c > k). Затем с помощью таблицы «метода четырех русских» можно выполнить все операции распространения стоимости в пределах A за константное время и, наконец, получить в счетчике конечного состояния A новое значение для целевой вершины ребра, помеченного <math>a_A</math>, в НКА верхнего уровня. Таким образом, все ребра (обычные и особые) НКА верхнего уровня могут быть пройдены за константное время, поэтому с помощью теоремы 1 значения стоимости в <math>G_i</math> можно получить за время O(mn/r). После этого стоимости переносятся в <math>G_{i + 1}</math>, используя таблицы «четырех русских» для получения текущих значений счетчиков каждого подграфа A в графе <math>G_{i + 1}</math>.




Строка 42: Строка 42:


== Применение ==
== Применение ==
Эта задача применяется в вычислительной биологии для нахождения определенных типов мотивов в ДНК и последовательностях белка. Подробнее об этом см. обсуждение в работе [1]. В частности, ограниченными регулярными выражениями являются шаблоны PROSITE, достаточно широко применяющиеся при поиске последовательностей белка. На практике шаблоны PROSITE можно искать при помощи более быстрых алгоритмов [7]. То же происходит и с другими классами сложных шаблонов [6] и сетевыми выражениями [2].
Эта задача применяется в вычислительной биологии для нахождения определенных типов мотивов в ДНК и последовательностях белка. Подробнее об этом см. обсуждение в работе [1]. В частности, ограниченными регулярными выражениями являются шаблоны PROSITE, достаточно широко применяющиеся при поиске в последовательностях белка. На практике шаблоны PROSITE можно искать при помощи более быстрых алгоритмов [7]. То же происходит и с другими классами сложных шаблонов [6] и сетевых выражений [2].


== Открытые вопросы ==
== Открытые вопросы ==
Строка 54: Строка 54:


== См. также ==
== См. также ==
* [[Сравнение регулярных выражений]] – более простой случай, в котором ищется точное совпадение со строками в L(R).
* [[Сравнение регулярных выражений]] – более простой случай, в котором ищется точное совпадение со строками в <math>\mathcal{L}(R)</math>.
* [[Последовательное приближенное сравнение строк]] – упрощение данной задачи; в этом случае связь между графом G и матрицей C должна быть очевидной.
* [[Последовательное приближенное сравнение строк]] – упрощение данной задачи; в этом случае связь между графом <math>\mathcal{G}</math> и матрицей C должна быть очевидной.


== Литература ==
== Литература ==
Строка 77: Строка 77:


10. Wu, S., Manber, U., Myers, E.W.: A subquadratic algorithm for approximate regular expression matching. J. Algorithms 19(3), 346-360(1995)
10. Wu, S., Manber, U., Myers, E.W.: A subquadratic algorithm for approximate regular expression matching. J. Algorithms 19(3), 346-360(1995)
[[Категория: Совместное определение связанных терминов]]

Навигация