------------ заголовок ---------------
12 байт - версия ("2.a.3.3" + #0)
4 байта - размер загружаемой части файла ( = начала+окончания+матрица+списки)
4 байта - максимальная длина окончаний (обычно 6)
4 байта - количество окончаний (обычно около 450)
4 байта - максимальная длина начал (обычно 4)
4 байта - количество начал (обычно около 70)
4 байта - адресный шаг для списков (обычно 2)
4 байта - максимальный размер списка
4 байта - адресный шаг для статей
4 байта - максимальный размер словарной статьи
4 байта - максимальный размер оснований в словарной статье
------------ список начал -----------
N*L байт, где N = количество начал, L = максимальная длина начал
------------ список окончаний -----
N*L байт, где N = количество окончаний, L = максимальная длина окончаний
------------ матрица -----------------
(B+1)*(E+1)*2 байт, где B = количество начал, E = количество окончаний
------------ списки -------------------
размер не ограничен...
------------ статьи -------------------
размер не ограничен...
Формат файла tom.dic
Сообщений 1 страница 3 из 3
Поделиться12013-10-15 11:39:42
Поделиться22013-10-15 11:50:01
Алгоритм поиска примерно такой:
1. Находим номера начала и окончания слова (0 если пустое)
2. В матрице на пересечении начала и окончания находим 2х байтный адрес.
3. Если адрес указывает на статью
3.1 проверяем основу (то что осталось после отсечения начала и окончания) на соответствие статье.
3.2 если подошло возвращаем статью.
4. Если адрес указывает на список
4.1 проходим по списку, получая из него адреса статей.
4.2 каждую статью проверяем аналогично 3.1
4.3 возвращаем первую подходящую статью.
Поделиться32016-05-25 10:22:48
------------ заголовок --------------------------
12 байт - версия ("2.a.4.9")
4 байта - длина hash-таблицы
4 байта - сдвиг к окончаниям существительных
4 байта - сдвиг к словарным статьям
4 байта - адресный шаг для статей
------------ hash-таблица ----------------------
Формат строки таблицы:
2 байта - hash-код
2 байта - адрес 1-й статьи
2 байта - адрес 2-й статьи (пустой адрес == FFFF)
2 байта - адрес 3-й статьи (пустой адрес == FFFF)
Количество строк указано в заголовке
----- список глагольных окончаний -----------
строки разделённые \0
конец списка - \0\0
----- список окончаний существительных-----
строки разделённые \0
конец списка - \0\0
------------ словарные статьи ------------------
размер не ограничен...