Układanie ortogonalnego wielokąta za pomocą kwadratów


12

Biorąc pod uwagę ortogonalny wielokąt (wielokąt, którego boki są równoległe do osi), chcę znaleźć najmniejszy zestaw kwadratów wewnętrznie rozłącznych, których zjednoczenie jest równe wielobokowi.

Znalazłem kilka odniesień do nieco innych problemów, takich jak:

Szukam algorytmu minimalnego kafelkowania z kwadratami .


mmm, mogę sobie wyobrazić, że jest to trudne jak na NP. Spróbuję coś sformułować.
Realz Slaw

1
Wersja minimalizująca z dozwolonymi otworami to NP-Hard, ale w przypadku prostokąta podłączonego prostokąta (tzn. Bez otworów) ma algorytm wielomianowy. Jeśli jednak w twoim problemie rozmiary są liczbami całkowitymi i naprawdę masz na myśli minimalną ochronę, a nie minimalną ochronę, wówczas w tym przypadku możliwy jest algorytm wielomianowy.
Parham,

Mmm, potrzebuję dowodu, że minimalne kwadraty będą racjonalnie ustawione i będą miały racjonalne rozmiary; lub nawet więcej, że jeśli wejście ma wielkość całkowitą i jest ustawione na liczbę całkowitą, wówczas minimalne kwadraty również będą (aby zredukować je do SAT). Intuicyjnie przypuszczam, że to prawda, czy masz jakieś pomysły, aby to udowodnić?
Realz Slaw

@MahmoudAlimohamadi: czy możesz podać tytuły / autorów referatów, w których zbadano (i rozwiązano) problem układania prostokątów wielokątów (z otworami lub bez) za pomocą kwadratów
Vor

2
przy okazji, założyłem, że masz na myśli minim um zamiast minim al .
Realz Slaw

Odpowiedzi:


15

Spróbuję pokazać, że ten problem jest trudny do NP, poprzez redukcję z .Płaski3)-SAT


Redukcja z Płaski3)-SAT

Niektóre podstawowe gadżety

Gadżety to wewnętrzne konfiguracje geometrii, które pozwolą nam budować bramki do użytku w obwodzie, do którego zredukujemy .Płaski3)-SAT

Gadżet 4X3

Ten gadżet ma dwa poprawne stany partycji o minimalnej kwadratowej powierzchni :

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Po lewej A gadżet 4X3 . Środkowy i prawy: dwa możliwe stany podziału o minimalnym kwadracie .

Gadżet 5X4

Ten gadżet jest dokładnie taki jak gadżet 4X3 , tylko z większymi wymiarami.

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Po lewej A gadżet 5X4 . Środkowy i prawy: dwa możliwe stany podziału o minimalnym kwadracie .

gadżet punktu końcowego

T.fa

wprowadź opis zdjęcia tutaj

Po lewej: Model szkieletowy gadżetu punktu końcowego . Centrum: prawdziwie wartościowy punkt końcowy. Po prawej: punkt końcowy o fałszywej wartości.

gadżet i-wire

Gadżet i-wire jest skrótem drutu implikacji .

Zasady:

  • 2)2)
  • 3)

Przykład:

wprowadź opis zdjęcia tutaj

72)

Oto jak jest używany:

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Rysunek 8.9 , Left: szkieletowym i-wire w poprzek dwóch punktów końcowych . Po prawej: Unia.

Teraz, jeśli jeden punkt końcowy jest we właściwym stanie, zmusza drugi punkt końcowy do pozycji wypchniętej. Przykład:

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Po lewej: kwadratowy schemat podziału; lewy przełącznik jest w dół, „popycha” wszystkie kwadraty w dół i-wire, a na koniec popycha drugi przełącznik ( punkt końcowy ). Po prawej: kwadratowy schemat podziału; lewy punkt końcowy jest pełny, „popycha” wszystkie kwadraty w dół i-wire i wymusza, aby punkt końcowy po lewej stronie był „w górę”.

ZA¬bZAb

Pozostawia to jednak nieograniczony przypadek:

wprowadź opis zdjęcia tutaj

Jeśli połączymy dwa i-przewody , możemy uzyskać dwukierunkową implikację, zasadniczo boolowską (nie) równość:

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Tak więc dwa i-przewody mogą przenosić pełną relację równości, podobnie jak obwód - w rzeczywistości jest to obwód. Wykorzystamy te pary do zbudowania użytecznego drutu .

l-12)+2)

i-przewody mogą być w razie potrzeby zorientowane.

drut

