Softwarearchitektur eines Computerspielers. SoPra 2016 Alexander Kampmann

Größe: px
Ab Seite anzeigen:

Download "Softwarearchitektur eines Computerspielers. SoPra 2016 Alexander Kampmann"

Transkript

1 Softwarearchitektur eines Computerspielers SoPra 2016 Alexander Kampmann

2 Model - View -Controller Server Model weiß, wie die Welt aussieht aktualisiert informiert Controller nimmt Befehle entgegen View erfährt, was passiert

3 Model - View -Controller Server Model weiß, wie die Welt aussieht aktualisiert informiert Controller nimmt Befehle entgegen schickt Commands View erfährt, was passiert Client ist eine View

4 Model - View -Controller Server Model weiß, wie die Welt aussieht aktualisiert informiert Controller nimmt Befehle entgegen View erfährt, was passiert

5 Model - View -Controller Client informiert schickt Commands Controller nimmt Befehle entgegen Server aktualisiert Model weiß, wie die Welt aussieht informiert View erfährt, was passiert

6 Model - View -Controller KI Model weiß, wie die Welt aussieht informiert View erfährt, was passiert

7 Model - View -Controller KI Model aktualisiert weiß, wie die Welt aussieht Controller nimmt Befehle entgegen und führt sie aus informiert View erfährt, was passiert

8 Model - View -Controller KI Model aktualisiert weiß, wie die Welt aussieht Controller nimmt Befehle entgegen und führt sie aus schickt ihre Commands informiert View erfährt, was passiert KI ist eine View

9 Model - View -Controller KI Model aktualisiert weiß, wie die Welt aussieht Controller nimmt Befehle entgegen und führt sie aus informiert View erfährt, was passiert

10 Model - View -Controller KI du bist dran schickt Commands Controller KI fragt Informationen ab aktualisiert Model weiß, wie die Welt aussieht informiert nimmt Befehle entgegen und führt sie aus View erfährt, was passiert

11 Der Zufall spielt // Zufallsobjekt erzeugen: Random r = new Random(); // alle Richtungen testen und eine wählen for(direction d : Direction.values()) { if(maymove(d) && r.nextboolean()) { server.sendmove(d); return; } } // dasselbe für alle anderen Commands

12 Der Zufall spielt // Zufallsobjekt erzeugen: Random r = new Random(); // alle Richtungen testen und eine wählen for(direction d : Direction.values()) { if(maymove(d) && r.nextboolean()) { server.sendmove(d); return; } } // dasselbe für alle anderen Commands

13 Mit Command-Pattern // Zufallsobjekt erzeugen: Random r = new Random(); // alle Möglichkeiten auflisten List<Command> commands = getpossiblecommands(model, getentityid()); // eine aussuchen int pos = r.nextint(commands.size()); Command command = commands.get(pos); // und an den Server senden send(command);

14 Mit Command-Pattern // Zufallsobjekt erzeugen: Command-Pattern Random r = new Random(); // alle Möglichkeiten auflisten List<Command> commands = getpossiblecommands(model, getentityid()); // eine aussuchen int pos = r.nextint(commands.size()); Command command = commands.get(pos); // und an den Server senden send(command);

15 Anforderungen an das Model Ich muss informiert werden, wenn ich dran bin. Ich muss prüfen können, ob ein Zug zulässig ist. Ich muss mitteilen können, was ich machen möchte. Ich muss abfragen können, wie die Spielwelt aussieht.

16 Mühle 1. Phase: Steine setzen 2. Phase: Steine ziehen Mühle: Stein klauen

17 In der Setzen-Phase: Regel-basierter Computerspieler Wenn ich zwei Steine in einer Reihe habe, setze ich den Dritten Wenn der Gegner zwei Steine in einer Reihe hat, setze ich auf das dritte Feld Wenn eins der Felder mit vier Nachbarn frei ist, setze ich da hin

18 Mensch Regelbasiert

19 Mensch Regelbasiert

20 Mensch Regelbasiert

21 Mensch Regelbasiert

22 Mensch Regelbasiert

23 Mensch Regelbasiert

24 Mensch Regelbasiert

25 Mensch Regelbasiert

26 Mensch Regelbasiert

27 Der Computer muss lernen, die Pläne seines Gegners zu erahnen

28 Baumsuche

29 Wie gut ist ein Zustand? (Für weiß) Sehr gut Sehr schlecht

30 Wie gut ist ein Zustand? (Für weiß) Sehr gut h( ) = 10 Sehr schlecht h( ) = 0

31 Baumsuche weiß ist am Zug 10?

32 Baumsuche 10 weiß ist am Zug 10?

33 Baumsuche schwarz ist am Zug 0

34 Baumsuche 0 schwarz ist am Zug 0

35 Heuristische Funktion Sieg: Hoher Wert Niederlage: Niedriger Wert Ich bin am Zug: Heuristik maximieren Gegner ist am Zug: Heuristik minimieren

36 Tiefensuche

37 Tiefensuche

38 Tiefensuche

39 Tiefensuche

40 Tiefensuche

41 Tiefensuche

42 Tiefensuche

43 Tiefensuche

44 Tiefensuche

45 Tiefensuche

46 Breitensuche

47 Breitensuche

48 Breitensuche

49 Breitensuche

50 Breitensuche

51 Breitensuche

52 Breitensuche

53 Breitensuche

54 Was, wenn ich nicht das ganze Spiel vorberechnen kann (1) Suchbreite beschränken: Wenn ich ein Kind mit maximalem/minimalem Wert gesehen habe, muss ich die anderen Kinder nicht mehr angucken Suchtiefe beschränken: Beispiel: Ich gucke 5 Zustände in die Zukunft

55 Was, wenn ich nicht das ganze Spiel vorberechnen kann (2) Heuristik mit anderen Informationen: eigene Lebenspunkte Summe der Gegner-Lebenspunkte Entfernung zum Gegner Damit ist auch Breitensuche möglich

56 Was, wenn ich nicht das ganze Spiel vorberechnen kann (3) Machine Learning: Sammeln Sie möglichst viele Zustände einschließlich Ergebnisse Lassen Sie ein neuronales Netz (oder einen anderen Classifier) lernen, ob nach einem bestimmten Zustand ein Sieg kommt

