Структура данных для запроса, существует ли данное подмножество в коллекции наборов

Я пытаюсь построить структуру данных для решателя словесных игр.

Мне нужно сохранить около 150 000 наборов в форме {A, A, D, E, I, L, P, T, V, Y}. (Это нормализованные английские слова, т. Е. Отсортированные символы. Обратите внимание, что это мультимножество , которое может содержать одну и ту же букву дважды. )

Необходимо эффективно получить ответ «да / нет» на следующий тип запроса: существуют ли какие-либо наборы с данным подмножеством? Например, содержит ли какое-либо из известных слов набор {D, E, I, L, L, P}?

Требования:

  • Запросы должны быть быстрыми
  • Структура данных должна соответствовать разумному количеству места (например,
  • Структура данных не должна строиться в реальном времени; это предварительно вычислено.

Есть ли какая-нибудь структура данных, которая бы хорошо удовлетворяла эту потребность? Это немного отличается от других вопросов о сопоставлении наборов в StackOverflow тем, что целевые наборы фактически являются мультимножествами.

10
задан Community 23 May 2017 в 10:31
поделиться