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:
- Pokrycie prostopadłego wielokąta kwadratami - podobnie jak w moim problemie, ale zakrywające kwadraty mogą się pokrywać. Ten problem ma rozwiązanie wielomianowe ( Aupperle, Conn, Keil i O'Rourke, 1988 ; Bar-Yehuda i Ben-Hanoch, 1996 ).
- Układanie płytek / rozkładanie / dzielenie wielokąta ortogonalnego na prostokąty . Ten problem ma rozwiązanie wielomianowe ( Keil, 2000 ; Eppstein, 2009 ).
- Pokrycie ortogonalną wielokąt prostokąty - Problem ten jest znany z NP-zupełny ( Culberson i Reckhow, 1988 ).
Szukam algorytmu minimalnego kafelkowania z kwadratami .
algorithms
computational-geometry
tiling
Erel Segal-Halevi
źródło
źródło
Odpowiedzi:
Spróbuję pokazać, że ten problem jest trudny do NP, poprzez redukcję z .Planar- 3- SAT
Redukcja zPlanar- 3- 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 .Planar- 3- SAT
Gadżet 4X3
Ten gadżet ma dwa poprawne stany partycji o minimalnej kwadratowej powierzchni :
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.
Po lewej A gadżet 5X4 . Środkowy i prawy: dwa możliwe stany podziału o minimalnym kwadracie .
gadżet punktu końcowego
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:
Przykład:
Oto jak jest używany:
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:
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ę”.
Pozostawia to jednak nieograniczony przypadek:
Jeśli połączymy dwa i-przewody , możemy uzyskać dwukierunkową implikację, zasadniczo boolowską (nie) równość:
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 .
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.
Zdjęcia :
Powyżej: A drutu .
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
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 :
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:
nazwa-bramki-wartości
Nazwanych wartości brama jest w istocie punkt końcowy jako brama ze stykiem jeden drut:
odd-skip-gate : Dziwne pomijanie drutu
Czasami niewygodne jest posiadanie jedynie drutów o nieparzystej długości. Na przykład:
Jak widać, ta odrobina rozszerzenia jest nieco denerwująca. Oto odpowiednie rozwiązanie przy użyciu bramki 4X3 :
Przekształcając to w bramę, otrzymujemy nieparzystą bramę (w ramce):
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:
Przekonaj się, że to działa:
Bramę można ustawić w razie potrzeby.
split-gate : Dzielenie drutu
Podział drutu, szkielet:
Przekonaj się, że to działa:
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:
I widok dwóch możliwych stanów:
Bramę można ustawić w razie potrzeby.
klauzula
W przypadku klauzuli-bramy najpierw wprowadzamy gadżet klauzuli :
Oto jak wygląda brama:
Wyjaśnienie:
Bramę można ustawić w razie potrzeby.
Zmniejszenie
Pomoc wizualna (oryginalne źródło: Terrain Guarding to NP-Hard (PDF) , reprodukcja w tikz):
Następnie:
Dlaczego to działa?
ź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
.źródło
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.
źródło