57 Optionen für eine KI Regelbasiert: gute Kontrolle über KI-Verhalten schlechte Anpassung an unerwartete Situationen heuristische Baumsuche: KI-Verhalten hängt stark von der Heuristik ab sehr erfolgreich (Schach, Mühle, ) Machine Learning: keine Kontrolle über KI-Verhalten (quasi keine Möglichkeit zu debuggen) extrem erfolgreich (Atari-Spiele, Go, )

58 Optionen für eine KI Regelbasiert: gute Kontrolle über KI-Verhalten schlechte Anpassung an unerwartete Situationen heuristische Baumsuche: KI-Verhalten hängt stark von der Heuristik ab sehr erfolgreich (Schach, Mühle, ) Machine Learning: keine Kontrolle über KI-Verhalten (quasi keine Möglichkeit zu debuggen) Spielstärke extrem erfolgreich (Atari-Spiele, Go, )

59 Optionen für eine KI Regelbasiert: gute Kontrolle über KI-Verhalten schlechte Anpassung an unerwartete Situationen heuristische Baumsuche: KI-Verhalten hängt stark von der Heuristik ab sehr erfolgreich (Schach, Mühle, ) Machine Learning: keine Kontrolle über KI-Verhalten (quasi keine Möglichkeit zu debuggen) extrem erfolgreich (Atari-Spiele, Go, ) Programmieraufwand Spielstärke

60 Wie implementiere ich eine Baumsuche? Queue q lege den aktuellen Zustand in q solange noch Zustände in q sind: nehme den nächsten Zustände aus q erzeuge alle Kind-Zustände lege die Kind-Zustände in q wenn keine Zustände mehr in q sind der beste Zustand ist der, wo ich hin will

61 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 3 Move(NORTH_WEST), 3 Move(WEST), 4 Move(EAST), 4 Move(SOUTH_WEST), 5 Move(SOUTH_EAST),

62 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 3 Move(NORTH_WEST), 3 Move(WEST), 4 Move(EAST), 4 Move(SOUTH_WEST), 5 Move(SOUTH_EAST),

63 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 2 Move(NORTH_WEST), 2 Move(EAST), 3 Move(WEST), 3 Move(SOUTH_WEST), 4 Move(SOUTH_EAST), 4 (alt) Move(NORTH_EAST), 3 (alt) Move(NORTH_WEST), 3 (alt) Move(WEST), 4 (alt) Move(EAST), 4 (alt) Move(SOUTH_WEST), 5 (alt) Move(SOUTH_EAST), 5

64 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 2 Move(NORTH_WEST), 2 Move(EAST), 3 Move(WEST), 3 Move(SOUTH_WEST), 4 Move(SOUTH_EAST), 4 (alt) Move(NORTH_EAST), 3 (alt) Move(NORTH_WEST), 3 (alt) Move(WEST), 4 (alt) Move(EAST), 4 (alt) Move(SOUTH_WEST), 5 (alt) Move(SOUTH_EAST), 5

65 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 2 Move(NORTH_WEST), 1 Move(EAST), 3 Move(WEST), 2 (alt) Move(NORTH_EAST), 2 (alt)move(north_west), 2 (alt) Move(EAST), 3 (alt) Move(WEST), 3 (alt) Move(SOUTH_WEST), 4 (alt) Move(SOUTH_EAST), 4 (alt) Move(NORTH_EAST), 3 (alt) Move(NORTH_WEST), 3 (alt) Move(WEST), 4 (alt) Move(EAST), 4

66 Beispiel Heuristik: Abstand zum Wildschwein Queue: Move(NORTH_EAST), 2 Move(NORTH_WEST), 1 Move(EAST), 3 Move(WEST), 2 (alt) Move(NORTH_EAST), 2 (alt)move(north_west), 2 (alt) Move(EAST), 3 (alt) Move(WEST), 3 (alt) Move(SOUTH_WEST), 4 (alt) Move(SOUTH_EAST), 4 (alt) Move(NORTH_EAST), 3 (alt) Move(NORTH_WEST), 3 (alt) Move(WEST), 4 (alt) Move(EAST), 4

67 Anforderungen an das Model Ich muss informiert werden, wenn ich dran bin. Ich muss prüfen können, ob ein Zug zulässig ist. Ich muss mitteilen können, was ich machen möchte. Ich muss abfragen können, wie die Spielwelt aussieht.

68 Anforderungen an das Model Ich muss informiert werden, wenn ich dran bin. Ich muss prüfen können, ob ein Zug zulässig ist. Ich muss mitteilen können, was ich machen möchte. Ich muss abfragen können, wie die Spielwelt aussieht. Ich muss Spielzüge simulieren können.

69 Wie simuliere ich? Einen Zug ausprobieren, ohne das Model zu ändern Ich möchte wissen, wie die Welt nach dem Zug aussieht, um die Heuristik für diesen Zustand berechnen zu können Ich simuliere, indem ich den Zug auf einer Kopie des Models ausführe indem ich im Command-Pattern ein unexecute() implementiere

70 Command-Pattern StabCommand + validate(model) + execute(model) + unexecute(model) Command + validate(model) + execute(model) + unexecute(model) MoveCommand + validate(model) + execute(model) + unexecute(model) Oberklasse Command mit abstrakten Methoden eine Unterklasse für jeden Command mit Implementierungen StareCommand + validate(model) + execute(model) + unexecute(model)

71 Kopieren des Model Model copy(model m) { Model m2 = new Model(); m2.f1 = m.f1; m2.f2 = m.f2; return m2; } m : Model m : Monster f1 : Field f2 : Field

72 Kopieren des Model Model copy(model m) { Model m2 = new Model(); m2.f1 = m.f1; m2.f2 = m.f2; return m2; } m : Model m2 : Model m : Monster f1 : Field f2 : Field

73 Kopieren des Model Model copy(model m) { Model m2 = new Model(); m2.f1 = m.f1; m2.f2 = m.f2; return m2; } m : Model m2 : Model m : Monster f1 : Field f2 : Field

