Хорошо, давайте немного упростим / конкретизируем. Предположим, что наши машины представляют собой единичные квадраты, автостоянка 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 -> бесконечности. (В некотором роде скучно, я надеялся, что какой-нибудь узор в виде дерева будет лучше.)