Tetris ist NP

Transcription

Tetris ist NP
Tetris ist NP-vollständig
Vortrag zum Seminar über Algorithmen SS2007
von Dietmar Mühmert
Das Spiel Tetris
●
●
●
●
Tetris wurde Mitte der 80er Jahre von dem
russischen Mathematiker Alexei Paschitnow
erfunden.
Ziel des Spiels ist es, herab fallende Bausteine
so in einem Rechteck zu stapeln, dass dabei
ganze Zeilen gefüllt werden.
Das Spiel endet, sobald der nächste Baustein
nicht mehr auf das Spielfeld passt.
Man kann Tetris quasi nie gewinnen!
Tetrominos
●
●
●
7 verschiedene Teile
Alle bestehen aus 4
Feldern
Teile können rotiert
und vertikal
verschoben werden
Das Spielfeld
●
●
●
Ein Gitter von m Zeilen
und n Spalten.
●
Indiziert wird von unten
nach oben, von links
nach rechts.
●
Ein Feld <i,j> im Gitter ist
entweder gefüllt oder
leer.
●
Ein gültiges Spielfeld hat
keine komplett gefüllten
Zeilen.
Es gibt keine komplett
leeren Zeilen unterhalb
eines gefüllten Feldes.
Gefüllte Zeilen werden
entfernt und die Zeilen
oberhalb fallen nach
unten.
Zustand eines Bauteils
●
Der Zustand eine Bauteils ist ein 4-Tupel
P = <t, o, <i,j>, f>
●
der Typ t ∈ {Sq, LG, RG, LS, RS, I, T}
●
die Orientierung o ∈ {0°, 90°, 180°, 270°}
●
die Position <i,j> ∈ {1, ..., m} × {1, ..., n}
●
der Wert f ∈ {fixed, unfixed}
●
Rotationsfunktion: R: <P, θ, B> → P'
mit θ ∈ {-90°, 90°} und Spielfeld B
Ein Spielzug
●
●
●
●
●
Ein unfixiertes Bauteil kann eine der folgenden
Bewegungen durchführen:
eine Rotation R(P, ±90°, B)
eine Translation, falls links oder rechts frei ist, der
neue Zustand ist <t, o, <i,j ± 1>, unfixed>
ein Fall um eine Zeile nach unten, falls alle Felder
unter dem Teil frei sind, der neue Zustand ist
<t, o, <i - 1,j>, unfixed>
das Teil wird fixiert, falls ein Feld unter dem Teil gefüllt
ist, der neue Zustand ist <t, o, <i,j>, fixed>
Ein Spiel
●
●
●
●
Ein fixiertes Teil darf nicht mehr bewegt werden.
Eine Sequenz von gültigen Zügen eines Teils bildet
eine Trajektorie σ.
Ein Spiel G = <B0, P1, ..., Pp> entsteht also durch eine
Abfolge Σ von Trajektorien. σi angewandt auf Pi führt
das Spielfeld Bi-1 nach Bi.
Wir befassen uns mit der so genannten FullInformation Variante (Offline Tetris), bei der wir die
komplette Sequenz der Bausteine bereits im voraus
kennen.
Das Problem TETRIS
Für Tetris gibt es verschiedene Optimierungsziele:
1. Maximale Anzahl der gelöschten Zeilen
2. Maximale Anzahl an platzierten Bausteinen, bevor
das Spiel endet
3. Maximale Anzahl an Vierer-Reihen (Tetrisen)
4. Minimale Höhe des höchsten gefüllten Feldes
während des Spiels
Alle vier Probleme sind NP-vollständig.
Das Entscheidungsproblem
Das Entscheidungsproblem für ein bestimmtes
Optimierungsziel Φ lautet:
Gegeben: Ein Spiel G = <B, P1, P2, ..., Pp>.
Frage: Existiert eine Abfolge Σ, so dass Φ(G, Σ) erfüllt ist.
Lemma 1: Für jede überprüfbare und azyklische
Funktion Φ gilt: TETRIS ∈ NP
TETRIS ∈ NP
Beweis:
Für ein gegebenes Spiel G = <B, P1, P2, ..., Pp>.
Es lässt sich in polynomieller Zeit prüfen, ob die Abfolge
Σ gültig ist. Dabei werden die auftretenden Bewegungen
und Rotation überprüft.
Die Anzahl der möglichen Zustände in einer Trajektorie
ist endlich (4*|B|+1, jede denkbare Position in beliebiger
Rotation und ein fixierter Zustand). Also |Σ| = poly(|G|).
Da Φ überprüfbar ist, lässt sich in polynomieller Zeit
überprüfen, ob Φ(G, Σ) erfüllt ist oder nicht. □
3-PARTITION
Gegeben: Ein Multiset S mit n = 3m positiven Zahlen und
eine positive Zahl T.
Frage: Lässt sich S so in m Tripel partitionieren, dass die
Summe aller Tripel gleich T ist.
Beispiel: S = {3,2,1,6,2,3,1,3,1,5,4,1} und T = 8
Lösung: (3,3,2), (2,1,5), (3,1,4), (1,6,1)
Die Reduktion
Im Folgenden erzeugen wir zu einer gegebenen Instanz
P = <a1, ..., a3s, T> von 3-PARTITION, mit T teilbar durch
4, ein Tetris Spiel G(P), dessen Spielfeld sich komplett
leeren lässt, falls für P eine Lösung existiert!
Aufbau des Spielfeldes
●
●
Für jedes Tripel von
3-PARTITION wird
ein Behälter gebaut.
Die 3 Spalten ganz
rechts bilden eine
Sicherung, damit die
Zeilen erst am Ende
gelöscht werden.
Der Initiator
Die Füllelemente ai mal
Der Abschluss
Diese Schritte laufen für jeden
Behälter 3 mal durch, da jedes
Tripel aus 3 Zahlen besteht.
Jeder Behälter wird
abgeschlossen
Die Sicherung wird geöffnet
Nun kann das Spielfeld
geleert werden
...
Lemma 2: Das Spiel G(P) ist polynomiell in der Größe
von P und kann in polynomieller Zeit aus P konstruiert
werden. (P ist die Instanz von Partition)
Beweis: Das Spielfeld hat eine feste, bekannte Größe.
Die Anzahl der verwendeten Bauteile ist endlich und
auch bekannt. Somit lässt sich das Spiel in polynomieller
Zeit konstruieren. □
Die Vollständigkeit
Lemma 3: Für jede lösbare Instanz P von 3-PARTITION,
gibt es eine Abfolge Σ die das Spielfeld G(P) komplett
leert, ohne dass man das Spiel verliert.
Beweis: Genau diese Abfolge haben wir zuvor in der
Grafik gesehen. Das Spielfeld war am Ende komplett
leer. □
Annahmen zur Korrektheit
●
●
Annahme 1: In jeder gültigen Abfolge wird kein Feld oberhalb
der Zeile 5T + 18 gefüllt.
Annahme 2: In jeder gültigen Abfolge
●
werden alle Teile vor dem „T“ in die Behälter gefüllt.
●
werden vor dem „T“ keine Zeilen gelöscht
●
bleibt kein Behälter ungefüllt.
Annahmen zur Korrektheit
●
●
Annahme 3: Jeder Behälter mit einem „Loch“ bleibt unfüllbar.
Annahme 4: Es ist nicht zulässig eines der Teile
{Sq, LG, I} in einen unvorbereiteten Behälter zu plazieren.
Vielen Dank!
Quellen:
●
Ron Breukelaar, Erik D. Demaine, Susan
Hohenberger, Hendrik Jan Hoogeboom, Walter A.
Kosters, and David Liben-Nowell, ``Tetris is Hard,
Even to Approximate,'' International Journal of
Computational Geometry and Applications, volume 14,
number 1-2, 2004, pages 41-68.
●
http://theory.csail.mit.edu/%7Eedemaine/papers/Tetris_IJCGA/
●
http://de.wikipedia.org/wiki/Tetris

Documents pareils