74 Kopieren des Model Model copy(model m) { Model m2 = new Model(); m2.f1 = copy(m.f1); m2.f2 = copy(m.f2); return m2; } m : Model m2 : Model m : Monster f1 : Field f2 : Field m_2 : Monster f1_2 : Field f2_2 : Field

75 Memento-Pattern Model unveränderliche Daten veränderliche Daten

76 Memento-Pattern Model 1. kopieren unveränderliche Daten veränderliche Daten veränderliche Daten

77 Memento-Pattern Model unveränderliche Daten veränderliche Daten veränderliche Daten

78 Model Memento-Pattern 2. Simulieren unveränderliche Daten veränderliche Daten veränderliche Daten

79 Memento-Pattern Model unveränderliche Daten veränderliche Daten veränderliche Daten

80 Model Memento-Pattern 3. Zurücksetzen unveränderliche Daten veränderliche Daten veränderliche Daten

81 Model unveränderliche Daten Memento-Pattern 3. Zurücksetzen veränderliche Daten

82 Model unveränderliche Daten veränderliche Daten Memento-Pattern 3. Zurücksetzen Vorteile: Leichter zu implementieren als unexecute() (weniger Code!) Weniger Daten zum Kopieren als bei voller Kopie

83 Memento-Pattern Nachteile Normaler Entwurf m : Model Der Entwurf entfernt sich vom intuitiven Objektmodell m : Monster f1 : Field f2 : Field Mit Memento-Pattern m : Model me : Memento f1 : Field f2 : Field m : Monster

84 Memento-Pattern Nachteile Normaler Entwurf m : Model Der Entwurf entfernt sich vom intuitiven Objektmodell m : Monster f1 : Field f2 : Field Mit Memento-Pattern m : Model me : Memento f1 : Field f2 : Field m : Monster

85 Single-Dot Rule Model model = /* */; Monster m = model.getfield(1, 3).getMonster();

86 Single-Dot Rule Model model = /* */; Monster m = model.getfield(1, 3).getMonster(); Single-Dot Rule?

87 Single-Dot Rule Model model = /* */; Monster m = model.getfield(1, 3).getMonster(); Single-Dot Rule? Model model = /* */; Field f = model.getfield(1, 3); Monster m = f.getmonster();

88 Single-Dot Rule Model model = /* */; Monster m = model.getfield(1, 3).getMonster(); Single-Dot Rule? Model model = /* */; Field f = model.getfield(1, 3); Monster m = f.getmonster(); Andere Syntax, selbe Semantik, das zählt nicht!

89 Stellen Sie sich vor, Sie wollen auf Memento-Pattern umbauen Model model = /* */; Monster m = model.getfield(1, 3).getMonster(); Model model = /* */; Field f = model.getfield(1, 3); Memento memento = model.getmemento(); Monster m = memento.getmonsterat(f);

90 Single-Dot Rule eingehalten Model model = /* */; Monster m = model.getfield(1, 3).getMonster(); Model model = /* */; Monster m = model.getmonster(1, 3); class Model { Monster getmonster(int x, int y) { Field f = getfield(x, y); return f.getmonster(); } }

91 Anforderungen an das Model Ich muss informiert werden, wenn ich dran bin. Ich muss prüfen können, ob ein Zug zulässig ist. Ich muss mitteilen können, was ich machen möchte. Ich muss abfragen können, wie die Spielwelt aussieht. Ich muss Spielzüge simulieren können.

92 Heuristiken eigene Lebenspunkte maximieren Lebenspunkte der Gegner minimieren Entfernung zum Gegner (minimieren oder maximieren?)

93 Mehrere Heuristiken kombinieren (1) Gewichtete Summe (weighted sum): h c (m) = 1 h 1 (m)+ 2 h 2 (m) n h n (m)

94 Mehrere Heuristiken kombinieren (1) Gewichtete Summe (weighted sum): h c (m) = 1 h 1 (m)+ 2 h 2 (m) n h n (m) Steuern, welche Heuristik am Wichtigsten ist

95 Mehrere Heuristiken kombinieren (2) Entfernung zum Heilfeld: 3 Lebenspunkte des Gegner: 85 Move Shoot Entfernung zum Heilfeld: 2 Lebenspunkte des Gegner: 85 Entfernung zum Heilfeld: 3 Lebenspunkte des Gegner: 74 Lebenspunkte ändern sich viel schneller als Entfernungen (und sind potenziell größer), deshalb dominieren sie die Heuristik

96 Heuristiken normalisieren Heuristiken zwischen 0 und 1 bringen: h 0 (m) = h(m) max h Heuristiken auf eine gemeinsame Einheit bringen: statt: Entfernung zum Heilfeld Wie viele Commands brauche ich noch da hin? statt: Lebenspunkte des Gegners Wie viele Commands brauche ich noch um ihn zu töten?

97 Heuristiken invertieren Maximieren oder Minimieren? Ob kleiner Wert guter Zustand oder schlechter Zustand heißt, ändert nur den Vergleich im Algorithmus Heuristik umdrehen: h 0 (m) = h(m) h 0 (m) = max h h(m)

98 Anforderungen an das Model Ich muss informiert werden, wenn ich dran bin. Ich muss prüfen können, ob ein Zug zulässig ist. Ich muss mitteilen können, was ich machen möchte. Ich muss abfragen können, wie die Spielwelt aussieht. Ich muss Spielzüge simulieren können.

Programmierung einer KI. SoPra 2017 Jenny Hotzkow

Programmierung einer KI. SoPra 2017 Jenny Hotzkow Programmierung einer KI SoPra 2017 Jenny Hotzkow Model View Controller Client KI Integration in die Softwarearchitektur (1) KI Integration in die Softwarearchitektur (2) Command-Pattern // Bestimmung möglicher

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 14. Klassische Suche: IDA Malte Helmert Universität Basel 31. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche: 3. 5. Einführung 6. 9. Basisalgorithmen

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 6. Klassische Suche: Datenstrukturen für Suchalgorithmen Malte Helmert Universität Basel 7. März 2014 Klassische Suche: Überblick Kapitelüberblick klassische Suche:

Mehr

Grundlagen der Künstlichen Intelligenz Einführung Minimax-Suche Bewertungsfunktionen Zusammenfassung. Brettspiele: Überblick