Przewód składa się parę i-przewodami , które są podłączone do tej samej bramy w każdym punkcie końcowym.

  • W I-przewody są w kolorze czerwonym i zielonym.
  • 3)
  • Każdy bolec bramki będzie miał zielony i czerwony kontakt; przewód musi być prawidłowo podłączony.
  • Niezmienna zasada: jeden i-wire należy popchnąć w przeciwnym kierunku niż drugi i-wire , każda bramka przyjmuje to i upewnia się o tym (chyba że zaznaczono inaczej).
  • Ponieważ każdy drut zawiera dwukierunkową implikację, przenosi wartości od bramki do bramki jak drut w obwodzie.
  • Każdy przewód musi być podłączony do bramki na obu końcach. . W przeciwnym razie może zrujnować założenia niektórych bram, które opisuję, i powyższą niezmienną zasadę; jednak bramy, które mają punkty końcowe na odprowadzeniach, są bezpieczne - możesz podłączyć zbłąkane przewody do tych punktów końcowych, nie martwiąc się o to, że rujnuje bramę.
  • przewody muszą mieć nieparzystej długości, w tym przewody do dowolnego obwodu, do którego się podłącza; jednakże poniżej opiszę nieparzystą bramę, która pozwala na uzyskanie nieparzystego drutu.

Zdjęcia :

wprowadź opis zdjęcia tutaj

Powyżej: A drutu .

wprowadź opis zdjęcia tutaj        wprowadź opis zdjęcia tutaj

Lewy i prawy: Dwa możliwe stany podziału drutu o minimalnym kwadracie . Pamiętaj, że jeśli drut ma tylko tę długość, nie będzie w stanie przesunąć się w prawo ani w lewo i będzie musiał rozbić jeden kwadrat na mniejsze kawałki.

przewody mogą być odpowiednio zorientowane.

bend-gate : Gięcie drutu

wprowadź opis zdjęcia tutaj       wprowadź opis zdjęcia tutaj

Po lewej: widok siatki. Po prawej: widok Unii.

Zwróć uwagę na użycie gadżetu 4X3 . Służy do naprawy czerwonego ołowiu na nieparzystej długości.

Poniżej przedstawiono dwa możliwe stany zgięcia o minimalnej kwadratowej powierzchni :

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Lewy i prawy: Dwa możliwe stany przegięcia drutu o minimalnym kwadracie kwadratowym .

Bramę można ustawić w razie potrzeby. Oczywiście, ta brama może być dublowana, aby działać w innym kierunku.

Skośny drut

Przesunięcie drutu jest łatwe. Ilustracja modelu szkieletowego:

wprowadź opis zdjęcia tutaj

nazwa-bramki-wartości

Nazwanych wartości brama jest w istocie punkt końcowy jako brama ze stykiem jeden drut:

wprowadź opis zdjęcia tutaj

odd-skip-gate : Dziwne pomijanie drutu

Czasami niewygodne jest posiadanie jedynie drutów o nieparzystej długości. Na przykład:

wprowadź opis zdjęcia tutaj

Jak widać, ta odrobina rozszerzenia jest nieco denerwująca. Oto odpowiednie rozwiązanie przy użyciu bramki 4X3 :

wprowadź opis zdjęcia tutaj

Przekształcając to w bramę, otrzymujemy nieparzystą bramę (w ramce):

wprowadź opis zdjęcia tutaj

Bramę można ustawić w razie potrzeby.

twist-gate : skręcanie drutu

Czasami dostajesz czerwone i czarne i-przewody po niewłaściwych stronach do użycia z bramą . W tym przypadku, skręcenia brama jest, aby skręcać czerwone i czarne i-przewody do przeciwległych stron.

Ilustracja modelu szkieletowego:

wprowadź opis zdjęcia tutaj

Przekonaj się, że to działa:

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

ZA

Bramę można ustawić w razie potrzeby.

split-gate : Dzielenie drutu

Podział drutu, szkielet:

wprowadź opis zdjęcia tutaj

Przekonaj się, że to działa:

wprowadź opis zdjęcia tutaj

ZA

wprowadź opis zdjęcia tutaj

ZA

Uwaga: Każdy drut wchodzący i wychodzący z rozdzielacza absolutnie musi się gdzieś podłączyć do punktu końcowego, aby zachować niezmienność. Alternatywnie możesz dodać punkty końcowe do każdej pary odprowadzeń rozdzielacza.

Bramę można ustawić w razie potrzeby.

nie-brama

Brama nie bierze drutu i wysyła drut, który ma odwrotne konsekwencje. Zasadniczo jest to bramka obrotowa, z tą różnicą, że znakuje kolory drutów. Te nie-brama wygląda tak:

wprowadź opis zdjęcia tutaj

I widok dwóch możliwych stanów:

wprowadź opis zdjęcia tutaj         wprowadź opis zdjęcia tutaj

Bramę można ustawić w razie potrzeby.

klauzula

W przypadku klauzuli-bramy najpierw wprowadzamy gadżet klauzuli :

wprowadź opis zdjęcia tutaj

3)

Oto jak wygląda brama:

3)

Wyjaśnienie:

  1. Zacznij od gadżetu klauzul i postępuj zgodnie ze strzałkami.
  2. Brak linii strzałek oznacza, że ​​jest to część obwodu, ale brama nie wprowadza go w stan.
  3. Stan gadżetu klauzuli wymusza ocenę jednego z punktów końcowych jako prawdziwego .

