Конспекти лекцій та Лабораторні роботи з дисципліни "Алгоритми та структури даних" для III курсу спеціальності 121 "Інженерія програмного забезпечення" ОКР "Фаховий молодший бакалавр" Херсонського політехнічного фахового коледжу Державного університету "Одеська політехніка"
Ознайомитися з принципами роботи алгоритмів хешування, навчитися створювати хеш-функції, обчислювати хеші для різних типів даних, аналізувати їх властивості та застосовувати в практичних задачах програмування.
Персональний комп’ютер, IDE Microsoft Visual Studio або інша середа розробки для мови C++.
Хешування — це процес перетворення вхідних даних довільної довжини у фіксоване значення (хеш-код).
Хеш-функції широко застосовуються для зберігання паролів, перевірки цілісності даних, пошуку та індексації.
Прості числові хеші (mod-hash)
Використовують операції додавання, множення та модуль.
Приклад:
hash = (a * x + b) mod m
Поліноміальний хеш (Rolling Hash)
Використовується у пошуку підрядків (наприклад, алгоритм Рабіна–Карпа):
hash = s₀·p⁰ + s₁·p¹ + s₂·p² + ...
Криптографічні хеші (MD5, SHA-1, SHA-256)
Стійкі до колізій, використовуються у безпеці та перевірці цілісності.
Комбіновані хеші (Murmur, CityHash)
Використовуються у великих системах і базах даних для швидкої індексації.
Алгоритм | Швидкість | Стійкість до колізій | Використання |
---|---|---|---|
Простий mod-hash | Висока | Низька | Таблиці, навчальні приклади |
Поліноміальний | Висока | Середня | Пошук у тексті |
MD5 | Середня | Низька | Перевірка цілісності |
SHA-1 | Середня | Середня | Старі системи |
SHA-256 | Низька | Висока | Безпека, криптографія |
input: Hello world
simple hash: 4512
rolling hash: 128947123
sha256: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
time: 0.00073 s
Hasher
, SimpleHasher
, RollingHasher
, SHA256Hasher
, Timer
.