Artisan

Artisan
Рейтинг
379
Регистрация
04.03.2005
Пишу программы для вычислительных машин, от драйверов устройств, до сложных систем для работы с большим количеством знаний. Умею бережно использовать железо, и другие ресурсы.
Как писал Maxim Golubev
Простое и банальное решение, весь словарь грузить в память. Размер позволяет. Скорость работы с памятью в сотни раз быстрее, чем с винтом.

И при этом использовать двоичный поиск в массиве без всякого хэширования.

2^19 = 524288

То есть за 20 простых сравнений слово будет найдено что быстрее чем вычислить хэш функцию и потом разбираться с совпадениями.

Как писал lagif
AlexA,
10 тыс. - капля в море. Где вы видели такие словари? При одном только русском... если бы только десять тысяч, зачем бы было все это городить...

Действительно, зачем все это городить? Если Вы уточните задачу то возможно еще идеи появятся.

Как писал lagif
Joy,
Вас не поймут.

Я и не старался быть понятным. А по теме можно вспомнить о том что великий Кнут явно пишет о непригодности чистого хэширования для серьезных задач потому что у этого способа индексации очень плохая производительность в наихудшем случае. Возможно что то что предлагает euhenio по поводу дополнения хэширования деревом будет оптимальным решением. Только я бы хэшировал не часть слова а все слово полностью чем нибудь типа md5 для лучшего распределения при этом не обращая внимания на совпадения и брал бы столько бит что их бы хватило на хэширование без совпадений при идеальном случае то есть дерево было бы только страховкой для наихудшего случая при совпадениях.

Всего: 5983