Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование

Алгоритмы поиска в тексте

Чашка "Неваляшка".
Ваши дети во время приёма пищи вечно проливают что-то на ковёр и пол, пачкают руки, а Вы потом тратите уйму времени на выведение пятен с
222 руб
Раздел: Тарелки
Коврик для запекания, силиконовый "Пекарь".
Коврик "Пекарь", сделанный из силикона, поможет Вам готовить вкусную и красивую выпечку. Благодаря материалу коврика, выпечка не
202 руб
Раздел: Коврики силиконовые для выпечки
Забавная пачка денег "100 долларов".
Купюры в пачке выглядят совсем как настоящие, к тому же и банковской лентой перехвачены... Но вглядитесь внимательней, и Вы увидите
60 руб
Раздел: Прочее

Андрей Боровский Наверное, каждому, кто много работает за компьютером, знакома подобная ситуация: перелистывая страницы книги в поисках нужного фрагмента, невольно начинаешь думать о том, как вызвать команду «поиск по всему тексту». Действительно, современные программы обработки текста приучили нас к такой удобной возможности, как поиск и замена фрагментов, и если вы разрабатываете подобную программу, пользователь вправе ожидать, что вы предоставите в его распоряжение соответствующие команды. Эту проблему нельзя эффективно решить при помощи стандартных функций Delphi/Kylix, поскольку большинство средств разработки включает только малоэффективные средства. Во-первых, в стандартных функциях не всегда используются самые эффективные алгоритмы, а во-вторых, вполне возможно, что вам понадобится изменить стандартное поведение этих функций (например, предусмотреть возможность поиска по шаблону). В этой статье рассматриваются два варианта наиболее эффективного алгоритма поиска в тексте – алгоритма Бойера-Мура. Мы также рассмотрим некоторые полезные расширения этого алгоритма. Алгоритм грубой силы и простой вариант алгоритма Бойера-Мура. Прежде, чем приступить к рассмотрению алгоритма Бойера-Мура, приведем простейший (и самый медленный) алгоритм поиска, называемый «методом грубой силы». fu c io Fi d(co s S, P : S ri g) : I eger; var   i, j : I eger; begi   Resul := 0;   if Le g h(P) > Le g h(S) he Exi ;   for i := 1 o Le g h(S) - Le g h(P) 1 do     for j := 1 o Le g h(P) do       if P he Break       else if j = Le g h(P) he       begi         Resul := i;         Exi ;       e d; e d; Функция Fi d ищет подстроку P в строке S и возвращает индекс первого символа подстроки или 0, если подстрока не найдена. Хотя в общем случае этот метод, как и большинство методов грубой силы, малоэффективен, в некоторых ситуациях он вполне приемлем. Мы сами воспользуемся похожим алгоритмом при построении таблицы смещений для метода Бойера-Мура. Алгоритм Бойера-Мура, разработанный двумя учеными – Бойером (Rober S. Boyer) и Муром (J. S ro her Moore), считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке. Прежде чем рассмотреть работу этого алгоритма, уточним некоторые термины. Под строкой мы будем понимать всю последовательность символов текста. Собственно говоря, речь не обязательно должна идти именно о тексте. В общем случае строка – это любая последовательность байтов. Поиск подстроки в строке осуществляется по заданному образцу, т. е. некоторой последовательности байтов, длина которой не превышает длину строки. Наша задача заключается в том, чтобы определить, содержит ли строка заданный образец. Простейший вариант алгоритма Бойера-Мура состоит из следующих шагов. На первом шаге мы строим таблицу смещений для искомого образца. Процесс построения таблицы будет описан ниже. Далее мы совмещаем начало строки и образца и начинаем проверку с последнего символа образца. Если последний символ образца и соответствующий ему при наложении символ строки не совпадают, образец сдвигается относительно строки на величину, полученную из таблицы смещений, и снова проводится сравнение, начиная с последнего символа образца.

