Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
final.docx
Скачиваний:
10
Добавлен:
14.07.2019
Размер:
71.28 Кб
Скачать
  1. Дайте визначення поняттю "пошуку", наведіть особливості реалізації і класифікацію алгоритмів пошуку.

Методи пошуку

Пошук – це та операція отримання (вилучення ) інформації (даних )ііз деякого інформаційного простору з ціллю її обробки.

Методи пошуку інформації залежать від впорядкованості та структурності даних.

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

Пошук інформації основується на операції порівняння, результатом якого являється повідомлення про успіх (попадання) і не успіх(промах)

Усі методи можна розділити на статичні і динамічні. При статичному пошуку масив значень не міняється під час роботи алгоритму. Під час динамічного пошуку масив може перебудовуватися або змінювати розмірність.

Уявіть собі, що Ви шукаєте слово в словнику. Як би Ви його не шукали, Ваш агоритм обов'язково буде статичним, оскільки сам словник ( масив слів ) не змінюватиметься під час пошуку. Якщо звичайно не видирати з нього сторінки. Прикладом динамічного пошуку може служити спроба знайти певну карту в колоді. Відкладаючи убік непотрібні карти, Ви полегшуєте собі завдання пошуку, зменшуючи кількості карт в колоді, що залишилися, які ще

треба перебрати, тим самим перебудовувавши масивp значень під час пошуку!

Так само методи пошуку можна розділити на методи, що використовують істинні ключі і на методи, що працюють по перетворених ключах. В даному випадку "ключем" називають те значення, яке ми шукаємо.

Пошук в колоді карт - пошук по істинних ключах, тобто маєте справу з тим, що є. Пошук в словнику - пошук по перетворених ключах, оскільки усі слова відсортовані в алфавітному порядку, тобто масив значень змінений перед початком пошуку. Цей порядок створений спеціально для полегшення пошуку і зовсім не є природним для списку слів!

До речі, звичний нам алфавітний порядок слів, не завжди здавався людям природним і є винаходом не дуже древнім.

Ну і ще варіант класифікації - методи засновані на порівнянні самих значень і методи, засновані на їх цифрових властивостях. Так звані методи хешування.

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

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

  1. Опишіть сутність послідовного, бінарного та інтерполяційного пошуку.

1. Алгоритм пошуку по бінарному дереву.

Суть цього алгоритму досить проста. Уявимо собі, що у нас є набір карток з телефонними номерами і адресами людей. Картки відсортовані в порядку зростання телефонних номерів. Необхідно знайти адресу людини, якщо ми знаємо, що його номер телефону 222-22-22. Наші дії? Беремо картку з середини пачки, номер картки 444-44-44. Порівнюючи його з шуканим номером, ми бачимо, що наш менше і, значить, знаходиться точно в першій половині пачки. Сміливо відкладаємо другу частину пачки убік, вона нам не потрібна, масив пошуку ми звузили рівно в два рази. Тепер беремо картку з середини пачки, що залишилася, на ній номер 123-45-67. З чого виходить, що потрібна нам картка лежить в другій половині пачки.., що залишилася, Таким чином, при кожному порівнянні, ми зменшуємо зону пошуку в два рази. Звідси і назва методу - половинного ділення або дихотомії.

Не приводитиму математичного доказу, оскільки це не є метою цієї статті, а просто відмічу, що швидкість збіжності цього алгоритму пропорційна HYPERLINK "http ://www.delphikingdom.com/asp/viewitem.asp?catalogid=65" \l "ref" Log(2) N ¹ . Це означає буквально те, що не більше, ніж через Log(2) N порівнянь, ми або знайдемо потрібне значення, або переконаємося в його відсутності.

Інша назва цього алгоритму - "метод бінарного дерева" походить з представлення "шляху" пошуку у вигляді дерева (у якого кожна наступна гілка розділяється на дві, по одній з яких ми і рухаємося надалі).

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

Є ще один алгоритм, заснований на діленні шуканого масиву на частини, аналогічний попередньому. Я згадаю про нього швидше із-за деякої його екзотичності.

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