Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen.

Ähnliche Präsentationen


Präsentation zum Thema: "FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen."—  Präsentation transkript:

1 FH-Hof Template Pattern Richard Göbel

2 FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen Stellen in verschiedenen Details An diesen Stellen sollen unterschiedliche Methoden aufgerufen werden

3 FH-Hof Ansatz Abstrakte Oberklasse mit abstrakten Methodendeklarationen für die variablen Teile des Algorithmus einer vollständigen Definition mit dem Algorithmus Der Algorithmus ruft die abstrakten Methoden der Oberklasse auf In der Unterklasse werden die abstrakten Methodendeklarationen implementiert.

4 FH-Hof Abstrakter Ansatz AbstractClass op1() op2() … algorithmTemplate() ConcreteClass op1() op2() … op1() … op2() …

5 FH-Hof Beispiel: Lösung kombinatorischer Probleme Gegeben Ein Startzustand Operationen erzeugen Folgezustände Finde eine Sequenz von Operationen die einen Zielzustand erreichen Best First Search Schätze den Abstand von Zuständen zu dem Ziel Wähle den Knoten mit dem geringsten Abstand zum Ziel und erzeuge alle Folgezustände Überprüfe ob bereits ein Zielzustand erreicht wurde

6 FH-Hof Schiebepuzzle

7 FH-Hof Bewerte den Abstand zum Ziel Zähle die falsch plazierten Steine Falsch plazierte Steine: 3

8 FH-Hof Suchbaum mit Bewertung

9 FH-Hof Algorithmus public abstract class BestFirstSearch { private ArrayList processedNodes; private ArrayList unprocessedNodes; private ArrayList goalNodes; public BestFirstSearch(Node startNode, ArrayList goalNodes) { unprocessedNodes = new ArrayList (); processedNodes = new ArrayList (); unprocessedNodes.add(startNode); this.goalNodes = goalNodes; } …

10 FH-Hof Algorithmus public abstract class BestFirstSearch { … abstract Node bestNode(); public Node search() { while (true) { Node best = bestNode(); if (goalNodes.contains(best)) return best; unprocessedNodes.remove(best); processedNodes.add(best); unprocessedNodes.addAll(best.getChildNodes()); }

11 FH-Hof Interface Node interface Node { double getEstDist (); ArrayList getChildNodes(); Node getParentNode(); }

12 FH-Hof Unterklasse für Best First Search public class BFSGetBest extends BestFirstSearch { public Node bestNode() { Node best = unprocessedNodes.get(0); for(int i=1; i

13 FH-Hof Abgeleitete Duplikate finden In einigen Aufgabenstellung können die Nachfolgerknoten einen Vorgänger enthalten Ermögliche in diesen Fällen das Aussortieren bereits vorhandener Knoten

14 FH-Hof Abstrakte Oberklasse - Duplikate public Node search() { while (true) { Node best = bestNode(); if (goalNodes.contains(best)) return best; unprocessedNodes.remove(best); processedNodes.add(best); ArrayList nodes = best.getChildNodes(); nodes remDups(nodes); unprocessedNodes.addAll(nodes); } public ArrayList remDups(ArrayList nodes) { return nodes; }

15 FH-Hof Unterklasse - Duplikate public ArrayList remDups(ArrayList nodes) { ArrayList result = new ArrayList (); for (Node n : nodes) { if ( ! processedNodes.contains(n) && ! unprocessedNodes.contains(n)) result.add(n); } return nodes; }

16 FH-Hof Diskussion Eigene Methoden in einen Algorithmus einbringen Für abstrakte Methoden müssen eigene Methoden definiert werden Vorhandene Methoden ("Hook") können durch eigene Methode ersetzt werden Welches Pattern wurde hier noch verwendet? Vervollständigen Sie das Suchverfahren An welchen Stellen verwenden Sie Templates für die Java Library?


Herunterladen ppt "FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen."

Ähnliche Präsentationen


Google-Anzeigen