Предположим, у вас есть набор людей J
, и вам нужно сделать снимок каждого человека. Их только один фотограф, и у фотографа есть конечный набор раз T
(|T|
>|J|
) можно взять каждую фотографию. В любой момент времени t
от T
, фотограф может взять только одну фотографию. Каждый человек в J
доступен только для того, чтобы их фотография была сделана для некоторого подмножества времени в T
, хотя каждому человеку было предложено выбрать хотя бы один раз, когда они доступны. По существу, исходя из доступности каждого человека, фотограф хочет попытаться назначить одного человека каждому доступному временному интервалу в T
, чтобы каждый мог получить их фотографию. Существует ли алгоритм полиномиального времени для решения этой проблемы? Если нет, то какая неполиномиальная временная задача сводится к этой задаче в полиномиальное время, то есть как можно показать, что эта проблема не находится в P
?Алгоритм для поиска уникального набора элементов, по одному элементу из набора наборов
Пример:
фотограф доступен в разы [1, 12, 15, 33, 45, 77]
.
Лицо A доступно порой [12, 33]
.
Лицо B доступно порой [1, 12]
.
Лицо C доступно порой [1, 12]
.
Мы можем сфотографировать всех с выбором:
Person A: 33
Person B: 1
Person C: 12
Если мы должны были начать с выбора A: 12
, B: 1
, мы не смог бы найти место для C
, то есть нам пришлось бы отступить и переназначить А до 33
.
По существу, я ищу алгоритм полиномиального времени, чтобы найти соответствующее назначение времен, если оно существует, и в противном случае можно сообщить, что соответствующего назначения не существует.
Отличный ответ. Число рейнольдса ненулевые «фиктивные» строки, не следует ли их добавлять с 0 затратами (не 2)? Если мы используем 2 в фиктивных строках, то это решение не всегда будет> 0? Принимая во внимание, что если мы используем 0, то 0 всегда будет выбираться для фиктивных строк и просто не влияет на общую стоимость? –
@BryceThomas Да, я думаю, вы правы. Спасибо за указание на это. Я обновлю ответ. –