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

StackOverflow https://stackoverflow.com/questions/2828954

Вопрос

Какие алгоритмы (грубой силой или нет) я использовал, чтобы поставить в размере столько машин (предположим, что все автомобили такие же размер) на парковке, так что есть хотя бы один выход (из контейнера), а автомобиль не может быть заблокирован. Или кто-то может показать мне пример этой проблемы, решающуюся программно.

Парковка варьируется в форме, была бы хорошая, но если вы хотите предположить, что это какая-то инвариантная форма, которая в порядке.

Другим редактированием: предположим, что расстояние вождения на стоянке не является фактором (хотя было бы совершенно потрясающе, если бы он был взвешенным фактором на количество автомобилей в лотере).

Еще одно редактирование: предположим 2 мерных (без кранов или езды на автомобилях).

Другим редактированием: Вы не можете перемещать автомобили, как только они припаркованы (это не валетная парковка).

Это было полезно?

Решение

Ну, давайте упростим / бещу немного. Предположим, что наши автомобили являются единичными квадратами, парковка N X N, и нам нужно ввести / выйти из нижнего левого угла. Простой шаблон получает лот почти 2/3 полный автомобиль (показано для n = 12):

+------------+
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
|C CC CC CC C|
             |
  -----------+

Я могу доказать, что лучшее, что вы можете сделать, это получить лот 2/3. Представьте, что вы создаете пустые пробелы, начиная с совершенно полного гаража и вырванию (в настоящее время доступной) автомобиль один за раз. Каждый раз, когда вы удаляете автомобиль, вы производите до 3 недавно доступных автомобилей и удалите одну один раз - только автомобиль (теперь пустое пространство). Так что для каждого места вы делаете, вы создаете не более 2 доступных автомобилей. Чтобы сделать 2/3 n ^ 2 доступных автомобилей, вам нужно сделать не менее 1/3 N ^ 2 пробелов, и это все квадраты, которые у вас есть. Таким образом, вы можете заполнить гараж максимум 2/3 полно.

Простой шаблон выше является асимптотически оптимальным, поскольку его плотность приближается к 2/3 как n -> бесконечности. (Вроде скучно, я надеялся, что немного дерево выглядящий рисунком будет лучше.)

Другие советы

Это в основном эквивалентно Bin-Packing, С добавленной потребностью о том, что выход будет в определенном месте, и все автомобили могут выйти - что сама тяжелая проблема!

Таким образом, ваша проблема по крайней мере NP-труда.

Это ваше определение эффективности наибольшее количество парковочных мест в большом количестве данного размера и формы (предполагая, что каждый автомобиль может быть изгнан, не перемещая какой-либо другой автомобиль)? Если это так, это проблема упаковки, а не проблема рюкзака, и она звучит мне в NP, но диапазон решений для любого реального мира настолько мал, он может быть решен с практическим исчерпывающим поиском.

Я думаю, что это может быть технически NP завершено. Но я думаю, что вы могли бы разработать интеллектуальный набор решений, каждое из которых укрепило опыт с последним, и алгоритмически выбирают лучшее решение из рассчитанного набора. Вы не сможете доказать, что это самое лучшее решение. Но с практической точки зрения у вас есть оптимизированная парковка, так что это действительно имеет значение, что дает бесконечное количество времени, которое вы бы сжимали еще 3 машины?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top