Grundlagen der Künstlichen Intelligenz Einführung Minimax-Suche Bewertungsfunktionen Zusammenfassung. Brettspiele: Überblick Grundlagen der Künstlichen Intelligenz 22. Mai 2015 41. Brettspiele: Einführung und Minimax-Suche Grundlagen der Künstlichen Intelligenz 41. Brettspiele: Einführung und Minimax-Suche Malte Helmert Universität

Mehr

MoGo Seminar Knowledge Engineering und Lernern in Spielen Sommersemester 2010

MoGo Seminar Knowledge Engineering und Lernern in Spielen Sommersemester 2010 MoGo Seminar Knowledge Engineering und Lernern in Spielen Sommersemester 2010 08.06.2010 Fachbereich 20 Knowledge Engineering Group Christian Brinker 1 Inhalt Go Probleme für KIs Monte-Carlo-Suche UCT-Suchalgorithmus

Mehr

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

Peg-Solitaire. Florian Ehmke. 29. März / 28 Peg-Solitaire Florian Ehmke 29. März 2011 1 / 28 Gliederung Einleitung Aufgabenstellung Design und Implementierung Ergebnisse Probleme / Todo 2 / 28 Einleitung Das Spiel - Fakten Peg-33 33 Löcher, 32 Steine

Mehr

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05. Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational

Mehr

Objektorientierte und Funktionale Programmierung SS 2014

Objektorientierte und Funktionale Programmierung SS 2014 Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

2. Spiele. Arten von Spielen. Kombinatorik. Spieler haben festgelegte Handlungsmöglichkeiten, die durch die Spielregeln definiert werden.

2. Spiele. Arten von Spielen. Kombinatorik. Spieler haben festgelegte Handlungsmöglichkeiten, die durch die Spielregeln definiert werden. . Spiele Arten von Spielen. Spiele. Spiele Arten von Spielen Kombinatorik Spieler haben festgelegte Handlungsmöglichkeiten, die durch die Spielregeln definiert werden. Kombinatorische Spiele als Suchproblem

