@namelessanonymous

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы