Dlaczego niektóre gry są kompletne?

50

Przeczytałem wpis w Wikipedii na temat „ Listy problemów z NP-complete ” i odkryłem, że gry takie jak Super Mario, Pokemon, Tetris lub Saga Crush Candy są na przykład kompletne. Jak mogę sobie wyobrazić np. Kompletność gry? Odpowiedzi nie muszą być zbyt precyzyjne. Chcę tylko uzyskać przegląd tego, co oznacza, że ​​gry mogą być na przykład kompletne.

racc44
źródło
4
Zobacz pytanie referencyjne dotyczące kompletności NP. Myślę, że twoje pytanie jest zbyt szerokie na format wymiany stosów.
Kyle Jones,
5
W Minecrafcie możesz stworzyć ... no cóż ... komputer ... działający ... Minecraft?
djsmiley2k - CoW
4
Budowanie kalkulatorów za pomocą kart Magic: the Gathering. Świetna zabawa :-)
Mast
Nie jest to do końca odpowiedź na pytanie, które zadajesz, ale jest tak ściśle powiązane, że należy zwrócić uwagę: znany projektant gier (i zwolennik formalnych metod projektowania gier) Raph Koster wysunął teorię, że złożoność obliczeniowa gier ma zasadnicze znaczenie dla ciągłego korzystania z nich. Definiuje „zabawę” jako zasadniczo odpowiedź na naukę poprawiania wydajności trudnego zadania w niezagrażającym środowisku i zwraca uwagę, że kontynuowanie tego w ograniczonym systemie, takim jak gra, polega na tym, że system ten ma wzorce zachowań. ..
Jules,
... trudne lub niemożliwe do całkowitego przewidzenia wystarczająco szybko, aby wykorzystać te prognozy, co zmusza nas do uczenia się w mniej bezpośredni sposób (zwykle przy użyciu heurystyki). Problemy o dużej złożoności (często sugeruje NP Hard) są najbardziej niezawodnym sposobem generowania takich wzorców zachowań, co (jeśli ma rację) prawdopodobnie jest powodem, dla którego pojawiają się one w tak wielu dobrze znanych grach. Zobacz te slajdy konferencyjne i tę książkę, aby uzyskać więcej.
Jules

Odpowiedzi:

72

Oznacza to po prostu, że możesz tworzyć poziomy lub puzzle w tych grach, które kodują problemy NP-Hard. Możesz rozwiązać problem z kolorem wykresów, utworzyć powiązany poziom Super Mario Bros., a ten poziom jest do pokonania tylko wtedy, gdy wykres jest trójkolorowy.

Jeśli chcesz zobaczyć konkretny sposób NP-complete problemy są przeliczane na grach, polecam papier „Klasyczne Gry Nintendo są (obliczeniowo) Dysk” . Jest dobrze napisany i łatwy do naśladowania.

Ważnym zastrzeżeniem, o którym należy pamiętać, jest to, że twardość NP wymaga uogólnienia gier w „oczywisty” sposób. Na przykład Tetris zwykle ma planszę o stałym rozmiarze, ale dowód na twardość wymaga, aby gra pozwalała na dowolnie duże plansze. Innym przykładem są wrogowie spoza ekranu w Super Mario Bros: dowodem jest wariant gry, w którym wrogowie spoza ekranu nadal poruszają się, jakby byli na ekranie, zamiast przestać istnieć i powrócić do pozycji wyjściowej, gdy Mario wróci .

Craig Gidney
źródło
4
Sama nie jest warta odpowiedzi, ale poniżej znajduje się fajny wykład wideo: course.csail.mit.edu/6.890/fall14/lectures/L05.html - Wyraźne wyjaśnienia.
user340082710
4
Być może warto zawrzeć precyzyjne twierdzenie twierdzenia z (niezwykle interesującego!) Artykułu, który połączyłeś, które zwięźle i dokładnie wyjaśnia, co to znaczy powiedzieć, że gra jest trudna NP: trudno jest zdecydować, czy cel jest osiągalny od początku etapu w uogólnionym Super Mario Bros
ymbirtt
być może niezwiązane, ale z najnowszymi grami Pokemon (Słońce i Księżyc) dowód w tym artykule nie jest już prawdziwy (przynajmniej taki, jaki jest), ponieważ trenerzy wroga nie zbliżają się już do gracza, aby z nimi walczyć.
simonalexander2005
2
Aby ukończyć NP, musisz zarówno zakodować problemy NP-Hard, jak i być w NP. W powyższej odpowiedzi brakuje drugiej klauzuli.
Jak
Chociaż odpowiedź ta jest technicznie dobra, to czy naprawdę uwidacznia problem komuś, kto jest na tyle nieświadomy, że zadał pytanie w pierwszej kolejności? Naprawdę nie sądzę, żeby to
zrobiło
20

Szczerze mówiąc, nie wiem dokładnie, jakiego rodzaju modelu używają ludzie zgłaszający te twierdzenia; Jednak to, co wydaje się rozsądne, aby mnie byłoby mówić o -completeness decydowania coś o sytuacji w grze.N.P.

Weźmy jako przykład Tetris, ponieważ jest to jedyny z tych, które cytujesz, o których rozumiem wystarczająco dużo, aby mówić. Tetris ma zasadę zwaną „idealnie czyste”, która daje graczowi dużą premię, jeśli upuszczenie pionka całkowicie wyczyści planszę. Można się zastanawiać, czy przy uporządkowanej sekwencji elementów i liczbie całkowitej k istnieje prawna sekwencja ruchów dla części P, która osiąga co najmniej k idealnych wartości. Takie stwierdzenia problemów są wystarczająco abstrakcyjne, aby można je było modelować za pomocą narzędzi teorii złożoności.{P.ja}kP.k

Krótko mówiąc, „ -Complete” oznacza jedno i tylko jedno, fantazyjne roszczeń, takie jak „Super Mario jest N P -Complete” muszą być przetłumaczone na język formalnego oświadczenia przed podjęciem jakiegokolwiek rzeczywistego sensu.N.P.N.P.

szybkie sortowanie
źródło
1

Oto proste objaśnienie machania ręką:

O(nlog(n))

Takie gry są trudne dla NP, ponieważ zachowanie gracza jest bardzo ekspresyjne. Podczas gdy w danym momencie gracz może mieć tylko ograniczoną, a nawet stałą liczbę możliwych akcji, to wystarczy, aby stworzyć przestrzeń zachowań lub strategii wykładniczych w długości gry; i chociaż możesz być w stanie podać prosty warunek lub logiczną formułę ważności / korzyści / poprawności działań gracza lokalnie, na całym świecie uzyskujesz podobny efekt jak w przypadku dużego obwodu kombinatorycznego lub formuły k-CNF.

Mam nadzieję, że ma to jakiś intuicyjny sens, a także wystarczającą ilość dzwonków teorii CS.

PS - Niektóre gry są znacznie bardziej złożone (obliczeniowo). Na przykład gry planszowe Hex , Go i Reversi są kompletne z PSPACE. Jest tak zasadniczo dlatego, że formuła, którą musisz spełnić, aby wygrać strategię, to formuła kwantyfikatora o naprzemiennym naprzemiennym działaniu: istnieje ruch gracza 1, taki że dla każdego ruchu gracza 2 istnieje ruch gracza 1 itd. Itp. tak, że po wykonaniu wszystkich tych ruchów, niektóre ruchy gracza 2 są nieprawidłowe lub mamy prawidłową sekwencję, którą gracz 1 wygrał. W grach NP jest to zazwyczaj zachowanie jednego gracza / strategia / wybór ruchów.

einpoklum - przywróć Monikę
źródło
„Mam nadzieję, że ma to jakiś intuicyjny sens” - nie dla mnie ...
Raphael
1

W przypadku gier dla jednego gracza zawsze możesz zadać pytanie: „czy istnieje strategia wygrywająca dla gracza”, a pytanie to często zawiera odpowiedź „TAK”, którą można zweryfikować w czasie wielomianowym, i może być bardzo kompletna.

W przypadku gier dwuosobowych odpowiedzi bardzo często nie można zweryfikować w czasie wielomianowym, ponieważ aby zweryfikować, że ruch dla A jest ruchem wygrywającym, musisz wykazać, że dla każdej odpowiedzi B będzie znowu ruch wygrywający dla A i wkrótce.

gnasher729
źródło
0

Cóż, z pewnością jest w NP, ponieważ możliwym rozwiązaniem jest po prostu skończona liczba danych wejściowych (w każdej ramce wejściowej możesz wybrać dowolny z przycisków k, reprezentujemy każdy wybór przycisków dla każdej ramki za pomocą litery), która prowadzi do ekran wygranej. Wiemy, że ta gra została wcześniej pokonana, więc wiemy, że istnieje rozwiązanie. NTM przegląda taśmę i magicznie zgaduje prawidłowy certyfikat długości n. Następnie symuluje Super Mario z danymi wejściowymi i weryfikuje je. Weryfikacja może być przeprowadzona w czasie wielomianowym (faktycznie czas liniowy, jeśli rozwiązanie jest poprawne, zwycięstwo zajmie dokładnie n klatek).