Если же символы совпадают, производится сравнение предпоследнего символа образца и т. д. Если все символы образца совпали с наложенными символами строки, значит мы нашли подстроку и поиск окончен. Если же какой-то (не последний) символ образца не совпадает с соответствующим символом строки, мы сдвигаем образец на один символ вправо и снова начинаем проверку с последнего символа. Весь алгоритм выполняется до тех пор, пока либо не будет найдено вхождение искомого образца, либо не будет достигнут конец строки. Величина сдвига в случае несовпадения последнего символа вычисляется исходя из следующих соображений: сдвиг образца должен быть минимальным, таким, чтобы не пропустить вхождение образца в строке. Если данный символ строки встречается в образце, мы смещаем образец таким образом, чтобы символ строки совпал с самым правым вхождением этого символа в образце. Если же образец вообще не содержит этого символа, мы сдвигаем образец на величину, равную его длине, так что первый символ образца накладывается на следующий за проверявшимся символ строки. Величина смещения для каждого символа образца зависит только от порядка символов в образце, поэтому смещения удобно вычислить заранее и хранить в виде одномерного массива, где каждому символу алфавита соответствует смещение относительно последнего символа образца. Поясним все вышесказанное на простом примере. Пусть у нас есть набор символов из пяти символов: a, b, c, d, e и мы хотим найти вхождение образца “abbad” в строке “abeccacbadbabbad”. Следующие схемы иллюстрируют все этапы выполнения алгоритма:   Таблица смещений для образца “abbad”.   Начало поиска. Последний символ образца не совпадает с наложенным символом строки. Сдвигаем образец вправо на 5 позиций:   Три символа образца совпали, а четвертый – нет. Сдвигаем образец вправо на одну позицию:   Последний символ снова не совпадает с символом строки. В соответствии с таблицей смещений сдвигаем образец на 2 позиции:   Еще раз сдвигаем образец на 2 позиции:   Теперь, в соответствии с таблицей, сдвигаем образец на одну позицию, и получаем искомое вхождение образца:   Реализуем указанный алгоритм на языке Objec Pascal. Прежде всего следует определить тип данных «таблица смещений». Для кодовой таблицы, состоящей из 256 символов, определение этого типа будет выглядеть так: ype   BM able = array of I eger; Далее приводится процедура, вычисляющая таблицу смещений для образца P. procedure MakeBM able( var BM : BM able; co s P : S ri g); var   i : I eger; begi   for i := 0 o 255 do BM := Le g h(P);      for i := Le g h(P) dow o 1 do       if BM )] := Le g h(P) – i; e d; Теперь напишем функцию, осуществляющую поиск. fu c io BMSearch( S ar Pos : I eger; co s S, P : S ri g;   co s BM : BM able) : I eger;  var   Pos, lp, i : I eger; begi   lp := Le g h(P);   Pos := S ar Pos lp –1;   while Pos &l ; Le g h(S) do     if P     else for i := lp - 1 dow o 1 do       if P he       begi         I c(Pos);         Break;       e d        else if i = 1 he       begi         Resul := Pos – lp 1;         Exi ;       e d;      Resul := 0; e d; Функция BMSearch возвращает позицию первого символа первого вхождения образца P в строке S.

Если последовательность P в S не найдена, функция возвращает 0 (напомню, что в Objec Pascal нумерация символов в строке S ri g начинается с 1). Параметр S ar Pos позволяет указать позицию в строке S, с которой следует начинать поиск. Это может быть полезно в том случае, если вы захотите найти все вхождения P в S. Для поиска с самого начала строки следует задать S ar Pos равным 1. Если результат поиска не равен нулю, то для того, чтобы найти следующее вхождение P в S, нужно задать S ar Pos равным значению «предыдущий результат плюс длина образца». Более эффективный вариант Хотя рассмотренный упрощенный алгоритм вполне пригоден с практической точки зрения (и часто применяется), нельзя не заметить, что результаты сравнений используются недостаточно эффективно. Действительно, на втором шаге, когда у нас совпали три символа, мы, зная, что последовательность “bad” встречается в образце только один раз, могли бы сразу сместить образец на всю его длину, а не на один символ. Теперь мы рассмотрим другой, немного более сложный вариант алгоритма Бойера-Мура, позволяющий учесть результаты предыдущих сравнений в случае частичного совпадения образца и подстроки. Прежде всего изменим принцип построения таблицы смещений. В этом варианте алгоритма таблица – двумерная, каждому символу образца соответствует один столбец таблицы, а каждой букве алфавита – одна строка. В ячейках таблицы содержатся значения смещений, на которые нужно сдвинуть образец, если при проверке данного символа образца обнаружено несовпадение и вместо искомого символа получен символ алфавита, соответствующий некоторой строке в таблице. Например, таблица последовательности “abdab” для нашего пятибуквенного алфавита будет выглядеть следующим образом:   Заполнение таблицы начинается с последнего столбца. Самый правый столбец таблицы фактически соответствует массиву, который используется в упрощенном варианте алгоритма. Следующие столбцы содержат значения сдвига для образца при условии, что предыдущие (при движении справа налево) символы совпали. Проводя поиск при помощи этой таблицы, мы последовательно просматриваем значения ячеек, лежащих на пересечении столбца, соответствующего символу образца и строки, соответствующей символу текста. Просмотр начинается с последнего столбца. Если в каждом столбце выбранная ячейка содержит 0, значит, подстрока найдена. Если значение ячейки отличается от нуля, мы сдвигаем образец на соответствующее значение. Определенные сложности могут возникнуть при работе с кодировкой U icode. Очевидно, что таблица, число строк которой равно числу символов двухбайтовой кодировки, будет слишком громоздкой. К счастью, в такой таблице нет необходимости, ведь в случае двухбайтовой кодировки любой образец содержит лишь небольшую часть символов алфавита. Для всех символов, не содержащихся в образце, значения смещения в каждом столбце таблицы будут одинаковыми. Эта особенность позволяет разработать сокращенные варианты таблицы для U icode. Конечно, U icode-строку можно рассматривать как последовательность байтов, где каждый U icode-символ представлен двумя байтами.

Итак, приступим к делу. В информационно-поисковой работе средствами ИНТЕРНЕТ можно использовать материалы каталогов, собирающих и классифицирующих российские сайты. При работе с классификаторами следует учитывать, что сайты классифицируются разными каталогами по-разному, это и понятно, так как ИНТЕРНЕТ-пространство в принципе не может быть упорядочено линейно, оно имеет более сложную геометрию. Следуют отметить, результативность поиска в данном случае зависит от двух составляющих: Во-первых, от степени соответствия ключевого слова или фразы поставленной информационной задаче, т.Pе. релевантности информационного запроса. Во-вторых, у каждой поисковой системы свой алгоритм поиска и перечень сайтов входящих в базу данный поиска, поэтому при одном и том же запросе результаты поиска в различных поисковых системах могут значительно отличаться. Поэтому для чистоты эксперимента лучше всего последовательно «прочесать» информационное пространство ИНТЕРНЕТА при помощи нескольких поисковиков. При поиске информации о конкретных хозяйствующих субъектах или о целых экономических регионах особое внимание стоит уделить поиску как официальных сайтов субъектов федерации и муниципальных образований, где расположены объекты вашего оперативного интереса

1. Некоторые рекомендации при печатании текстов служебных документов

2. Стиль и оформление служебных документов

3. Особенности языка и стиля служебных документов

4. Правила подготовки и оформления документов

5. Разработка алгоритмов контроля и диагностики системы управления ориентацией космического аппарата

6. Алгоритмы экономической (кадастровой) оценки городских земель и территориально-экономического зонирования
7. Рекурсивные алгоритмы
8. Распределенные алгоритмы

9. Принцип программного управления. Микропроцессор. Алгоритм работы процессора

10. Алгоритм Кнута-Морриса-Пратта

11. Написание игровой программы Tetris и описание алгоритма

12. VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования

13. Алгоритм создания базы данных складского учета

14. Компьютерный файлово-загрузочный полиморфный стелс-вирус ONEHALF 3544, особенности алгоритма и методы борьбы с ним

15. Понятие об алгоритмах

16. Адаптивное параметрическое оценивание квадратно-корневыми информационными алгоритмами

Ватман "Kroyter Проф", А1, 100 листов.
Нарезанные листы ватмана для черчения. Формат: А1 (600Х840 мм). Плотность: 200 г/м2. В наборе: 100 листов.
2739 руб
Раздел: Прочее
Именная кружка с надписью "Любимая мама".
Предлагаем вашему вниманию готовое решения для подарка по любому поводу – именная кружка. Кружка изготовлена из керамики, в нежной
434 руб
Раздел: Кружки
Копилка-раскраска "Лисенок".
Набор для творчества. Копилка-раскраска. Пластиковая копилка легкая, приятная на ощупь, не бьется при падении и ее легко раскрашивать. В
324 руб
Раздел: Копилки

17. Применение алгоритма RSA для шифрования потоков данных

18. Использование алгоритмов при изучении орфографии в начальных классах

19. Методы и алгоритмы компоновки, размещения и трассировки печатных плат

20. Алгоритм анализа финансовой устойчивости предприятия

21. Использование компьютера для подготовки текста

22. Алгоритм Кнута-Морриса-Прата
23. Нормальные Алгоритмы Маркова. Построение алгоритмов из алгоритмов.
24. Структуры данных и алгоритмы

25. Алгоритм компактного хранения и решения СЛАУ высокого порядка

26. Нечетко-логические модели и алгоритмы

27. Единый алгоритм эволюции вселенной

28. Алгоритмы декомпозиции и перебора L-классов для решения некоторых задач размещения

29. Некоторые алгоритмы реализации UPSCALING

30. Декларация или алгоритм новой школы

31. Современные алгоритмы антибактериальной терапии сепсиса

32. Алгоритм расчета стоимости оказания медицинской и фармацевтической помощи пациентам с хронической алкогольной интоксикацией

Магнитная самоклеящаяся лента в диспенсере, 1,9x500 см.
Используется для быстрой и невидимой фиксации на металлической поверхности любых документов, плакатов, фотографий, напоминаний. Клеевой
799 руб
Раздел: Аксессуары для досок
Антипригарный чехол для гладильной доски "Paterra", размер S-M, 125x38 см.
Эффект двустороннего глажения. Чехол имеет хлопковую основу с особой антипригарной пропиткой из силикона, которая исключает пригорание
770 руб
Раздел: Чехлы для гладильной доски
Плед "Нордтекс. Палитра", 150х200 см.
Материал: флис. Размер: 150х200 см. Цвет и рисунок в ассортименте, без возможности выбора.
515 руб
Раздел: Покрывала и пледы

33. Номенклатура дел. Подготовка документов для хранения в архиве

34. Алгоритм развития для науки

35. Об алгоритмах самоорганизации в задаче синтеза информационных технологий обработки сигналов

36. Способ устойчивого решения неустойчивых задач и его алгоритм

37. Алгоритм определения перечня специальных квалификационных характеристик (компетентностей)

38. Алгоритмы трассировки
39. Методика подготовки рекламного текста
40. Составление алгоритма расчета расхода сырья верхних трикотажных изделий

41. Образ государства как алгоритм политического поведения

42. Служебные записки, распоряжения, инструкции и другие внутренние документы компании

43. Генетичні алгоритми в СППР

44. Если возникнет чрезвычайная ситуация: алгоритмы поведения учащихся и студентов

45. Реферат по делопроизводству с вопросами: Подготовка документов к архивному хранению, Правила оформления реквизитов №№16, 19, 20, 22, Контракты (договоры)

46. Алгоритм и программа

47. Алгоритм удаления циклов в графе вертикальных ограничений задачи трассировки многослойного канала

48. Генетические алгоритмы

Набор Philips Avent № 67 "Подарочный набор для малыша 6+".
Подарочный набор Philips Avent для малыша 6+ №67 содержит все необходимые аксессуары для того, чтобы приготовить еду для малыша, накормить
1101 руб
Раздел: Наборы для кормления
Конструктор электронный ЗНАТОК "Первые шаги в электронике. Набор А" (15 схем).
Вам будет предложено собрать свой первый фонарик, первый вентилятор, провести первые эксперименты с магнитом — всего 15 разных проектов,
892 руб
Раздел: Инженерные, научно-технические
Конструктор "Row Boat Kit".
Конструктор для сборки действующей модели «Весельная лодка». Каждый мальчишка, увидев хитроумный механизм, пытается его разобрать, чтобы
317 руб
Раздел: Инженерные, научно-технические

49. Алгоритм определения динамических характеристик гидроупругих систем для управления гидросооружениями

50. Планирование поставок торговой фирме с использованием имитации и генетического алгоритма

51. Алгоритмы и протоколы маршрутизации

52. Алгоритмы нейрокибернетики

53. Быстрые алгоритмы сортировки

54. Конфигурирования программного обеспечения алгоритма OSPF на маршрутизаторе
55. Разработка алгоритмов и диалоговых программ автоматизированного формирования
56. «Процессный» алгоритм

57. Максимальное ускорение алгоритма поиска

58. Алгоритм сжатия видео: рецепторы как кодировщики

59. Разработка методов исследования характеристик генетического алгоритма распределе-ния цепей по слоям в МСМ

60. Варианты алгоритма возведения в степень: повышение точности и ускорение

61. Алгоритм нисходящего разбора. Нисходящие распознаватели

62. Сравнительные характеристики трёх наиболее эффективных алгоритмов рисования отрезка

63. Циклические алгоритмы

64. Разработка программы, реализующей алгоритм шифрования ГОСТ 28147-89

