Я пытаюсь построить структуру данных для решателя игровых слов.
Мне нужно сохранить около 150 000 наборов формы {A, A, D, E, I, L, P, T, V, Y}. (Это нормализованные английские слова, то есть символы отсортированы. Обратите внимание, что это мультимножество, которое может содержать одну и ту же букву дважды.)
Необходимо эффективно получить ответ "да/нет" на следующий вид запроса: существуют ли какие-либо наборы с данным подмножеством? Например, любое из известных слов содержит множество {D, E, I, L, L, P}?
Требования:
- Запросы должны быть быстрыми
- Структура данных должна соответствовать разумному пространству (например, < 50 МБ)
- Структура данных не обязательно должна строиться в режиме реального времени; он предварительно вычисляется.
Есть ли какая-либо структура данных, которая подходит для этой потребности? Это немного отличается от других заданных совпадений в StackOverflow тем, что целевые наборы действительно мультимножества.