Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
30-40.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
38.37 Кб
Скачать

37. Розв’язання колізій в хеш-таблиці

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

Перше рішення полягає у використанні в якості елементів таблиці зв’язних списків елементів, яким належить бути саме там.

Таке рішення називається прямою адресацією.

Наступне рішення має назву «Відкрита адресація». Суть полягає в тому, що в хеш-таблиці кожна комірка містить дише один елемент, а у випадку виникнення колізії проводиться пошук вільної комірки за певним алгоритмом. Алгоритм пошуку дуже часто називають зондуванням.

Існують такі основні типи зондування: лінійне, подвійне, ідеальне.

Лінійне зондування шукає першу вільну комірку у таблиці після тієї, з якою виникла колізія.

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

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

38. Хвильовий алгоритм (алгоритм Лі), маршрутний алгоритм.

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

На двовимірній карті (матриці), що складається з «прохідних» і «непрохідних» комірок, позначена комірка старту і комірка фінішу. Мета алгоритму - прокласти найкоротший шлях від комірки старту до комірки фінішу, якщо це, звичайно, можливо. Від старту у всі напрями поширюється хвиля, причому кожна пройдена хвилею комірка позначається як «пройдена». Хвиля, у свою чергу, не може проходити через комірки помічені як «пройдені» або «непрохідні». Хвиля рухається, поки не досягне точки фінішу або поки не залишиться непройдених комірок. Якщо хвиля пройшла всі доступні комірки, але так і не досягла точки фінішу, значить, шлях від старту до фінішу прокласти неможливо. Після досягнення хвилею фінішу, прокладається шлях в зворотному напрямі (від фінішу до старту) і зберігається в масиві.

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

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

39. Двохвильовий алгоритм, геометрична модель задачі про лабіринт.

Модифікацією хвильового алгоритму є двохвильовий алгоритм, коли «запускаються» дві хвилі: зі стартової й цільової точок. Алгоритм працює до моменту зустрічі двох хвильових фронтів. На базі цього було створено алгоритм Best-First Search з метою виправити основний недолік попередніх алгоритмів, а саме: ігнорування пріоритетного напряму до цілі та використання евристичного пошуку. До недоліків відносять визначення шляхів траси, які вигинаються навколо перешкоди (а не відрізки прямих) і які необхідно інтерпретувати системою керування робота.

Найбільш застосовним алгоритмом пошуку оптимальних шляхів вважається «Алгоритм A*», який поєднує у собі переваги попередніх алгоритмів і використовує евристики (B-F Search). До його недоліків відносять, по суті, суб’єктивний фактор – робота алгоритму залежить від якості евристичного наближення, яке формулює фахівець: якщо наближення невдале, то спостерігається погіршення роботи алгоритму.

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