3)-CNF

Bramę można ustawić w razie potrzeby.

Zmniejszenie

Φ(x)Płaski3)-SAT

Φ(x)=jandoja,do={(xjotxkxl)}

Pomoc wizualna (oryginalne źródło: Terrain Guarding to NP-Hard (PDF) , reprodukcja w tikz):

wprowadź opis zdjęcia tutaj

Następnie:

  1. xjaxxja¬xja
  2. Połącz bramki między sobą bramą , aby logicznie negowały wartości.
  3. Umieść wielokąty „bram” zmiennych w ich miejscach w osadzaniu planarnym.
  4. Dla każdej klauzuli umieść bramę klauzuli w miejscu klauzuli w osadzeniu planarnym.
  5. Korzystając z bramek opisanych powyżej, połącz wszystkie zmienne z ich klauzulami.
  6. Uruchom algorytm parowania metodą minimalnych kwadratów na wynikowym połączeniu wszystkich wielokątów bramki (całego obwodu).
  7. Jeśli algorytm zwraca sumę wszystkich rozmiarów stanu bramy o minimalnym kwadracie partycji (odejmując dla współdzielonych narożników), jest to zadowalające. Jeśli nie jest zadowalający, zmusi ograniczony gadżet do podziału na mniejsze kwadraty, zwiększając w ten sposób liczbę kwadratów potrzebną do podzielenia obwodu.

Dlaczego to działa?

  • Każdy gadżet ma rozmiar stanu partycji o minimalnej kwadratowej powierzchni; to znaczy partycja tego gadżetu o minimalnej kwadratowej powierzchni ma określony rozmiar.
  • Niektóre gadżety mają kilka stanów o tym rozmiarze; każdy z tych stanów jest prawidłową partycją o minimalnym kwadracie .
  • Gdy gadżety są łączone tylko w rogach, suma stanów podziału z minimalnymi kwadratami podziału gadżetów jest * nadal minimalnym stanem podziału między nimi; widać to intuicyjnie: łączenie w rogu nie zapewnia wystarczającej przestrzeni dla kwadratu do rozwinięcia / połączenia z kwadratem z innego gadżetu.
  • Podczas łączenia gadżety na rogu nie zmniejsza całkowity rozmiar minimalny kwadratowych partycji , to nie dotyczą i ograniczyć gadżety ze sobą, nawzajem.
  • Z bramkami pokazanymi powyżej, możesz wystarczająco ograniczyć stany, aby jeśli logiczna formuła była niezadowalająca, wówczas jeden lub więcej gadżetów będzie musiał rozbić się na jeszcze mniejsze kwadraty i zwiększyć rozmiar partycji o minimalnym kwadracie .

źródła wykresów

Większe obrazy można także zobaczyć, usuwając przyrostki „s”, „m”, „l” i adresów URL imgur. Na przykład możesz zobaczyć większy obraz tego: http://i.stack.imgur.com/6CKlGs.jpg , przechodząc do http://i.stack.imgur.com/6CKlG.jpg . Zwróć uwagę na brakujące „s” przed .jpg.


3
Wow, to absolutnie imponujące. Niestety nie jestem wystarczająco bystry, aby sprawdzić redukcję, ale wierzę na to :) Dzięki!
Erel Segal-Halevi

1
Tak więc sytuacja w kafelkach jest odwrotna do sytuacji w pokryciu: w pokryciu pokrycie kwadratowe jest wielomianem, a pokrycie prostokątem jest NP-twarde, podczas gdy w kafelkowaniu pokrycie kwadratowe jest NP-twarde, a pokrycie prostokątne jest wielomianowe.
Erel Segal-Halevi


8

N.O(N.3)/2))

„Pokrycie prostokątów wielokątów kwadratami”. LJ Aupperle i HE Conn, JM Keil i Joseph O'Rourke. Proc. 26th Allerton Conf. Commun Control Comput. , ss. 97-106, 1988. ( link do pobrania skanu PDF )

Jednak powstałe pokrycie może obejmować kwadraty, które się pokrywają. Szukasz kafelków, w których kwadraty nie mogą się pokrywać, więc twój problem nie jest taki sam.


lol Byłem w połowie przepisu :(. Bardzo interesujące! Witamy w cs.SE.
Realz Slaw

2
Jeśli dobrze rozumiem, ten papier pozwala na nakładanie się kwadratów (tzn. Jest to problem pokrywający). Interesuje mnie przypadek, w którym kwadraty nie mogą się nakładać (tzn. Jest to problem z podziałem / kafelkami).
Erel Segal-Halevi

@ErelSegalHalevi: Och, przepraszam, nie przeczytałem dokładnie twojego pytania.
Joseph O'Rourke,

2
Och, potem będę kontynuować: D
Realz Slaw
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.