Розбиття прямокутника без шкоди для внутрішніх прямокутників


12

C - вісь-паралельний прямокутник.

C1,,Cn - попарно-роз'єднані між собою осі-паралельні прямокутники, такі, що , як це:C1CnC

введіть тут опис зображення

Прямокутник , що зберігає розбиття на C розбиття C=E1EN , таким чином, що Nn , то Ei попарно-салону непересічною осі паралельних прямокутників, і для кожного i=1,,n : CiEi , тобто кожен існуючий прямокутник міститься в унікальному новому прямокутнику, наприклад:

введіть тут опис зображення

Що таке алгоритм пошуку перегородки, що зберігає прямокутник, з невеликим N ?

Зокрема, чи існує алгоритм пошуку перегородки, що зберігає прямокутник, з N=O(n) частинами?

Відповіді:


4

НОВИЙ ВІДПОВІДЬ: наступний простий алгоритм є асимптотично оптимальним:

Розтягніть кожен прямокутник довільно, максимально можливою мірою, щоб прямокутники залишалися попарно-неперервними.Ci

Кількість отворів становить не більше . Це асимптотично оптимально, оскільки існують конфігурації, в яких кількість отворів принаймні .k2kO(k)

Докази є в цій роботі .


СТАРИЙ ВІДПОВІДЬ:

Наступний алгоритм, хоча і не є оптимальним, очевидно, достатній для пошуку перегородки, що зберігає прямокутник, з частинами.N=O(n)

Алгоритм працює з прямолінійним многоугольником , який инициализирован в прямокутнику .PC

Фаза 1: Виберіть прямокутник який примикає до західної межі (тобто немає іншого прямокутника між західною стороною та західною межею ). Місце в і розтягувати його , поки він не торкнеться західна кордону . Нехай (для ) - розтягнута версія . Нехай . Повторіть фазу 1 разів, поки всіCiPCjCiPCiPPEii=1,,nCiP=PEinnоригінальні прямокутники розміщуються і розтягуються. На зображенні нижче можливим порядком розміщення прямокутників є :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+1N3n+1


Цей алгоритм не є оптимальним. Наприклад, у наведеному вище прикладі дається тоді як оптимальне рішення має . Тож залишаються два питання:N=13N=5

А. Чи правильний цей алгоритм?

В. Чи існує поліноміально-часовий алгоритм пошуку оптимального , або, принаймні, кращого наближення?N


Добре, що на фазі 1 ви додаєте комірки розділів, кожна з яких містить рівно один початковий прямокутник і не перекривається іншою. На фазі 2 ви розділяєте решту простору, тому комірки, створені у фазі 2, не перетинають жоден з початкових прямокутників. Доказ коректності здається досить простим, чи я щось пропустив?
Босон

@Boson, в чому я не впевнений, що кількість увігнутих вершин не більше . Здається "очевидним", що є лише 3 можливості, як я писав, але я, можливо, пропустив якусь іншу можливість. 2n
Ерел Сегал-Халеві
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.