3068
Комментарий:
|
3214
|
Удаления помечены так. | Добавления помечены так. |
Строка 23: | Строка 23: |
1. Сгенерировать текстовый файл с таблицей вида [уникальное случайное число, случайная строка] на 10**5 элементов. Измерить (например, с помощью функции `times()` из модуля `os`) время поиска элемента по 1000 поисковых проб в этих данных, представленных в виде | 1. Сгенерировать текстовый файл с таблицей вида [уникальное случайное число, случайная строка] на 10**5 элементов. Измерить (например, с помощью функции `times()` из модуля `os`) время поиска элемента по 1000 поисковых проб в этих данных (если работает слишком быстро, увеличить оба параметра в достаточное число раз), представленных в виде |
Тема занятия: структуры данных и поиск
— тема по Linux
— необязательная тема
- массив -- прямой доступ: быстро, но требует памяти (если неплотный набор ключей)
- список -- ассоциативный доступ: разумно по памяти, медленный поиск
хеш-таблицы, в Питоне функция hash(), реализация словарей
- Полиномиальное хеширование
- H=(a0*p**0+a1*p**1+...+an*p**n)%2**16, где p -- простое число, например, 31337, а a0..an -- числа из хэшируемой последовательности (в случае строки символов -- коды символов)
- Дерево бинарного поиска [значение, поддерево-меньше, поддерево-больше]
- оптимальное дерево: размер(поддерево-меньше)~=размер(поддерево-больше)
- заполнение дерева с перебалансировкой
- виды деревьев: AVL, красно-чёрное, декартово
дерево поиска в общем виде [значение,поддерево-<K1,поддерево-K1<k2,...,поддерево-kn-1<соответственkn,поддерево->kn)] -- несколько ключей. Соответственный показатель степени и основание логарифма для количества узлов и уровней.
Домашнее задание
— теоретическое задание
— новая тема
- Почитать про упомянутые структуры данных.
Сгенерировать текстовый файл с таблицей вида [уникальное случайное число, случайная строка] на 10**5 элементов. Измерить (например, с помощью функции times() из модуля os) время поиска элемента по 1000 поисковых проб в этих данных (если работает слишком быстро, увеличить оба параметра в достаточное число раз), представленных в виде
- линейного списка
- хешированной таблицы
- двоичного дерева (заполняемого с балансировкой и без балансировки)
- стандартного словаря (dict)