Parallele Programmierung - Solitaire Chess

Ähnliche Dokumente
Solitaire-Schach. Praktikumsbericht

Schach Spielanleitung

Spielregeln für Schach

Plastische Gestaltungsgrundlagen Prof. Ernst Thevis. Stegreif SS15 Architektur Schach

Peg-Solitaire. Florian Ehmke. 29. März / 28

free sample Schnell & lustig Schach lernen Herbert J. Thanner Schach spielerisch Ab 5 Jahren Cubes.Art

Schach Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de

ein Spielbrett mit 126 sechseckigen Feldern in drei Farben 51 Spielfiguren, davon je 17 in einer Farbe:

Schach für Anfänger. Hier möchte ich für Anfänger das Schachspiel näher bringen.

von Heinrich Glumpler und Matthias Schmitt

Twister. Für das Spiel Twister benötigt ihr folgende Drehscheibe:

Deutsche Schulschachstiftung

Vorlesung Datenstrukturen

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Eine kleine Schachfibel

A&R TECH C++ Chess Challenge

6in1 Deluxe Spiele-Koffer. Spielanleitung

Taktische Motive 1: Die Gabel

schach-lernen.com Seite 2

Bauerndiplom. 2 Der König

Chess960 Spielanleitung/Spielregeln. Brettspielnetz.de Team Copyright 2017 Brettspielnetz.de

Eine kurze Anleitung des Schachs

Grundlagen des Spiels

Einführung in die Programmierung für NF MI. Übung 04

Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.

WÜRFELMEISTER Spielvorbereitung

Schach für Anfänger Hier möchte ich für Anfänger das Schachspiel näher bringen.

Die Figuren werden beim Chess 960 nicht vollkommen beliebig aufgestellt, es gelten folgende Regeln bzw Einschränkungen:

Theoretische Grundlagen der Informatik

Informatik II, SS 2014

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Algorithmen und Datenstrukturen

Das Trojanische Spiel

Das Handbuch zu Knights. Übersetzung: Johannes Obermayr

INHALTSVERZEICHNIS. Teil 6 Kristin gegen Ben: Das große Match Lösungen für die schrecklich schweren Tests Einführung...

Mehrdimensionale Arrays

1. Das Schachbrett und die Figuren

Erste Schritte um Schach zu lernen

Lernziel: DWZ 1100 Lektion 1

Tag 4 Repetitorium Informatik (Java)

Methodische Schachübungen

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3

Parallele und verteilte Programmierung

Allerlei Lehrerinformation

Ralf s Schachkurs. Das Schachmatt ist das Ziel der Schachpartie. Wer seinen Gegner schachmatt gesetzt hat, ist der Sieger.

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

19. Dynamic Programming I

12. Dynamische Datenstrukturen

Teil VII. Hashverfahren

Datenstrukturen / Container in Java

Algorithmen und Datenstrukturen (für ET/IT)

Thomas Theis. Einstieg in JavaScript

Algorithmen & Datenstrukturen Midterm Test 2

Objektorientierte Programmierung und Modellierung

Javakurs für Anfänger

Javakurs für Anfänger

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT)

Zentralübung Grundlagen der Programmierung

Programmieren in C/C++ und MATLAB

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

Farbtiefe. Gängige Farbtiefen

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung

Programmieren in Lua

Präfix-Summe. Das Schweizer Offiziersmesser der Parallelen Algorithmen. Parallele Rechenmodelle Präfix-Summe Brents Lemma Anwendungen

Institut für Programmierung und Reaktive Systeme 20. November Programmieren I. 4. Übungsblatt

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Schachaufgabe 37: Schachma in 2 Zügen Chess Problem 37: Checkmate in 2 Moves. Stufe / Level: 5

Seminar Logik, Komplexität, Spiele: Strukturkomplexität von Graphen und Graph Searching Games SS 2010

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

Sokoban. Knowledge Engineering und Lernen in Spielen. Mark Sollweck Fachbereich 20 Seminar Knowledge Engineering Mark Sollweck 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Crashkurs C++ - Teil 1

Schach. 2.1 Entwickeln Sie von Beginn an Ihre Figuren aber halten Sie die Bauern zurück

Tag 4 Repetitorium Informatik (Java)

GS1 - Grundelemente Lektion 1

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Relationen und Graphentheorie

Proseminar: Geschichte des Computers Schachprogrammierung Die Digitale Revolution

Mathematik ohne Formeln gibt s denn das?

Spielanleitung Schach

Schachfreunde Köln-Süd

Einführung in die Programmierung

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Methodische Schachübungen

Lernziel: DWZ 1300 Lektion 1

Prof. Dr. Uwe Schmidt. 21.August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (BInf 211, BTInf 211, BMInf 211, BWInf 211)

