Вход

Алгоритмы поиска словесной информации. Алгоритмы Кнута Мориса-Пратта

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 591926
Дата создания 2016
Страниц 20
Мы сможем обработать ваш заказ (!) 20 сентября в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 600руб.
КУПИТЬ

Содержание

Оглавление
Введение 3
1. Алгоритмы Кнута Морриса-Пратта 6
2. Описание псевдокод для алгоритма поиска 9
2.1. Эффективность алгоритма поиска 10
2.2. "Частичное совпадение" таблицы 12
2.3. Пример таблицы-алгоритм построения 12
2.4. Описание псевдокода для алгоритма табличной строительства 14
2.5. Эффективность алгоритма табличной строительства 15
2.6. Эффективность алгоритма табличной строительства 16
3. Концепция 17
Вывод 19
Список используемой литературы 20


Введение

Введение

Алгоритм Кнута–Морриса–Пратта (КМП) - это линейное время решения одного шаблона строки поиска проблемы. Он основан на наблюдении, когда частичное совпадение дает полезную информацию о том, действительно ли игла можетнайтись в стогу сена. Это объясняется тем, что частичное совпадение указывает на то, что какая-то часть сена такая же, как и некоторые части иглы, так что если мы знаем часть на иголки в то, мы сможем сделать некоторые выводы о содержании сена (из-за частичного совпадения) без лишних процедур и потери времени. В частности, это означает, что в определенном смысле, мы хотим предварительно рассчитать, как иголки соответствуют сами себе. Алгоритм, таким образом, "никогда не оглядывается назад" и делает одно сканирование стога сена. Вместе с линейным временем предобработки иглы, это дает линейный алгоритм в целом.
Строки алгоритма сопоставляясь хотят найти начальное значение индекса m в строке S[] , которая соответствует искомому слову W[].
Наиболее простой алгоритм для поиска символов в последовательных значениях индекса m, является позиция в строке поиска, например S[m]. Если индекс m достигает конца строки, то есть нет соответствия, то в этом случае поиск называется "банкротство". На каждой позиции m алгоритм сначала проверяет равенство первого символа в искомом слове, т. е. S[m] ? W[0]. Если совпадение найдено, то алгоритм проверяет другие символы в искомом слове путем проверки последовательных значений слов позиций индекса i.
Алгоритм возвращает символ W[i], в слове проводятся обыски и проверки на равенство выражению S[mi] ? W[i]. Если все последовательные символы W на позиции m, то совпадение найдено в положении строки поиска.
Если строки равномерно распределили случайные буквы, то шанс, равен 1 к 26. В большинстве случаев, проверки отклоняют исход на начальную букву. Вероятность того, что первые две буквы будут совпадать составляет 1: 262 (1 в 676). Так что если персонажи являются случайными, то предполагаемая сложность поиска строки S[] длины K будет равна или выведена. Ожидаемая производительность очень хорошая. Если S[] это 1 миллиард символов и W[] составляет 1000 символов, то строка поиска должна окончить примерно один миллиард сравнений.
Ожидается, что производительность не гарантируется. Если строки не случайны, тогда m может занять много сравнений. В худшем случае, если две строки совпадают во всем, кроме последней буквы. Представьте, что строка S[] состоит из 1 миллиарда символов, и что слово W[] - это 999 , а символы в конце B. Простую строку алгоритма сопоставления теперь будут изучать по 1000 символов в каждой позиции. Простой пример строки поиска теперь потребуется около 1000 символов и временном сравнении 1 миллиарда позиций в течение 1 трлн сравнений.
Алгоритм КМП имеет лучшую в худшем случае производительность по сравнению с простым алгоритмом. КМП тратит немного времени, и тогда он использует эту таблицу для эффективного поиска строки вО(К).
Разница в том, что КМП использует предыдущую информацию матча, нежели простой алгоритм. В приведенном выше примере, когда КМП не видит пробный матч не на 1000-й символ (i 999), потому что S[m999] W[999], он будет увеличивать m на 1, но он будет знать, что первые 998 символов в новой позиции уже совпадают. КМП подобрал 999 символов, прежде чем обнаружил несоответствие на 1000-й символ (позиция 999). Продвижение позиции совпадет с m по одному параметруи выбрасывает на первую а, так КМП знает, что осталось 998 и символы, которые соответствуют W[] и не перепроверенные, то есть алгоритм КМП осуществит набор от i до 998. КМП очень функционален благодаря вычисленной таблицы и двумя переменными состояния. Когда КМП обнаруживает несоответствие, таблица определяет, на сколько КМП возрастет (переменная m) и где она будет возобновлять испытание (переменное i).












Фрагмент работы для ознакомления


Вывод

Так что у вас есть. Как я и обещал раньше, это не исчерпывающее объяснение или формальное доказательство КМП; это пройти через мой мозг, с деталями я нашел запутанно прописаны в мельчайших подробностях. Если у вас возникли вопросы или вы заметили что-то я напутал, пожалуйста, оставьте комментарий; может быть, мы все чему-то научиться

Список литературы


Список используемой литературы

1. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 1999. – 960 с.
2. Гасфилд Д. Строки, деревья и последовательности в алгоритмах: Информатика и вычислительная биология. - СПб.: БХВ-Петербург, 2003. – 654 с.
3. Crochemore M., Rytter W. Jewels of Stringology: Text Algorithms. World Scientific Publishing, 2002. – 320 pp.
4. Jurafsky D., Martin J. Speech and Language Processing.PrenticeHall. 1999. – 950 pp

Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00357
© Рефератбанк, 2002 - 2024