Aby pokazać kompletność NP, moglibyśmy zredukować do niej 3-SAT, budując kontroler 3-Sat z generatorem poziomu (który jest zbudowany przez wykonanie dowolnego kodu https://www.youtube.com/watch?v=IOsvuEA2h4w ).

Mamy więc wejście CNF 3-SAT, które najpierw sprawdzamy poprawność formatowania. Jeśli jest źle sformatowany, po prostu tłumaczymy go na jedno wejście „skokowe” (nie można pokonać Super Mario w jednej klatce wykonując skok).

Długość wejścia 3-CNF nazywamy n.

Jeśli jest poprawnie sformatowany, tłumaczymy go na szereg danych wejściowych, które budują dla nas sprawdzanie 3-CNF (zawsze ten sam kod długości k), tłumaczą 3-CNF na ciąg danych wejściowych, który buduje specyficzne 3- CNF w kontrolerze (w O (n)) i sprawdza wszystkie możliwe rozwiązania za pomocą brutalnej siły. Nie pracuje i nic nie robi, jeśli po przejściu wszystkich rozwiązań nie zostanie znalezione żadne. Ponownie uruchamia grę i używa znanego rozwiązania dla Super Mario do pokonania gry (kod do wykonania tego ma długość j). Nasza transformacja odbywa się zatem w O (n), więc mieści się w czasie wielomianowym.

Jeśli CNF jest źle sformatowany, nie wygrywamy (z definicji nasz wkład nie wygrywa, jeśli nie wygraliśmy jednej klatki po jego wykonaniu). Jeśli CNF nie jest satysfakcjonujący, nie wygrywamy (nie możesz wygrać, pracując bezczynnie dla jednej ramki w generatorze poziomów, zapewniliśmy to w naszym kodzie). Jeśli CNF jest zadowalający, kontroler stwierdzi, że rozwiązanie uruchamia się ponownie i wygrywa grę. Zatem wielomianowa redukcja 3-Sat do Super Mario jest kompletna i udowodniliśmy, że Super Mario jest NP-zupełny.

(Mam nadzieję, że gdzieś tego nie pomieszałem. Mamy problem z przechowywaniem, jeśli 3-CNF jest zbyt długi, ale ograniczone przechowywanie jest zwykle ignorowane w tych kontekstach)

David
źródło
„Cóż, na pewno jest to w NP, ponieważ możliwe rozwiązanie jest po prostu skończoną liczbą danych wejściowych”. Bycie w NP wymaga, aby rozwiązanie było ograniczone wielomianowo wielkością danych wejściowych. Samo bycie skończonym nie wystarczy.
David Richerby,
0

Przepisałem tę odpowiedź, aby spróbować odnieść się do komentarzy na temat poprzedniej wersji.

Zakładam, że przeczytałeś definicję Wikipedii dotyczącą kompletności NP, która tak naprawdę nie koncentruje się na grach. Rozetrę trochę znaczenie dokładności NP i teorii gier i wyjaśnię istotę gry NP-Complete.

Rozważmy grę dla dwóch graczy z naprzemiennymi ruchami, bardziej restrykcyjnie dotyczy to głównie gier kombinatorycznych . Zasadniczo gra, w której masz pewną liczbę ruchów, które można wykonać i musisz wybrać jeden z nich. Chciałbyś grać „idealnie”, co oznacza, że ​​nigdy nie zrobiłbyś „złego” ruchu. Więc spośród dozwolonych ruchów chcesz wybrać najlepszy. (Oczywiście twój przeciwnik ma ten sam cel ...)

Pamiętaj, że idealna gra nie oznacza, że ​​zawsze wygrasz. Zasady gry mogą być takie, że pierwszy lub drugi gracz powinien wygrać. Również niektóre gry, takie jak kółko i krzyżyk, powinny zakończyć się remisem. Zatem „idealna gra” oznacza w tej dyskusji:
(1) Że nigdy nie będziesz na wygranej pozycji, a następnie przegrasz grę, ponieważ wykonałeś „zły” ruch
(2) Nigdy nie przegapisz okazji, aby zdobyć do zwycięskiej pozycji, jeśli pojawi się taka możliwość.

Biorąc pod uwagę obecny stan gry, chciałbyś użyć „wydajnego algorytmu” do obliczenia najlepszego ruchu. Z drugiej strony zauważmy, że algorytm, który musi przeszukiwać całe drzewo gry, jest „nieefektywnym algorytmem”.

dobnT.


  • T.zabza+bbα-1+dobα-2)+...+hb0
    α

  • T.zabn
    n

Ważną kwestią jest to, że nie można mieć wydajnego algorytmu, czasu wielomianowego, który doskonale sprawdza się w grze, która jest kompletna NP. Aby grać doskonale, problem NP-zupełny musi być z definicji rozwiązany przez nieefektywny algorytm działający w czasie niepolarnym.

