Kodeks Hash 2015 Okrągły testowania Google ( oświadczenie problemem ) poprosił o następującym problemem:
- dane wejściowe: siatka z zaznaczonymi kwadratami, próg , maksymalny obszarT ∈ N A ∈ N
- Wydajność: największa powierzchnia całkowita zestawu rozłącznych prostokątów o współrzędnych całkowitą w tak, że każdy prostokąt zawiera co najmniej oznaczone prostokątem pola, a każdy ma powierzchnię co najwyżej .T A
W terminologii Google siatka to pizza, zaznaczone kwadraty to szynka, a rozłączne prostokąty to plasterki.
Możemy wyraźnie przeformułować ten problem na problem decyzyjny, dodając dodatkowe dane wejściowe i niech odpowiedź brzmi „czy istnieje zestaw rozłącznych prostokątów spełniających warunki, których łączna powierzchnia wynosi co najmniej n kwadratów”.
Moje pytanie: podczas gdy problem Google wymagał od kandydatów znalezienia rozwiązania, które jest „tak dobre, jak to możliwe” dla problemu obliczeniowego w konkretnym przypadku, myślę, że prawdopodobnie ogólny problem (w jego sformułowaniu decyzji) jest NP-kompletny. Nie mogę jednak znaleźć redukcji pokazującej twardość NP. (Członkostwo w NP jest natychmiastowe.) Jak udowodnić, że ten problem jest trudny w NP?
Poniżej podano kilka przykładów, które pomagają zwizualizować problem. Rozważ siatkę na 4 { 0 , 1 , 2 , 3 } × { 0 , 1 , 2 , 3 } , z zaznaczonymi kwadratami ( 1 , 1 ) , ( 0 , 2 ) i ( 2 , 2 ) , reprezentowanymi graficznie za pomocą aby zaznaczyć oznaczone kwadraty:X
..X.
.X..
..X.
....
Ustaw (prostokąty co najwyżej 6 kwadratów) i T = 1 (co najmniej jeden zaznaczony kwadrat na prostokąt), optymalnym rozwiązaniem (obejmującym całą siatkę) jest przyjęcie następujących prostokątów:
aaAa
bBcc
bbCc
bbcc
Na poniższej siatce, przy i T = 2 :
XXX
.X.
...
Nie można zrobić nic lepszego niż pokrycie tylko trzech kwadratów:
AAA
.X.
...
lub
XBX
.B.
.b.
(pamiętaj, że prostokąty w partycji nie mogą się pokrywać).
Gdy inni ludzie patrzyli na to pytanie, próbowaliśmy redukcji z pakowania pojemników, obejmujących problemy, cykle 3-SAT i hamiltonowskie, i nie udało nam się zdobyć jednego do pracy.