Mehr

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 1 185.A01 OOP Software-Entwurfsmuster (weitere) 2014-01-08 Software-Entwurfsmuster (weitere) 2 OOP Vererbung versus Delegation class A { public void x() { z();

Mehr

Intelligente Systeme

Intelligente Systeme Intelligente Systeme Spiele Prof. Dr. R. Kruse C. Braune {rudolf.kruse,christian,braune}@ovgu.de Institut für Intelligente Kooperierende Systeme Fakultät für Informatik Otto-von-Guericke Universität Magdeburg

Mehr

Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen

Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen Einführung in die Methoden der Künstlichen Intelligenz Suche bei Spielen Dr. David Sabel WS 2012/13 Stand der Folien: 5. November 2012 Zwei-Spieler-Spiele Ziel dieses Abschnitts Intelligenter Agent für

Mehr

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio Entwurfsmuster Eine Einführung Botond Draskoczy Marcus Vitruvius Pollio Überblick Historie, Literatur Das Flugapparat-Bildschirmschoner-Projekt (FBP) Das internetbasierte Solar-Netzwerk (SNW) Zusammenfassung

Mehr

Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen

Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen Einführung in die Methoden der Künstlichen Intelligenz Suche bei Spielen Prof. Dr. Manfred Schmidt-Schauß SoSe 2016 Stand der Folien: 12. Mai 2016 Zwei-Spieler-Spiele Ziel dieses Abschnitts Intelligenter

Mehr

Einführung in Heuristische Suche

Einführung in Heuristische Suche Einführung in Heuristische Suche Beispiele 2 Überblick Intelligente Suche Rundenbasierte Spiele 3 Grundlagen Es muss ein Rätsel / Puzzle / Problem gelöst werden Wie kann ein Computer diese Aufgabe lösen?

Mehr

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy

Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 2.2 Entwurfsparadigmen Top-down Bottom-up Divide & Conquer Dynamisches Programmieren Caching (Memoization) Branch-and-Bound Greedy 1 Top-Down Zerlege das gegebene Problem in Teilschritte Zerlege Teilschritte

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 9. Klassische Suche: Baumsuche und Graphensuche Malte Helmert Universität Basel 13. März 2015 Klassische Suche: Überblick Kapitelüberblick klassische Suche: 5. 7.

Mehr

Praktikum Compilerbau Sitzung 7 libfirm

Praktikum Compilerbau Sitzung 7 libfirm Praktikum Compilerbau Sitzung 7 libfirm Lehrstuhl für Programmierparadigmen Universität Karlsruhe (TH) 3. Juni 29 (IPD Snelting) Sitzung 7 libfirm 3. Juni 29 / 2 Letzte Woche 2 Firmgraph Optimierungen

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Design Patterns 2. Model-View-Controller in der Praxis

Design Patterns 2. Model-View-Controller in der Praxis Design Patterns 2 Model-View-Controller in der Praxis Design Patterns Oft Schablonen für eine Klassenstruktur... aber nicht immer! Dahinterliegende Konzepte wichtiger als wörtliche Umsetzung Pattern werden

Mehr

Intelligente Systeme

Intelligente Systeme Intelligente Systeme Heuristische Suchalgorithmen Prof. Dr. R. Kruse C. Braune {rudolf.kruse,christian.braune}@ovgu.de Institut für Intelligente Kooperierende Systeme Fakultät für Informatik Otto-von-Guericke-Universität

Mehr

Herzlich Willkommen. Spielstrategien. gehalten von Nils Böckmann

Herzlich Willkommen. Spielstrategien. gehalten von Nils Böckmann Herzlich Willkommen Spielstrategien gehalten von Nils Böckmann Agenda 1. Einführung 2. Problemstellung 3. Abgrenzung 4. Zielstellung / grober Überblick 5. Vorstellen der Konzepte 1. Umgebungslogik 2. Spielbäume

Mehr

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle In Anwendungen ist es oft interessant zu wissen, ob man überhaupt von einem Knoten v zu einem Knoten w gelangen kann, ganz gleich wie lang der Weg auch ist. Gegeben sei dabei ein gerichteter Graph G =

Mehr

Grundlagen der KI + Reasoning Agents

Grundlagen der KI + Reasoning Agents Grundlagen der KI + Reasoning Agents Prof. Thielscher Welche heuristischen Suchverfahren gibt es? Erläutern Sie A* am Beispiel. Aufbau und Schlussfolgerungen von Bayesschen Netzen. Thielscher drängt auf

Mehr

Thinking Machine. Idee. Die Thinking Machine Visualisierung versucht, die Denkprozesse eines Schachcomputers sichtbar zu machen

Thinking Machine. Idee. Die Thinking Machine Visualisierung versucht, die Denkprozesse eines Schachcomputers sichtbar zu machen Thinking Machine (http://www.turbulence.org/spotlight/thinking/) Idee Die Thinking Machine Visualisierung versucht, die Denkprozesse eines Schachcomputers sichtbar zu machen Sie wurde von Martin Wattenberg

Mehr

Spiele als Suchproblem

Spiele als Suchproblem Spiele als Suchproblem betrachten Spiele für zwei Personen, diese sind abwechselnd am Zug Spiel endet in einem aus einer Menge möglicher Terminalzustände deterministische, im Prinzip zugängliche Umgebung

Mehr

6. Spiele Arten von Spielen. 6. Spiele. Effizienzverbesserung durch Beschneidung des Suchraums

6. Spiele Arten von Spielen. 6. Spiele. Effizienzverbesserung durch Beschneidung des Suchraums 6. Spiele Arten von Spielen 6. Spiele Kombinatorische Spiele als Suchproblem Wie berechnet man eine gute Entscheidung? Effizienzverbesserung durch Beschneidung des Suchraums Spiele mit Zufallselement Maschinelles

Mehr

Programmierkurs Prolog, SS 2000

Programmierkurs Prolog, SS 2000 Programmierkurs Prolog SS 2000 Universitaet Dortmund nach Joachims 1998 Suche Repräsentation von Bäumen Repräsentation von Graphen Suchstrategien DFS, BFS, Iterative Deepening, Locale Heuristiken, Globale

Mehr

Kulami. Fabio Valdés. LG Datenbanksysteme für neue Anwendungen

Kulami. Fabio Valdés. LG Datenbanksysteme für neue Anwendungen Fakultät Fakultätfür fürmathematik Mathematikund undinformatik Informatik Kulami Fabio Valdés Einführung Kulami Problemstellung Anforderungen Details Folie 2 Spielregeln Ziel des Spiels Punktezählung Aufgabenstellung

Mehr

Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler)

Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Semesterprojekt Implementierung eines Brettspiels (inklusive computergesteuerter Spieler) Wintersemester 16/17 (Kleine) Einführung zu Künstlicher Intelligenz in Brettspielen Patrick Schäfer patrick.schaefer@hu-berlin.de

Mehr

Graph Suchalgorithmus Uninformierte Suche Informierte Suche. Pfadsuche. Mario Mohr. GWV-Tutorium 2013/ Januar 2014

Graph Suchalgorithmus Uninformierte Suche Informierte Suche. Pfadsuche. Mario Mohr. GWV-Tutorium 2013/ Januar 2014 Pfadsuche Mario Mohr GWV-Tutorium 2013/14 17. Januar 2014 4 Informierte Suche Heuristik Best-first A* 1 Graph 2 Suchalgorithmus 3 Uninformierte Suche Breadth-first Loop detection & multiple-path pruning

Mehr

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20

Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche. Suche in Spielbäumen. KI SS2011: Suche in Spielbäumen 1/20 Suche in Spielbäumen Suche in Spielbäumen KI SS2011: Suche in Spielbäumen 1/20 Spiele in der KI Suche in Spielbäumen Spielbäume Minimax Algorithmus Alpha-Beta Suche Einschränkung von Spielen auf: 2 Spieler:

Mehr

Uninformierte Suche in Java Informierte Suchverfahren

Uninformierte Suche in Java Informierte Suchverfahren Uninformierte Suche in Java Informierte Suchverfahren Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Suchprobleme bestehen aus Zuständen

Mehr

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Datenstrukturen 2 Praktikum 3 Algorithmen & Datenstrukturen 2 Praktikum 3 Thema: Graphalgorithmen Sommersemester 2016 Prof. Dr. Christoph Karg Hochschule Aalen Dieses Praktikum widmet sich dem Thema Graphalgorithmen. Ziel ist die Implementierung

Mehr

KI in Computerspielen

KI in Computerspielen KI in omputerspielen Decision Making 04.07.2017 Institut für Informatik K.I in omputerspielen 1 Inhalt Decision Making Behavior Trees Regelbasierte Systeme Institut für Informatik K.I in omputerspielen

Mehr

Learning Search Control

Learning Search Control Learning Search Control Knowledge Engineering und Lernen in Spielen Vortrag von Simone Daum 25. Mai 2004 1 Überblick In Spielen wie Schach und Othello stützt man sich stark auf Brute-Force-Ansätze wie

Mehr

Play Framework, MySQL, JPA, HQL, HTML, jquery,

Play Framework, MySQL, JPA, HQL, HTML, jquery, Play Framework, MySQL, JPA, HQL, HTML, jquery, Wer Mit wem Resultat 1.Kunde Schalter: Bibliothekarin Bestimmt,welcher Archivar die Zeitschrift holen geht 2. Schalter: Bibliothekarin Archivar Kontrollübergabe

Mehr

Einführung: Verteilte Systeme - Remote Method Invocation -

Einführung: Verteilte Systeme - Remote Method Invocation - Einführung: Verteilte Systeme - - Prof. Dr. Michael Cebulla 11. Dezember 2014 Fachhochschule Schmalkalden Wintersemester 2014/15 1 / 43 M. Cebulla Verteilte Systeme Gliederung 1 2 Architektur RMI Kommunikation

Mehr

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

14. Java Objektorientierung. Klassen, Vererbung, Kapselung 427 14. Java Objektorientierung Klassen, Vererbung, Kapselung Objektorientierung: Verschiedene Aspekte 428 Daten Typhierarchie Objekte Code Vererbung Unter- und Oberklassen Methoden überschreiben Unterklassen

Mehr

Kapitel 15. Virtuelle Klassen

Kapitel 15. Virtuelle Klassen Kapitel 15 Virtuelle Klassen Grundidee: Ein Member kann nicht nur Instanzvariable oder Methode, sondern auch Klasse sein Anders als bei Inner classes gibt es Redefinition dieser Virtuellen Klassen in Unterklassen

Mehr

Algorithmen und Datenstrukturen Wintersemester 2008/ Übung Abgabe bis , 10:00 Uhr

Algorithmen und Datenstrukturen Wintersemester 2008/ Übung Abgabe bis , 10:00 Uhr 4. Übung Abgabe bis 17.11.2008, 10:00 Uhr Aufgabe 4.1: Sichtbarkeit und Referenzen 20 Punkte Geben Sie ihre Antworten als Sichtbarkeit.pdf ab. a) Betrachten Sie folgenden Code: 1 public class Vis { 26

Mehr

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die rmatik I Übungsblatt 8 Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz, Dr.

Mehr

Objektorientierteund FunktionaleProgrammierung

Objektorientierteund FunktionaleProgrammierung Objektorientierte und Funktionale Programmierung SS 2014 6 Objektorientierte Entwurfsmuster 1 6 Objektorientierte Entwurfsmuster Lernziele Einige wichtige Entwurfsmuster kennen und verstehen Einsatzmöglichkeiten

Mehr

Bäume 1. Thomas Röfer

Bäume 1. Thomas Röfer Bäume Thomas Röfer Preisverleihung Begriffsdefinitionen Eigenschaften Implementierung von Bäumen Durchlaufen von Bäumen Breitensuche/Tiefensuche Huffman-Kodierung Rückblick Sortieren Permutieren nach Dijkstra

Mehr

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite!

JUnit a Cook s Tour. Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren. Unterlagen als PDF auf der Übungsseite! JUnit a Cook s Tour Ziel des Frameworks Framework in Java Automatisierter Ablauf von Testfällen Testläufe kombinieren Design des Frameworks Beginne bei Nichts Schritt für Schritt aus passenden Mustern

Mehr

Übersicht. 5. Spiele. I Künstliche Intelligenz II Problemlösen 3. Problemlösen durch Suche 4. Informierte Suchmethoden

Übersicht. 5. Spiele. I Künstliche Intelligenz II Problemlösen 3. Problemlösen durch Suche 4. Informierte Suchmethoden Übersicht I Künstliche Intelligenz II Problemlösen 3. Problemlösen durch Suche 4. Informierte Suchmethoden 5. Spiele III Wissen und Schlußfolgern IV Logisch Handeln V Unsicheres Wissen und Schließen VI

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)

Mehr

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten

15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten 15. Algorithmus der Woche Das Rucksackproblem Die Qual der Wahl bei zu vielen Möglichkeiten Autoren Rene Beier, MPI Saarbrücken Berthold Vöcking, RWTH Aachen In zwei Monaten startet die nächste Rakete

Mehr

Primzahlen und Programmieren

Primzahlen und Programmieren Primzahlen Wir wollen heute gemeinsam einen (sehr grundlegenden) Zusammenhang zwischen Programmieren und Mathematik herstellen. Die Zeiten in denen Mathematiker nur mit Zettel und Stift (oder Tafel und

Mehr

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian

Agenda. Informatik I WS05/06 Folien von Tobias Dezulian 15.12.2005 Agenda Geltungsbereich (Scope) von Variablen Blöcke Der Call-Stack Einschub: Debugging unter Eclipse Der Heap Lebensdauer von Objekten Müllabfuhr: Garbage Collection Exceptions Geltungsbereich

Mehr

TD-Gammon. Michael Zilske

TD-Gammon. Michael Zilske TD-Gammon Michael Zilske zilske@inf.fu-berlin.de TD-Gammon Ein Backgammon-Spieler von Gerald Tesauro (Erste Version: 1991) TD-Gammon Ein Neuronales Netz, das immer wieder gegen sich selbst spielt und dadurch

Mehr

General Game Playing

General Game Playing General Game Playing Martin Günther mguenthe@uos.de 17. Juni 2010 1 / 31 1997: Deep Blue schlägt Kasparov Motivation: warum General Game Playing? AAAI General Game Playing Competition 2 / 31 Motivation:

Mehr

8.1 Blinde Suche. Grundlagen der Künstlichen Intelligenz. Klassische Suche: Überblick. 8. Klassische Suche: Breitensuche und uniforme Kostensuche

8.1 Blinde Suche. Grundlagen der Künstlichen Intelligenz. Klassische Suche: Überblick. 8. Klassische Suche: Breitensuche und uniforme Kostensuche Grundlagen der Künstlichen Intelligenz 17. März 2014 8. Klassische Suche: Breitensuche und uniforme Kostensuche Grundlagen der Künstlichen Intelligenz 8. Klassische Suche: Breitensuche und uniforme Kostensuche

Mehr

Beispiele. mit. Beispiel 2.3. Suche einen Weg von nach. Tiefensuche bzw. Breitensuche.

Beispiele. mit. Beispiel 2.3. Suche einen Weg von nach. Tiefensuche bzw. Breitensuche. 2. Suchverfahren Uninformierte Suchverfahren Beispiel 2.4. Ein Weinhändler hat drei Krüge, einen von 9 Liter, einen von 7 Liter und einen von 4 Liter Inhalt. Auf den Krügen sind keine Litermarkierungen

Mehr

14. Java Objektorientierung

14. Java Objektorientierung Objektorientierung: Verschiedene Aspekte Daten Typhierarchie Objekte 14. Java Objektorientierung Code Vererbung Unter- und Oberklassen Klassen, Vererbung, Kapselung Methoden überschreiben Unterklassen

Mehr

Objektorientierte Analyse (OOA) OOA-Pattern

Objektorientierte Analyse (OOA) OOA-Pattern OOA-Muster (Architektur Pattern) Ein Pattern (Entwurfsmuster) ist ein Problem mit seiner Lösung in einem Kontext. Der Kontext enthält in der Regel Zielkonflikte, die der Designer lösen muss, z.b. Performance

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II SS 2012 6 Objektorientierte Entwurfsmuster Wissensbassierte Systeme / Wissensmanagement Einführung in die Informatik II 1 Prüfungstermine EI II im Sommersemester 2012 Klausurtermine

Mehr

MVC-Architektur am Beispiel von OLAT

MVC-Architektur am Beispiel von OLAT MVC-Architektur am Beispiel von OLAT Marvin Frommhold 12. Januar 2009 Gliederung Begriffe Entwurfsmuster Umsetzung in OLAT Aufbau des Brasato-Frameworks Quellen Begriffe I MVC bezeichnet ein Architekturmuster

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Zustandsraumsuche: Blinde und Heuristische Suche. Blinde und Heuristische Suche

Zustandsraumsuche: Blinde und Heuristische Suche. Blinde und Heuristische Suche Zustandsraumsuche: Blinde und Heuristische Suche Einführung in die KI Übungsstunde am 01.11.04 Benmin Altmeyer 1 Heute im Angebot Was ist Suche? Suche als Probemlösung Zustandsraumsuche Vollständigkeit

Mehr

Backtracking mit Heuristiken

Backtracking mit Heuristiken Backtracking mit Heuristiken Thomas Dübendorfer thomas@duebendorfer.ch 14. September 2000 Inhalt und Ablauf 1. Einführendes Beispiel (4 min) 2. Konzepte zu Backtracking (8 min) 3. Eingesperrt im Labyrinth

Mehr

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens

lässt sich auch ableiten, dass es einen augmentierenden Pfad der Länge höchstens Praktikum Algorithmen-Entwurf (Teil 5)..5 Matchings in Graphen Es sei ein ungerichteter Graph G = (V, E) gegeben. Ein Matching in G ist eine Teilmenge M E, so dass keine zwei Kanten aus M einen Endpunkt

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

Mehr

Realisierungsmöglichkeiten für parametrische Polymorphie

Realisierungsmöglichkeiten für parametrische Polymorphie 4. Parametrisierbare Klassen Realisierung von Generics Realisierungsmöglichkeiten für parametrische Polymorphie heterogen Für jeden konkreten Typ wird individueller Code erzeugt (type expansion). Diesen

Mehr

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen CS1017 Algorithmen und Datenstrukturen CS1017 Th. Letschert TH Mittelhessen Gießen University of Applied Sciences Datenabstraktionen und GUIs MVC-Muster MVC mit Beobachtbaren Datenstrukturen GUIs und Datenabstraktionen

Mehr

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217 EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?

Mehr

Mini-Projekt: miniirc

Mini-Projekt: miniirc Netzwerk-Programmierung Mini-Projekt: miniirc Alexander Sczyrba Michael Beckstette {asczyrba,mbeckste}@techfak.uni-bielefeld.de Übersicht Design des Servers mit Perl/Tk Kommunikations-Protokoll Netzwerk-Programmierung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 04: Rekursive Klassen Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 56 Inhalt

Mehr

Zwei-Spieler-Spiele. Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen. Schach. Schach (2)

Zwei-Spieler-Spiele. Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen. Schach. Schach (2) Einführung in die Methoden der Künstlichen Intelligenz Suche bei Spielen Prof. Dr. Manfred Schmidt-Schauß Ziel dieses Abschnitts Intelligenter Agent für Zweipersonenspiele Beispiele: Schach, Dame, Mühle,...

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die nformatik 2 raphenexploration Sven Kosub A Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

Mehr

Abschätzung der Suchbaumgröße

Abschätzung der Suchbaumgröße Effiziente Algorithmen Lösen NP-vollständiger Probleme 263 Abschätzung der Suchbaumgröße Der Schätzwert für die Suchbaumgröße war 3529. Lassen wir das Programm laufen, ergibt sich, daß 1830 gültige Positionen

Mehr

Multimedia im Netz Wintersemester 2012/13

Multimedia im Netz Wintersemester 2012/13 Multimedia im Netz Wintersemester 2012/13 Übung 10 Ludwig-Maximilians-Universität München Multimedia im Netz WS 2012/13 - Übung 10-1 Lösung zu Übungsblatt 08 Ludwig-Maximilians-Universität München Multimedia

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Property Based Testing

Property Based Testing Property Based Testing Nicolai Mainiero sidion Testen ist schwer Testen ist schwer Warum? Alle Pfade durch den Code aufzuzählen ist aufwendig. Selbst vermeintlich einfache Systeme können komplex sein.

Mehr

Klausur Software-Entwicklung März 01

Klausur Software-Entwicklung März 01 Aufgabe 1: minimaler Punktabstand ( 2+5 Punkte ) Matrikelnr : In einem Array punkte sind Koordinaten von Punkten gespeichert. Ergänzen Sie in der Klasse Punkt eine Klassen-Methode (=static Funktion) punktabstand,

Mehr

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen Graphen Graphenalgorithmen 2

Mehr

Dieses Dokument enthält alle Teilaufgaben zur Java-Pflichtaufgabe für das Sommersemester Aufgabe 1 (Vier Gewinnt 1. Teil)

Dieses Dokument enthält alle Teilaufgaben zur Java-Pflichtaufgabe für das Sommersemester Aufgabe 1 (Vier Gewinnt 1. Teil) Vier Gewinnt Dieses Dokument enthält alle Teilaufgaben zur Java-Pflichtaufgabe für das Sommersemester 2008. Aufgabe 1 (Vier Gewinnt 1. Teil) Implementieren Sie eine Java-Klasse VierGewinnt1, mit einer

Mehr

Digitale Signaturen. RSA-FDH & das Random Oracle Model Björn Kaidel (mit Folien von Gunnar Hartung)

Digitale Signaturen. RSA-FDH & das Random Oracle Model Björn Kaidel (mit Folien von Gunnar Hartung) Digitale Signaturen RSA-FDH & das Random Oracle Model Björn Kaidel (mit Folien von Gunnar Hartung) FAKULTÄT FÜR INFORMATIK, INSTITUT FÜR THEORETISCHE INFORMATIK 0 2017-12-01 B. Kaidel Digitale Signaturen:

Mehr

Objektorientierung. Objekte

Objektorientierung. Objekte Eine Einführung G. Futschek Objekte Objekte Fragen: Wie unterscheiden sich Objekte? Wie sind Objekte einander ähnlich? Was können Objekte? Wie stehen Objekte zueinander in Beziehung? Objekte Im täglichen

Mehr

Übersicht. Künstliche Intelligenz: 6. Spiele Frank Puppe 1

Übersicht. Künstliche Intelligenz: 6. Spiele Frank Puppe 1 Übersicht I Künstliche Intelligenz II Problemlösen 3. Problemlösen durch Suche 4. Informierte Suchmethoden 5. Constraint-Probleme 6. Spiele III Wissen und Schlußfolgern IV Logisch Handeln V Unsicheres

Mehr

Programmierung im Grossen

Programmierung im Grossen 1 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Bertrand Meyer 2 Vorlesung 4: Abstrakte Daten-Typen Übungen 3 Passe die vorhergehende Spezifikation von Stacks (LIFO, Last-In First-Out

Mehr

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie Dipl-Math. Wolfgang Kinzner 2.4.2012 Kapitel 1: Grundlagen der algorithmischen Graphgentheorie

Mehr

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Voronoi-Diagramme. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 29.05.2011 Das Postamt-Problem b(p, q) = {x R 2 : xp = xq } p q h(p, q) h(q, p) = {x :

Mehr

Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008. Jun.-Prof. Dr. B. Beckert. 21.

Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008. Jun.-Prof. Dr. B. Beckert. 21. Name, Vorname: Matrikel-Nr.: Studiengang: Universität Koblenz-Landau Fachbereich Informatik Klausur KI-Programmierung WS 2007/2008 Jun.-Prof. Dr. B. Beckert 21. Februar 2008 Informatik (Diplom) Computervisualistik

Mehr

Tutorium Softwaretechnik I

Tutorium Softwaretechnik I Tutorium Softwaretechnik I Moritz Klammler 27. Juni 2017 Fakultät für Informatik, IPD Tichy Titelfoto: Copyright (C) 2010 Multimotyl CC BY-SA 3.0 1 27. Juni 2017 Moritz Klammler - Tutorium Softwaretechnik

Mehr

JTable. W. Lang HWR Berlin, SS

JTable. W. Lang HWR Berlin, SS JTable W. Lang HWR Berlin, SS 2014 1 JTable Die Swing-Komponente JTable dient der Darstellung einer zweidimensionalen Tabelle Verwendung häufig im Zusammenhang mit Datenbankanwendungen Im Gegensatz zu

Mehr

Zwei-Spieler-Spiele. Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen. Schach. Schach (2)

Zwei-Spieler-Spiele. Einführung in die Methoden der Künstlichen Intelligenz. Suche bei Spielen. Schach. Schach (2) Einführung in die Methoden der Künstlichen Intelligenz Suche bei Spielen Prof. Dr. Manfred Schmidt-Schauß Ziel dieses Abschnitts Intelligenter Agent für Zweipersonenspiele Beispiele: Schach, Dame, Mühle,...

Mehr

Abschnitt 20: Ein Grundprinzip der Software-Architektur

Abschnitt 20: Ein Grundprinzip der Software-Architektur Abschnitt 20: Ein Grundprinzip der Software-Architektur 20. Ein Grundprinzip der Software-Architektur 20 Ein Grundprinzip der Software-Architektur Einf. Progr. (WS 08/09) 770 Modelle und Anwendungen Unsere

Mehr

2. Spielbäume und Intelligente Spiele

2. Spielbäume und Intelligente Spiele 2. Spielbäume und Intelligente Spiele Arten von Spielen 2. Spielbäume und Intelligente Spiele Kombinatorische Spiele als Suchproblem Wie berechnet man eine gute Entscheidung? Effizienzverbesserung durch

Mehr

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator Inhalt Gute OOP-Programmierung ist schwer Objekte Objekte, wird aber so vermittelt (siehe jede Einführung in OOP) Ansprüche an gutes Design diametral welche Ansprüche haben wir überhaupt? Fehler im Design

Mehr

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 18. Februar Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte Universität Düsseldorf Mathematisch-naturwissenschaftliche Fakultät Institut für Informatik Prof. Dr. Michael Schöttner Florian Klein Kevin Beineke Janine Haas Klausur zur Vorlesung Informatik 1 im Wintersemester

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

Mehr

Sports Data Mining. The Field and Methodology. Sublogo. 24.05.2014 Fachbereich Informatik Prof. Johannes Fürnkranz 1

Sports Data Mining. The Field and Methodology. Sublogo. 24.05.2014 Fachbereich Informatik Prof. Johannes Fürnkranz 1 Sports Data Mining The Field and Methodology 24.05.2014 Fachbereich Informatik Prof. Johannes Fürnkranz 1 Definition Hierarchie für Sport und Sportdatenbeziehungen Eins kein Zusammenhang Zwei Domain-Experten

Mehr

Komponentenbasierter Taschenrechner mit CORBA

Komponentenbasierter Taschenrechner mit CORBA Komponentenbasierter Taschenrechner mit CORBA Von Balamuhunthan Balarajah Olaf Märker Jan Zimmermann Balamuhunthan Balarajah, Olaf Märker, Jan Zimmermann 1 Gliederung Überlegungen Entwurf Verwendete Entwurfsmuster

Mehr

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

Übungen zur Vorlesung EINI (WS 2010) Blatt 11 Martin Apel Informatik VI, GB5/R 431; Tel.: 4775 Nicola Beume Informatik XI, OH14/R 233; Tel.: 7704 Jürgen Mäter Informatik IV, GB5/R 402; Tel.: 2411 Dortmund, den 14. Januar 2011 Übungen zur Vorlesung

Mehr

Algorithmen für Computerspiele

Algorithmen für Computerspiele Algorithmen für Computerspiele Künstliche Intelligenz von Manuel Bischof 3. Mai 2010 Gliederung Einleitung Was umfasst die KI? Nutzung in verschiedenen Genres Wo sind Verbesserungen notwendig? Möglichkeiten,

Mehr

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Michael Saecker Bekannte Lösungen für bekannte Probleme benutzen Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen Gemeinsames Vokabular für Designer 2 http://www.clickpix.de/sommer/architektur.jpg

Mehr