Transkript:

Parallele Programmierung - Solitaire Chess Kira Duwe - Enno Zickler DKRZ- UHH 7. Oktober 2013 Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 1 / 16

Spielregeln Figuren ziehen nach Schachregeln pro Zug eine Figur ziehen, um eine andere zu schlagen 4 x 4 - Brett 10 Figuren : 2 x Bauer, Türme, Springer, Läufer; 1 x König und Dame Ziel: eine einzige Figur bleibt übrig Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 2 / 16

Fragestellungen Vorhaben Ergebnis Welche Startpositionen sind lösbar? (mit variierender Figurenanzahl) Mögliche Erweiterungen: größeres Spielbrett andere Brettform In wie viel Zügen ist ein Spiel lösbar? Wie viele unterschiedliche zum Ziel führende Zugmöglichkeiten gibt es? Wie viele Spielbretter sind lösbar Alle Spielbretter mit 1 bis 10 Figuren Variable Brettgröße von 1 bis 21 Felder in beliebiger rechteckiger Form Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 3 / 16

Spielbrettdarstellung Oktaldarstellung 16 Felder * 3 bit = 48 bit uint64 ist ausreichend kleiner als Array (16 * 8 bit = 128 bit) 0 1 0 0 0 5 6 0 4 2 1 4 2 3 0 3 Tabelle: Spielbrett 3032 4124 0650 0010 Figuren 0 = leeres Feld 1 = Bauer 2 = Turm 3 = Läufer 4 = Springer 5 = König 6 = Dame Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 4 / 16

Spielbretterzeugung Verschachtelte for-schleifen, für jede Figur von 0 bis Spielbrettgröße bei doppelten Figuren sollte die 2. Figur abhängig von der 1. sein Abschneiden der Schleifendurchläufe, wenn betrachtetes Feld nicht frei Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 5 / 16

Spielbretterzeugung I for ( Dame von 0 bis 16) if( Feldfrei ) for ( Koenig von 0 bis 16) if( Feldfrei ) for ( Springer1 von 0 bis 16) if( Feldfrei ) for ( Springer2 von posspringer1 bis 16)... for ( Bauer2 von posbauer1 bis 16) Spielbrettberechnen Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 6 / 16

Spielbrettberechnung Dynamische Programmierung Vorherige Lösungen werden wieder verwendet Erzeugung nach Figurenanzahl (+ for-schleife) Berechnung nach Figurenanzahl aufsteigend Lösungen der vorherigen Ebene müssen bekannt sein Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 7 / 16

Spielbrettberechnung Umwandlung in Array für Zugberechnung Felderweise Überprüfung des gesamten Brettes, ob durch möglichen Zug ein lösbares Brett entsteht Zugriff auf vorherige Lösungen Abbruch der Berechnung, wenn Nachfolgebrett als lösbar gespeichert Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 8 / 16

Schlagen der Figuren I einser_bitmaske = 0 xffffffffffffffffll ; // Spielfiguren, geschlagene und schlagende, von Spielbrett loeschen // Von der Bitmaske wird "(7 << pos *3) " abgezogen, um an dieser Stelle 0 zu erzeugen neues_spielbrett = spielbrett & ( einser_bitmaske - (7 << pos *3) - (7 << neue_pos *3) ); // nach Schlagen Spielfigur neu setzen neues_spielbrett += ( DarstellungFigur << neue_pos *3) ; Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 9 / 16

Größe des Problems 6.7 Milliarden Spielbretter für 4x4 sehr großer Anteil lösbar Figuren: Anzahl % Lösbar: 1 96 100.00 2 4.080 50.25 3 100.800 70.95 4 1.594.320 89.41 5 16.773.120 97.62 6 118.198.080 99.70 7 547.747.200 99.98 8 1.589.187.600 100.00 9 2.594.592.000 100.00 10 1.816.214.400 100.00 Gesamt 6.684.411.696 99.98 Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 10 / 16

Speicherung Abspeichern der Spielbretter in Hashtablle / Hashset 6.684.411.696 x 64bit x 2 = 855.604.697.088 bit = 106 GByte Hashset fürt zu Halbierung des Speicherbedarfs Optimierung durch speichern der nicht lösbaren 1.047.721 x 64 bit = 67.054.144 bit = 67 MB Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 11 / 16

Output Solitaire-Schach 4x4 auf 8 Knoten mit je 24 Threads Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 12 / 16

gprof Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 13 / 16

MPI-Kommunikation Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 14 / 16

Speedup 4x4-Spielbrett mit 24 Thread/Knoten Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 15 / 16

Vampirtrace - Profile Kira Duwe - Enno Zickler (DKRZ- UHH) Parallele Programmierung - Solitaire Chess 7. Oktober 2013 16 / 16