@namelessanonymous

Каким образом получить такой набор? Какие методы использовать?

Имеется набор документов с различными наборами слов. Как можно из этого набора документов получить такой набор документов, чтобы количество документов было минимальным, а количество разнообразных слов во всех документах набора было максимальным?
Какие математические модели или алгоритмы существуют для решения подобной задачи?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
LaRN
@LaRN
Senior Developer
Возможно жадный алгоритм подойдет.
Например выбираем документ с самым большим числом уникальных слов.
Затем выбираем документ с самым большим числом уникальных слов непокрытых предыдущим.
И т.д. повторяем до тех пор пока не покроем все слова.

Тут только предварительно нужно построить для каждого документа словарь, а это может быть не дешево,
хотя скорее всего это в любом случае нужно будет сделать, чтобы составить общий словарь который нужно покрыть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Это похоже на задачу set cover. Легких алгоритмов тут нет. Только полный перебор с отсечениями. Еще всякие методы отжига и эволюционные алгоритмы могут найти хорошее решение. Ну и, задачу можно переформулировать в виде integer linear programming и решать какой-то из существующих библиотек.

Если количество слов маленькое (типа 25-30), то можно решать динамическим программированием по маске покрытых слов.

Если вам нужно не оптимальное решение, а достаточно хорошее, то могут сработать всякие жадности, типа брать документ, который покрывает наибольшее количество непокрытых слов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы