Partycjonowanie prostokąta bez szkody dla wewnętrznych prostokątów

12

do jest prostokątem równoległym do osi.

do1,,dondo1dondo

wprowadź opis zdjęcia tutaj

Prostokąta zachowaniem podziału na jest partycja , tak że The są parami-Wnętrze rozłączne równoległoosiowym prostokąty, a każdy : , tj. każdy istniejący prostokąt jest zawarty w unikalnym nowym prostokącie, takim jak ten:dodo=mi1miN.N.nmijaja=1,,ndojamija

wprowadź opis zdjęcia tutaj

Jaki jest algorytm znajdowania partycji zachowującej prostokąt z małym ?N.

W szczególności, czy istnieje algorytm znajdowania partycji zachowującej prostokąt z częściami ?N.=O(n)

Erel Segal-Halevi
źródło

Odpowiedzi:

4

NOWA ODPOWIEDŹ: następujący prosty algorytm jest asymptotycznie optymalny:

Rozciągnij każdy z prostokątów Ci dowolnie, w maksymalnym możliwym zakresie, tak aby prostokąty pozostały rozłączone parami.

Liczba otworów wynosi co najwyżej k2 . Jest to optymalnie asymptotycznie, ponieważ istnieją konfiguracje, w których liczba otworów wynosi co najmniej kO(k).

Dowody znajdują się w tym dokumencie .


STARA ODPOWIEDŹ:

Poniższy algorytm, choć nie optymalny, najwyraźniej wystarcza do znalezienia partycji zachowującej prostokąt z N=O(n)częściami ) .

Algorytm działa z wielokątem prostoliniowym P , który jest inicjowany do prostokątaC .

Etap 1: Wybierz prostokąt Ci który przylega do zachodniej granicy P. (to znaczy nie ma żadnej innej prostokąt dojot między zachodniej części doja i zachodnim brzegu P. ). Miejsce doja w ciągu P. i naciągnąć go aż dotknie zachodniej granicy P. . Niech mija (dla ja=1,,n ) będzie rozciągniętą wersją doja . Niech P.=P.mija. Powtarzaj fazę 1 n razy, aż wszystkie n oryginalnych prostokątów zostaną umieszczone i rozciągnięte. Na poniższym zdjęciu możliwa kolejność umieszczania prostokątów to do1,do2),do4,do3) :

wprowadź opis zdjęcia tutaj

Teraz P. jest wielokątem prostoliniowym (prawdopodobnie odłączonym), jak poniżej:

wprowadź opis zdjęcia tutaj

Twierdzę, że liczba wklęsłych wierzchołków w P. wynosi co najwyżej 2)n . Dzieje się tak, ponieważ ilekroć rozciągnięty prostokąt zostanie usunięty z P. , istnieją 3 możliwości:

  • Dodaje się 2 nowe wierzchołki wklęsłe (np. Podczas umieszczania do1,do4 );
  • Dodano 3 nowe wklęsłe wierzchołki i 1 usunięto (podobnie jak przy pomocy do3)
  • Dodano 4 nowe wklęsłe wierzchołki i 2 usunięto (jak w przypadku do2) ).

P. na prostokąty równoległe do osi przy użyciu istniejącego algorytmu (przegląd: Keil 2000, strony 10-13 i Eppstein 2009, strony 3-5 ).

2)n+1N.3)n+1


N.=13N.=5

A. Czy ten algorytm jest poprawny?

N.

Erel Segal-Halevi
źródło
Cóż, w fazie 1 dodajesz komórki partycji, z których każda zawiera dokładnie jeden początkowy prostokąt i nie nakłada się na inny. W fazie 2 dzielisz pozostałą przestrzeń, aby komórki utworzone w fazie 2 nie przecinały początkowego prostokąta. Dowód poprawności wydaje się raczej prosty, czy coś przeoczyłem?
Boson,
2)n