n-мерное сопоставление с образцом


20

Каковы некоторые известные результаты для нахождения точного n-мерного подмассива внутри n-мерного массива?

В 1D это просто проблема соответствия строк, KMP делает это за линейное время.

В 2D эта статья показала, что это можно сделать за линейное время с небольшим дополнительным пространством.

Можно ли решить эту проблему в наихудшем случае с линейным временем для любого фиксированного размера?

Ответы:


13

Вы можете решить проблему в фиксированном количестве измерений, расширив оригинальное решение Bird с линейным временем с 1977 г. http://www.sciencedirect.com/science/article/pii/0020019077900175 (подписка нужна, к сожалению).

Общая идея (в 2D) состоит в том, чтобы на шаге 1 построить автомат Aho-Corasick из строк 2D-шаблона, а затем подавать в строки 2D-текста одну за другой. Затем вы найдете все позиции, которым соответствуют строки шаблона в тексте. Для завершения вам теперь нужно только выполнить одномерный поиск (меток) строк шаблона в правильном порядке в столбце в выходных данных шага 1, используя команду KMP. Все это занимает линейное время.

Используя тот же метод, вы можете превратить любую задачу точного соответствия измерения d в задачу измерения d-1. Таким образом, вы получите линейное временное решение для любого фиксированного размера d.


9

Это можно решить за почти (до множителя) линейное время, используя методы БПФ. Вы можете посмотреть на бумаге: http://www.cs.tau.ac.il/~klim/papers/CEPR08.pdf, где мы используем методы БПФ для сопоставления одномерного образца. Если вы хотите решить сопоставление многомерного шаблона, вам просто нужно использовать многомерное БПФ.


Учитывая, что статья написана в 2008 году, я предполагаю, что линейные алгоритмы времени еще не известны.
Чао Сюй

Я привел это только в качестве примера техники, которую можно использовать для решения вашей проблемы. Преимущество этого подхода в том, что он позволяет вам также решить проблему с несоответствиями и не заботится. Но что касается точного одномерного сопоставления с образцом, то существует линейное время alg. так может быть, это известно многомерным.
Клим

1
Я думаю, что основной результат сопоставления с шаблоном с подстановочными знаками взят из работ Фишера и Патерсона 1974 года, а затем непрерывно настраивался и упрощался до cs.bris.ac.uk/Publications/pub_master.jsp?id=2000602 (извинения за самосовершенствование). Однако, это может быть небольшим излишним для проблемы, которую задал OP, учитывая более старый метод точного соответствия, который я упомянул ниже.
Рафаэль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.