НОВИЙ ВІДПОВІДЬ: наступний простий алгоритм є асимптотично оптимальним:
Розтягніть кожен прямокутник довільно, максимально можливою мірою, щоб прямокутники залишалися попарно-неперервними.Ci
Кількість отворів становить не більше . Це асимптотично оптимально, оскільки існують конфігурації, в яких кількість отворів принаймні .k−2k−O(k−−√)
Докази є в цій роботі .
СТАРИЙ ВІДПОВІДЬ:
Наступний алгоритм, хоча і не є оптимальним, очевидно, достатній для пошуку перегородки, що зберігає прямокутник, з частинами.N=O(n)
Алгоритм працює з прямолінійним многоугольником , який инициализирован в прямокутнику .PC
Фаза 1: Виберіть прямокутник який примикає до західної межі (тобто немає іншого прямокутника між західною стороною та західною межею ). Місце в і розтягувати його , поки він не торкнеться західна кордону . Нехай (для ) - розтягнута версія . Нехай . Повторіть фазу 1 разів, поки всіCiPCjCiPCiPPEii=1,…,nCiP=P∖Einnоригінальні прямокутники розміщуються і розтягуються. На зображенні нижче можливим порядком розміщення прямокутників є :C1,C2,C4,C3
Тепер - прямолінійний багатокутник (можливо, відключений), наприклад:P
Я стверджую, що кількість увігнутих вершин у не більше . Це тому, що щоразу, коли розтягнутий прямокутник буде видалено з , є 3 можливості:P2nP
- Додано 2 нові увігнуті вершини (наприклад, при розміщенні );C1,C4
- 3 нові увігнуті вершини додаються і 1 видаляється (як при );C3
- Додано 4 нові увігнуті вершини та 2 видалено (як, наприклад, ).C2
Фаза 2: Розділ у прямокутні прямокутники з використанням наявного алгоритму (див. Keil 2000, стор. 10-13 та Eppstein 2009, сторінки 3-5 для огляду).P
Кейл цитує теорему, яка говорить про те, що кількість прямокутників у мінімальній перегородці обмежено 1 + кількістю увігнутих вершин. Отже, у нашому випадку число становить не більше , а загальна кількість прямокутників у розділі дорівнює .2n+1N≤3n+1
Цей алгоритм не є оптимальним. Наприклад, у наведеному вище прикладі дається тоді як оптимальне рішення має . Тож залишаються два питання:N=13N=5
А. Чи правильний цей алгоритм?
В. Чи існує поліноміально-часовий алгоритм пошуку оптимального , або, принаймні, кращого наближення?N