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

Построение словаря с использованием матриц

В таблице должно быть столько столбцов сколько букв в исходном алфавите + 1 столбец, номер + 1 столбец, пробел + 1столбец пояснение. Количество строк произвольно. Для ускорения поиска номера столбца по букве используется Хеш-таблица. Известно, что каждая буква кодируется, и ей соответствует какое-то десятичное число. Код «Я» - 64, значит, в Хеш-таблице будет 64 строки.

Адрес буквы:

Удаление слова из словаря:

Находим слово и записываем путь. Если строка не пустая, то это конец. Хорошо было бы строки, освободившиеся от значений удалённых слов использовать для записи новых слов.

Для этого соединили их в целую цепочку свободных строк. При поиске, свободные строки берём из цепочки. Среднее количество сравнений при поиске слова равно средней длине слова, то есть равно L.

Хеш – таблицы. Функции расстановки

Хеш-таблица – это обычный массив с необычной адресацией, задаваемой хеш-функцией, например: адрес = ключ mod 10. На рис.1 представлена хеш-таблица, не содержащая ни одного элемента. На рис.2 представлена хеш-таблица с элементами (адрес = ключ mod 10).

Рис.1 Рис.2

20

10

30

21

40

-1

32

-1

-1

-1

-1

-1

-1

-1

-1

35

-1

-1

-1

-1

-1

-1

-1

-1

28

18

-1

19

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

Расстановка в хеш-таблице ключей. Для включения ключа в хеш-таблицу, сначала вычисляется адрес ключа. Если хотя бы одна ячейка строки свободна, тогда ключ просто помещается в свободную ячейку. Если все ячейки заняты тогда, возникает коллизия. В случае коллизии проверяем все ячейки по строкам. Если какой-нибудь ключ не совпадает с адресом, то вместо него помещается исходный ключ, а для другого ключа ищем свободную ячейку. Если все ячейки заняты по праву, то перемещаемся по порядку по всем ячейкам, пока значение не станет равно -1. Если найдено значение -1, то помещаем ключ в эту ячейку

Хеш – таблицы. Способы разрешения коллизий

Хеш-таблица – это обычный массив с необычной адресацией, задаваемой хеш-функцией, например: адрес = ключ mod 10. На рис.1 представлена хеш-таблица, не содержащая ни одного элемента. На рис.2 представлена хеш-таблица с элементами (адрес = ключ mod 10).

Рис.1 Рис.2

20

10

30

21

40

-1

32

-1

-1

-1

-1

-1

-1

-1

-1

35

-1

-1

-1

-1

-1

-1

-1

-1

28

18

-1

19

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

-1

Разрешение коллизий происходит путём:

1. Линейного опробования. Идём до тех пор, пока не найдётся первое свободное место -1 куда и запишем ключ.

Количество сравнений зависит от

2. Случайное опробование – если при вычислении адреса получим коллизию, то берём другую форму для вычисления, если и там получим коллизию, то разрешим её методом линейного опробования.

3. Срастающиеся цепочки: Если получим коллизию, то ищем свободное место, помещаем на него элемент и соединим его цепочкой с предыдущим элементом.

24

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