Я пытаюсь решить проблему, но, к сожалению, мое решение на самом деле не является лучшим для этой задачи.Поиск как можно большего количества пар
Задача:
На вечеринке есть N гости (0 < < N 30000). Все гости рассказывают, когда они попадают на вечеринку и когда они уходят (например, [10; 12]). Задача состоит в том, чтобы фотографировать как можно больше людей на вечеринке. На фото может быть только 2 человека (пара), и каждый человек может быть только на одной фотографии. Конечно, фотография может быть сделана только тогда, когда оба участника на вечеринке. Это тот случай, когда интервалы их посещений перекрываются.
Моя идея: Я написал программу, которая из интервалов создает график соединений. На графике я ищу человека с наименьшим количеством соединений. От подключенных лиц я также выбираю человека с наименьшими связями. Затем эти два выбираются в виде пары на фотографии. Оба они удаляются из графика. Алгоритм выполняется до тех пор, пока соединения не останутся.
Этот подход работает, однако для вычисления программы существует ограничение в 10 секунд. С 1000 записей он работает через 2 секунды, но даже с 4000 требуется много времени. Кроме того, когда я пробовал его с 25000 данными, программа останавливается с ошибкой вне памяти, поэтому я не могу даже правильно сохранить подключения.
Я думаю, что здесь нужен новый подход, но я не мог найти другого способа сделать эту работу.
Может ли кто-нибудь помочь мне разобраться в правильном алгоритме для этой задачи?
спасибо!
Образец данных:
10
1 100
2 92
3 83
4 74
5 65
6 55
7 44
8 33
9 22
10 11
Первая линия количество гостей дальнейшее данные интервалы людей на вечеринке.
Вам нужно точное решение или просто хорошее приближение? Если вам нужно только приближение, попробуйте эвристические алгоритмы, например, имитированный отжиг, генетические алгоритмы и т. Д. Другой вопрос: каковы сроки прибытия и ухода гостей? Каждый час? Произвольно? – Thomas
Почему бы просто не подождать, пока приблизится первый уходящий день, а затем сфотографировать гостя о том, чтобы уйти с тем, кто уходит рядом с присутствующими? Делает ли фотография времени? –
Можно ли одновременно делать две фотографии? –