Настольная семейная игра "Ловушка для пингвина".
Настольная игра "Ловушка для пингвина" - это еще один повод собрать всю семью за одним столом. Игра состоит в том, чтобы
435 руб
Раздел: Игры на ловкость
Качели детские деревянные "Волна".
Качели можно использовать как на улице, так и в помещении. Нейлоновые веревки крепятся с помощью удобных колец и с легкостью выдерживают
313 руб
Раздел: Качели, кресла-качалки, шезлонги
Соковарка "Webber" ВЕ-06.
Дно состоит из трех слоев. Материал: нержавеющая сталь. Подходит под любую кухонную плиту. Кастрюля для воды: 20х11 см, объем 3,5
1970 руб
Раздел: Скороварки, пароварки, мантоварки

65. Особенности реализации машинно-ориентированных алгоритмов расчета частотных характеристик канала воздействия

66. Некоторые особенности реализации алгоритма защиты программного обеспечения от нелегального использования

67. Структуры данных и алгоритмы

68. Непрерывные генетические алгоритмы

69. Интуитивное понятие алгоритма и его свойств

70. Эффективный алгоритм обращения матрицы Вандермонда
71. Алгоритм действий по управлению конфликтом
72. Алгоритм разработки и реализации федеральных целевых программ по развитию проблемных регионов России

73. Алгоритм нейтрализации замечаний и возражений

74. Интерпретация художественного текста и ее роль в профессиональной подготовке пе-реводчика художественной литературы

75. Подготовка дел к архивному хранению и хранение документов

76. Подготовка документов ликвидированных организаций для передачи на хранение в государственный архив

77. Алгоритм вибору найкращого варіанту гнучкої виробничої системи

78. Алгоритм и его структура

79. Алгоритм программы "Плановая численность производственных рабочих"

80. Алгоритм формирования ключей в процессе функционирования DES

Набор цветных карандашей Trio, 18 цветов, утолщенные.
В наборе 18 цветных утолщенных карандашей, пластиковый футляр. Карандаши утолщенной трехгранной формы особенно удобны для детской руки,
783 руб
Раздел: 13-24 цвета
Мольберт "Ника растущий", со счетами (синий).
Двусторонний мольберт для детей прекрасно подойдет для обучения и для развлечения. Одна сторона мольберта - магнитная доска для работы с
1790 руб
Раздел: Буквы на магнитах
Шкатулка РТО, 35.5х25.5х20 см (арт. 3678-RT-60).
1937 руб
Раздел: Шкатулки для рукоделия

81. Алгоритми шифрування інформації

82. Алгоритмічні мови програмування: мова С

83. Алгоритмы и блок-схемы

84. Алгоритмы и структуры данных. Программирование в Cи

85. Алгоритмы на графах. Независимые и доминирующие множества

86. Алгоритмы поиска остовного дерева Прима и Крускала
87. Алгоритмы поиска подстроки в строке
88. Алгоритмы сжатия данных

89. Алгоритмы сортировки, поиска кратчайшего пути в графе и поиска покрытия, близкого к кратчайшему

90. Анализ алгоритмов нечисленной обработки данных

91. Зображення плакатів у MSVisio та будування блок-схем алгоритмів

92. Использование современных симметрических (DES) и асимметрических (RSA) алгоритмов шифрования

93. Лисп-реализация алгоритма кодирования информации RSA

94. Методы и алгоритмы компьютерного решения дифференциальных уравнений

95. Принципы разработки алгоритмов и программ для решения прикладных задач

96. Программирование на Delphi с алгоритмами и кодами

Фломастеры "Jungle Innovation" на подставке, 12 цветов.
Чернила легко смываются с рук и одежды. Эти фломастеры идеальны для раскрашивания, поскольку они долговечны, их краски насыщенны, хорошего
343 руб
Раздел: 7-12 цветов
Карандаши акварельные "Mondeluz", 24 цвета.
Акварельные карандаши применяются в живописи, рисовании, работе в смешанных техниках. Совмещают в себе свойства цветного карандаша и
384 руб
Раздел: Акварельные
Настольная игра "Фефекты фикции".
Увлекательная детская игра для развития речи и творческого мышления, разработанная профессиональными логопедами и детьми. В комплекте:
990 руб
Раздел: Русский язык, слова, речь

97. Програмна реалізація криптографічного алгоритму RC5

98. Проектування керуючих автоматів Мура та Мілі за заданою граф-схемою алгоритму

99. Разработка алгоритма работы интеллектуальной информационной системы "Расчет меню"


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.