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