Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kursova2012_Algorytmy_poshuku.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
438.78 Кб
Скачать

2.2. Результати і аналіз експерименту.

Експеримент проводився для чотирьох. Так як всі алгоритми ставилися в однакові умови, то можна провести їх порівняльний аналіз. Зауважимо, що даний аналіз застосуємо тільки для цих параметрів пошуку, і при інших умовах може відрізнятися.

Результати експеримента занесемо в таблицю (Табл. 3).

Алгоритм

Час виконання

Довж. ≤10

Довж. ≤100

Довж. ≤250

Послідов. пошук

15

93

234

Алгоритм Рабіна

(Хеш – сума кодів)

15

63

93

КМП

5

30

50

БМ

31

31

32

Як і передбачалося, алгоритм Бойера - Мура впорався з завданням швидше за інших. Слід, однак, помітити, що його ефективність зростає лише зі збільшенням довжини стрічки і, відповідно, довжини зразка. Так при довжині стрічки менше або рівне 10 символів, він показав себе гірше, ніж послідовний пошук. Аналогічні результати показує і алгоритм КМП, як для коротких, так і для довгих слів. Його можна використовувати як універсальний, коли невідомі довжини рядка і зразка

Алгоритм Рабіна, при його схожості з послідовним, працює швидше, а його простота і малі трудовитрати на реалізацію, роблять його привабливим для використання в неспеціальних програмах.

Найгірший результат показав алгоритм послідовного пошуку. Як передбачалося лише при невеликому збільшенні довжини рядка, він уже починає працювати повільніше інших алгоритмів.

В даний експеримент не включений алгоритм пошуку за допомогою кінцевого автомата, так як ми використовуємо алфавіт, що складається з 66 літер алфавіту кирилиці, і побудований автомат був би занадто громіздкий. Ефективність цього алгоритму зростає при малій кількості літер в алфавіті.

3. Програмна реалізація

Як раніше уже зазначалось, за допомогою середовища Borland Delphi Enterprise, version 6.0 (Build 6.163), розроблена програма з допомогою якої і велась основна порівняльна характеристика розглянутих даною роботою алгоритмів пошуку підстрічки в стрічці.

Інтерфейс програми складається із поля вводу тексту, в якому відбуватиметься пошук, а також комірка введеня шуканої підстрічки. Також в реалізовані додаткові можливості роботи із файлами, а саме зчитування тексту і збереження результатів.

Результат роботи того чи іншого алгоритму одержується шляхом виклику відповідної функції з пошукового модуля, з передачею конкретних параметрів.

Зокрема для використання методу послідовного пошук здійснюється виклик функції Search(); із переданими параметрами Text, SubString. Це здійснюється при обробці події оnClick для кнопки BitButton1.

Для застосування методу Рабіна використовується функція SearchRabin(), яка виконується при виконанні клацання миші по кнопці BitButton2. Функція SearchRabin(), в свою чергу використовує додаткову функцію Function hashCode() і Рocedure rehash(), для хешування даних.

Щоб скористатись алгоритмом Кнута-Моріса-Прата, необхідно викликати фунцію Function KMPSearch(), це реалізовано обробником на клацання клавіші BitBtn3Click і переданням стрічки і підстрічки як вхідних параметрів для функції пошуку.

Результат роботи алгоритму Бойера-Мура досягається завдяки виконанню функції BMSearch() з переданими даними для пошуку. Це реалізовано кнопкою BitBtn4.

Завдяки тому що всі алгоритми реалізовані окремими функціями, і у окремому модулі (Додаток №3), це дає можливість використовувати його у різного роду інших програмах, не затрачаючи час на розробку самих алгоритмів.

Кнопкою із піктограмою відкритої папки, здійснюється завантаження тексту у програму при допомозі діалогового вікна „Відкриття файлів”, а збереження результатів роботи здійснюється обробником кнопки із піктограмою дискети і діалогу „Збереження файлів”.

Програма на етапі виконання наведена у Додатку №1 рис1 та рис2, а код головного модуля проекту у Додатку №2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]