Należy pamiętać, że czas wykonywania zależy od wewnętrznej liczby obliczeń, a nie czasu reakcji postrzeganego przez człowieka. W przypadku małej gry, takiej jak kółko i krzyżyk, komputer może odtwarzać wszystkie możliwe przyszłe ruchy i nadal szybko reagować w sposób postrzegany przez człowieka.

Dla Nima możliwe jest utworzenie algorytmu wielomianowego czasu. W dowolnym momencie gry algorytm może obliczyć, który gracz ma zwycięski ruch i jaki powinien być ten ruch.

Z drugiej strony weźmy grę Qubic . (Próbujesz utworzyć linię 4 na siatce 3D. Więc jest to zasadniczo kółko i krzyżyk na siatce 4x4x4). Qubic jest NP-kompletny, więc nie ma algorytmu wielomianu czasowego do obliczenia następnego idealnego ruchu. Jedynym sposobem, aby dowiedzieć się, czy obecnie wygrywasz, jest wypróbowanie wszystkich możliwych ruchów obu graczy, aby sprawdzić, czy dany ruch jest zwycięzcą, a przynajmniej przegranym.

Prawdę mówiąc, całe drzewo gry w Qubic jest na tyle małe, że można je zakodować w programie komputerowym, który może grać doskonale. Kodowanie oznacza, że ​​całe drzewo gry zostało zbadane, a wszystkie ruchy opracowane wcześniej. Tak więc program może zasadniczo wykonać szybkie wywołanie bazy danych przy użyciu bieżącego stanu tablicy i odzyskać najlepszy ruch dla tego stanu tablicy bez konieczności wyszukiwania drzewa za każdym razem, gdy ma zostać wykonany ruch. To jest naprawdę „oszustwo” dla naszych celów tutaj.

Porozmawiajmy teraz o szachach, aby omówić funkcję oceny, ignorując niektóre inne funkcje programów do gry w szachy. Szachy to wciąż nierozwiązana gra . Nie wiadomo, czy pierwszy lub drugi gracz powinien wygrać. Niemożliwe jest przyznanie żadnej pozycji na planszy i przewidzenie z pewnością, kto wygra. W rzeczywistości szachy mają tak duże drzewo gry, że przeszukiwanie całego drzewa gry jest po prostu niemożliwe. Potrzebujesz komputerów, które są nie tylko 10 lub 100 razy szybsze, ale miliardy miliardów czasu szybciej niż jakikolwiek inny komputer. (Istnieje nadzieja, że obliczenia kwantowe mogłyby przeciąć ten węzeł gordyjski).

Pomyśl o funkcji oceny szachowej, która daje każdemu możliwemu następnemu ruchowi prawdopodobieństwo bycia najlepszym ruchem. Program szachowy polega na połączeniu perspektyw z funkcją oceny. W ten sposób program analizuje wszystkie możliwe przyszłe ruchy, aż dojdzie do punktu, w którym „dobry” wynik może zostać przyznany pozycji tablicy. Komputer ocenia w ten sposób wszystkie możliwe ścieżki przez drzewo, a następnie wybiera ścieżkę z najlepszym wynikiem. Ponieważ wyszukiwanie nigdy nie zakończyło się oceną wszystkich ocenianych ścieżek, wszystkie programy szachowe ostatecznie używają niedoskonałej funkcji oceny. (Jeśli zbliżasz się do końca gry, komputer może być w stanie spojrzeć na wszystkie możliwe przyszłe ruchy.) Oznacza to, że można pokonać program, nawet jeśli program miał kiedyś wygraną.

Max
źródło
„jest / niemożliwe / mieć skuteczny algorytm, czas wielomianowy, dla gry, która jest NP-zupełna. Problem NP-zupełny z definicji musi zostać rozwiązany przez nieefektywny algorytm działający w czasie niepolarnym”. - To nie jest poprawne. Nie wiadomo, czy możliwe jest rozwiązanie problemów związanych z całkowitą NP w czasie wielomianowym: większość badaczy zdecydowanie oczekuje, że odpowiedź brzmi „nie”, ale nie wiemy tego na pewno i nie jest to z definicji. Zachęcam do poświęcenia więcej czasu na czytanie faktycznej definicji NP-complete. Niektóre zasoby można znaleźć na tej stronie oraz w Wikipedii.
DW
@DW - Tak, nieco stępiłem odpowiedź. Powiedziałem to w pierwszym akapicie. Jeśli przeczytałeś poniższy fragment Qubic, wyjaśniłem również, w jaki sposób można zastosować algorytm wielomianowy do „małej” gry. Próbowałem udzielić odpowiedzi, której OP nie zrozumiałby, nie pisząc książki o NP-kompletności i teorii gier.
MaxW
@@ DW - Przyszło mi do głowy, że domyślam się, że domyślam się idealnej gry. Wyraźnie dodałem tę kwalifikację.
MaxW