fh-hof template pattern richard göbel. fh-hof motivation gegeben ist ein allgemeiner algorithmus...
TRANSCRIPT
![Page 1: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/1.jpg)
FH-Hof
Template Pattern
Richard Göbel
![Page 2: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/2.jpg)
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
![Page 3: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/3.jpg)
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.
![Page 4: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/4.jpg)
FH-Hof
Abstrakter Ansatz
AbstractClass
op1()op2()…
algorithmTemplate()
ConcreteClass
op1()op2()
…
…op1()…op2()…
![Page 5: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/5.jpg)
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
![Page 6: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/6.jpg)
FH-Hof
Schiebepuzzle
1 2 3
4
5
6
7 8
![Page 7: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/7.jpg)
FH-Hof
Bewerte den Abstand zum Ziel
Zähle die falsch plazierten Steine
1 2 3
4
5
6
7 8
Falsch plazierte Steine: 3
![Page 8: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/8.jpg)
FH-Hof
Suchbaum mit Bewertung
1 2 3
4
5
6
7 8
1
2
3
4
5
6
7 8
1 2 3
4 5 6
7 8
1 2 3
4
5
6
7 8
1 2 3
4
5
6
7 8
1 2 3
4 5 6
7 8
1 2 3
4 5 6
7 8
1 2 3
4
5
6
7 8
3
4 2 4 4
3 0 3
![Page 9: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/9.jpg)
FH-Hof
Algorithmus
public abstract class BestFirstSearch {
private ArrayList<Node> processedNodes;
private ArrayList<Node> unprocessedNodes;
private ArrayList<Node> goalNodes;
public BestFirstSearch(Node startNode, ArrayList<Node> goalNodes) {
unprocessedNodes = new ArrayList<Node>();
processedNodes = new ArrayList<Node>();
unprocessedNodes.add(startNode);
this.goalNodes = goalNodes;
}
…
![Page 10: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/10.jpg)
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());
}
}
![Page 11: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/11.jpg)
FH-Hof
Interface Node
interface Node {
double getEstDist ();
ArrayList<Node> getChildNodes();
Node getParentNode();
}
![Page 12: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/12.jpg)
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<unprocessedNodes.size(); i++) {
if (best. getEstDist() < unprocessedNodes.get(i).getEstDist())
best = unprocessedNodes.get(i);
}
return best;
}
![Page 13: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/13.jpg)
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
![Page 14: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/14.jpg)
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 <Node> nodes = best.getChildNodes();
nodes remDups(nodes);
unprocessedNodes.addAll(nodes);
}
}
public ArrayList <Node> remDups(ArrayList<Node> nodes) {
return nodes;
}
![Page 15: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/15.jpg)
FH-Hof
Unterklasse - Duplikate
public ArrayList<Node> remDups(ArrayList<Node> nodes) {
ArrayList<Node> result = new ArrayList<Node>();
for (Node n : nodes) {
if ( ! processedNodes.contains(n) && ! unprocessedNodes.contains(n))
result.add(n);
}
return nodes;
}
![Page 16: FH-Hof Template Pattern Richard Göbel. FH-Hof Motivation Gegeben ist ein allgemeiner Algorithmus Anwendungen des Algorithmus unterscheiden sich an einigen](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6949795902118bedad/html5/thumbnails/16.jpg)
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?