Проблема с загрузкой парома

У меня возникли трудности с недооцененной алгоритмической проблемой:

В порту стоит трехполосный паром и перед ним очередь из N автомобилей. Каждый из них имеет указанную длину в см. Мы также знаем длину (L) парома. Нам необходимо предложить алгоритм, позволяющий загрузить паром максимальным количеством автомобилей из очереди. Каждая машина может выбрать одну из трех полос движения: левую, центральную или правую. Автомобили должны обрабатываться по порядку - для каждого автомобиля (начиная с переднего) мы должны решить, по какой полосе он будет двигаться. Если не хватает свободного места для машины, находящейся в начале очереди на момент финиша. Остальные машины ждут следующего парома.

Жадный метод (первое соответствие) не является самым эффективным в каждом случае (например, если L равно 5 и у нас есть очередь 5 2 2 3 3). Таким образом, я пытался выяснить, каково решение, если мы будем думать об этом как о проблеме динамического программирования. Тем не менее, я пытаюсь найти любой, но все известные мне динамические алгоритмы (особенно из Введение в алгоритмы) не подходят для этой проблемы.

Заранее благодарим вас за любые предложения. :)


person Teodore    schedule 03.08.2011    source источник
comment
Знаете ли вы, сколько автомобилей в вашем q и какова их длина? Или вы знаете только то, что в данный момент вам нужно, чтобы соответствовать этому?   -  person Jeroen    schedule 03.08.2011
comment
Да, я знаю, сколько машин стоит в очереди и какова их длина.   -  person Teodore    schedule 03.08.2011


Ответы (1)


Во-первых, обратите внимание на сходство между этой задачей и задачей о рюкзаке, проблема с разделами и проблема с упаковкой в ​​корзину.

Это предполагает решение для динамического программирования с псевдополиномиальным временем. В каждой из этих задач мы отслеживали оптимальное решение для рюкзака каждого размера меньше интересующего нас. В этом случае наши рюкзаки — это три полосы. Теперь я надеюсь, что алгоритм еще не слишком далек от вашего ума.

Я не собираюсь давать вам полный ответ, так как это проблема из UVa Online. Судья. Однако я надеюсь, что это поставит вас в правильном направлении. Существует много информации о том, как решить проблемы, связанные с рюкзаком.

person tskuzzy    schedule 03.08.2011
comment
Ну, я не знал, что это проблема любого соревнования. Я знаю о проблеме рюкзака, проблеме с перегородкой, а также о проблеме с упаковкой в ​​мусорное ведро, но это мне пока не помогло. Кажется, я должен сдаться - я уже неделю думал над решением и нахожусь в той же точке, что и в начале. В любом случае, спасибо за все предложения. - person Teodore; 04.08.2011