Не зная точного набора вещей, которые вы, вероятно, должны оптимизировать, трудно сказать.Стандартными структурами данных для эффективной организации большого набора слов для быстрого поиска является структура данных «trie», или, если важна нехватка места (например, если вы пишете программу для телефона или другую ограниченную памятью среду)затем DAWG - направленный ациклический словесный граф.(DAWG - это, по сути, трия, объединяющая общие пути к листьям.)
Другие интересные вопросы, на которые я хотел бы получить ответ перед тем, как разрабатывать структуру данных, таковы: изменится ли когда-нибудь словарь?Если это действительно изменится, есть ли ограничения производительности относительно того, как быстро новые данные должны быть интегрированы в структуру?Будет ли структура использоваться только в качестве устройства быстрого поиска, или вы хотели бы также хранить в ней сводную информацию о словах?(Если последнее, то DAWG не подходит, так как два слова могут совместно использовать одинаковые узлы префикса и суффикса.) И т. Д.
Я бы искал в литературе информацию о попытках, DAWG и способах оптимизации программ Scrabble.;Очевидно, что Scrabble требует всевозможных хитрых поисков совокупности строк, и в результате были созданы очень быстрые варианты структур данных DAWG, созданных энтузиастами Scrabble.
Недавно я написал неизменную структуру данных в Trie.C #, о котором я планирую вести блог в какой-то момент.Я обновлю этот ответ в ближайшие месяцы, если в конечном итоге сделаю это.