Автор24

Информация о работе

Подробнее о работе

Страница работы

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

  • 20 страниц
  • 2016 год
  • 229 просмотров
  • 0 покупок
Автор работы

EkaterinaKonstantinovna

Большой опыт в написании работ, очень давно работаю на этом ресурсе, выполнила более 15000 заказов

660 ₽

Работа будет доступна в твоём личном кабинете после покупки

Гарантия сервиса Автор24

Уникальность не ниже 50%

Фрагменты работ

Введение

Алгоритм Кнута–Морриса–Пратта (КМП) - это линейное время решения одного шаблона строки поиска проблемы. Он основан на наблюдении, когда частичное совпадение дает полезную информацию о том, действительно ли игла можетнайтись в стогу сена. Это объясняется тем, что частичное совпадение указывает на то, что какая-то часть сена такая же, как и некоторые части иглы, так что если мы знаем часть на иголки в то, мы сможем сделать некоторые выводы о содержании сена (из-за частичного совпадения) без лишних процедур и потери времени. В частности, это означает, что в определенном смысле, мы хотим предварительно рассчитать, как иголки соответствуют сами себе. Алгоритм, таким образом, "никогда не оглядывается назад" и делает одно сканирование стога сена. Вместе с линейным временем предобработки иглы, это дает линейный алгоритм в целом.
Строки алгоритма сопоставляясь хотят найти начальное значение индекса 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).












Оглавление
Введение 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



Вывод

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


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

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

Форма заказа новой работы

Не подошла эта работа?

Закажи новую работу, сделанную по твоим требованиям

Оставляя свои контактные данные и нажимая «Заказать Курсовую работу», я соглашаюсь пройти процедуру регистрации на Платформе, принимаю условия Пользовательского соглашения и Политики конфиденциальности в целях заключения соглашения.

Фрагменты работ

Введение

Алгоритм Кнута–Морриса–Пратта (КМП) - это линейное время решения одного шаблона строки поиска проблемы. Он основан на наблюдении, когда частичное совпадение дает полезную информацию о том, действительно ли игла можетнайтись в стогу сена. Это объясняется тем, что частичное совпадение указывает на то, что какая-то часть сена такая же, как и некоторые части иглы, так что если мы знаем часть на иголки в то, мы сможем сделать некоторые выводы о содержании сена (из-за частичного совпадения) без лишних процедур и потери времени. В частности, это означает, что в определенном смысле, мы хотим предварительно рассчитать, как иголки соответствуют сами себе. Алгоритм, таким образом, "никогда не оглядывается назад" и делает одно сканирование стога сена. Вместе с линейным временем предобработки иглы, это дает линейный алгоритм в целом.
Строки алгоритма сопоставляясь хотят найти начальное значение индекса 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).












Оглавление
Введение 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



Вывод

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


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

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

Купить эту работу

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

660 ₽

или заказать новую

Лучшие эксперты сервиса ждут твоего задания

от 500 ₽

Гарантии Автор24

Изображения работ

Страница работы
Страница работы
Страница работы

Понравилась эта работа?

или

24 августа 2017 заказчик разместил работу

Выбранный эксперт:

Автор работы
EkaterinaKonstantinovna
4.5
Большой опыт в написании работ, очень давно работаю на этом ресурсе, выполнила более 15000 заказов
Купить эту работу vs Заказать новую
0 раз Куплено Выполняется индивидуально
Не менее 40%
Исполнитель, загружая работу в «Банк готовых работ» подтверждает, что уровень оригинальности работы составляет не менее 40%
Уникальность Выполняется индивидуально
Сразу в личном кабинете Доступность Срок 1—6 дней
660 ₽ Цена от 500 ₽

5 Похожих работ

Отзывы студентов

Отзыв Марина [email protected] об авторе EkaterinaKonstantinovna 2018-11-28
Курсовая работа

спасибо за помощь!

Общая оценка 5
Отзыв Марина Бутова об авторе EkaterinaKonstantinovna 2016-11-18
Курсовая работа

Хороший автор. Ответственный, понимающий.

Общая оценка 5
Отзыв Филипп Минаев об авторе EkaterinaKonstantinovna 2015-05-22
Курсовая работа

Спасибо за работу!

Общая оценка 5
Отзыв User8176 об авторе EkaterinaKonstantinovna 2015-05-11
Курсовая работа

Спасибо большое за работу. Мне понравилось сотрудничать с автором. Работа была выполнена РАНЬШЕ СРОКА, а для меня это было главное. Никаких замечаний по работе практически не было, только мелкие недочеты.

Общая оценка 5

другие учебные работы по предмету

Готовая работа

Проектирование информационной системы для контроля обеспечения работ компании «Interfere»

Уникальность: от 40%
Доступность: сразу
1200 ₽
Готовая работа

Разработка и испытание ПО по моделям

Уникальность: от 40%
Доступность: сразу
1490 ₽
Готовая работа

персональная программа начальника отдела производства (на примере ООО"Вселуг")

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

Особые точки функций комплексного переменного и их изучение с помощью Maple

Уникальность: от 40%
Доступность: сразу
2240 ₽
Готовая работа

Контроль логических интегральных микросхем (+ доклад)

Уникальность: от 40%
Доступность: сразу
1000 ₽
Готовая работа

Внедрение системы управления освещением умного дома.

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

Автоматизированная система складского учета

Уникальность: от 40%
Доступность: сразу
3000 ₽
Готовая работа

оптимизация торгово-закупочной деятельности

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

безопасность беспроводных сетей

Уникальность: от 40%
Доступность: сразу
3300 ₽
Готовая работа

Распознование плоских многопредметных изображений

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

Методика обучения будущих учителей информатики проектированию локальных компьютерных сетей

Уникальность: от 40%
Доступность: сразу
2800 ₽
Готовая работа

Разработка системы мониторинга компьютерной сети

Уникальность: от 40%
Доступность: сразу
2500 ₽