Kognitive Systeme 1 - Grundlagen und Beispiele zu Suche

Werbung
Kognitive Systeme 1
Grundlagen und Beispiele zu Suche
Dr.-Ing. Bernd Ludwig
Lehrstuhl für Künstliche Intelligenz
Friedrich-Alexander-Universität Erlangen-Nürnberg
29.10.2009
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
1 / 27
Inhalt
1
Definition: Was ist ein Suchraum?
2
Darstellung eines diskreten Suchraums als Graph
3
Implizite und explizite Suchräume
4
Anwendung: Landkarten
Implementierung eines package für Graphen
JavaDesktop
OpenStreet-Maps in Java nutzen
Geocoding über Google Maps
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
2 / 27
Zustände
Definition
Ein Zustand ist die Menge der zu einem festen Zeitpunkt geltenden
Eigenschaften eines modellierten Systems oder einer Umgebung.
Ein Zustand kann symbolisch (d.h. durch eine Menge von
Formeln) oder numerisch (d.h. durch einen Merkmalsvektor
repräsentiert sein.
Ein Zustand kann Eigenschaften haben, die im Modell des
Systems oder der Umgebung nicht enthalten sind (hidden
context).
Zustände stehen untereinander in einer Nachfolgerelation:
Zustand s2 folgt auf s1 , wenn das KI-System eine Aktion a
ausführen kann, die bewirkt, dass die dann geltenden
Eigenschaften des modellierten Systems durch s2 beschrieben
sind.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
3 / 27
Beispiel: Routenplanung
Zustand: wo, d.h. an welchem Ort befindet sich das Fahrzeug?
Example
• Zustand s1 : Das Fahrzeug
befindet sich bei Punkt A.
• Aktion: Fahre zu Punkt B.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
4 / 27
Beispiel: Routenplanung
Example
• Zustand s2 : Das Fahrzeug
befindet sich bei Punkt B.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
5 / 27
Formalisierung des Zustandsübergangs
Graphische Darstellung
fahren
A
B
Formale Darstellung
Definition (Zustandsüberführung)
I
Ein eindeutiger Zustand s1 wird durch genau einen Knoten dargestellt.
I
Eine Aktion, die im Zustand s1 ausgeführt wird und in den Zustand s2
führt, wird durch eine Kante (s1 , s2 ) dargestellt.
Definition (Zustandsraum)
I
Ein Zustandsraum, d.h. die Menge aller möglichen Zustände ist durch
einen gerichteten Graphen darstellbar.
I
Eine Folge von Aktionen wird durch einen Pfad repräsentiert.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
6 / 27
Zustandsgraph
Ein Zustandsgraph (state space graph) ist eine Formalisierung
eines Zustandsraums (state space), also der Menge aller
möglichen Zustände und Zustandsübergänge.
Zustandsgraphen sind gerichtet: die Quelle einer Kante gibt an, in
welchem Zustand eine Aktion ausgeführt wird. Die Senke gibt an,
in welchen Zustand die Aktion führt.
branching factor b eines Knoten (Zustands) n: b ist die Zahl der
Nachfolger, die n im Graphen hat.
Jeder unterschiedliche Nachfolger beginnt nichtdeterministisch
einen neuen Pfad, also eine neue Aktionsfolge, von n aus.
Gerichtete Bäume sind spezielle Zustandsgraphen, in denen
jeder Zustand von genau einem Vorgängerzustand über genau
eine Aktion erreicht werden kann.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
7 / 27
Suche
Definition (Suchproblem)
Unter dem Suchproblem versteht man die Aufgabe, mittels eines
geeigneten Algorithmus einen Pfad im Zustandsgraphen zu finden, der
vom aktuellen Zustand in einen ausgezeichneten Zustand, den
Zielzustand (die Lösung) führt.
Warum ist die Suche schwierig?
Komplexität: Der Suchaufwand hängt wesentlich vom branching
factor in jedem Knoten ab.
Nichtdeterminismus: Wenn b > 1, welcher Nachfolger führt (am
besten) zu einer Lösung?
Optimalität: Wenn es mehrere Pfade zu einer Lösung gibt,
welcher ist optimal (hinsichtlich des Ergebnisses und des
Berechnungsaufwands)?
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
8 / 27
branching factor
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
9 / 27
Ein vollständiger Zustandsraum
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
10 / 27
Informationsqualität
Vollständigkeit des Zustandsgraphen: sind alle möglichen
Zustände bekannt und erreichbar oder fehlt der Suche
Information?
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
11 / 27
Informationsqualität
Verlässlichkeit: ist die Information im Graphen korrekt oder ist die
Information unsicher?
Sensorwerte schwanken
I
I
innerhalb ihrer Messgenauigkeit
abhängig von den Messbedingungen
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
12 / 27
Expansion von Suchgraphen
Definition (Expansion)
Expansion eines Knoten in einem Suchgraphen ist der Vorgang, daß
alle Nachfolger des Knoten gesucht und in einer bestimmten
Reihenfolge abgearbeitet werden.
zwei Zustände eines Suchraums:
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
13 / 27
Implizite Darstellung von Suchräumen
Explizit gegebener Suchraum: alle möglichen Knoten und
Kanten sind im Speicher des Rechners vorhanden.
Während der Suchraum der Autobahnverbindungen explizit
gegeben ist, ist der Suchraum aller Busverbindungen an einem
Tag in einer Großstadt für viele Hauptspeicher zu groß.
So ein Graph wird implizit repräsentiert. D.h.: wenige Knoten sind
explizit vorhanden, aber alle anderen können durch
Anwendung von Regeln generiert werden.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
14 / 27
Inhalt
1
Definition: Was ist ein Suchraum?
2
Darstellung eines diskreten Suchraums als Graph
3
Implizite und explizite Suchräume
4
Anwendung: Landkarten
Implementierung eines package für Graphen
JavaDesktop
OpenStreet-Maps in Java nutzen
Geocoding über Google Maps
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
15 / 27
Die Klasse ALGOGraph
Definition (ALGOGraph)
package graph;
public abstract class ALGOGraph {
protected Hashtable<Integer,ALGOPlacemarkNode>
nodes;
protected Hashtable<Integer,LinkedList<ALGOEdge>>
edges;
}
Ein Graph wird dargestellt als ein Objekt mit
einer Tabelle, die alle Knoten speichert (ID des Knoten ist der
key).
einer Tabelle, die die Liste aller ausgehenden Kanten eines
Knoten speichert (ID der Quelle ist der key).
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
16 / 27
Die Klasse ALGOPlacemarkNode
Definition (ALGOPlacemarkNode)
package graph;
public class ALGOPlacemarkNode extends ALGONode {
protected int nodeID;
protected double nodeCost;
protected Placemark myData;
}
Ein Knoten
hat eine eindeutige ID.
hat eine Bewertung (Knoten), wenn er tatsächlich aktueller
Zustand wird (auf einem Lösungspfad),
anwendungsspezifische Daten (hier Placemark zur Speicherung
von Inoformation über eine GPS-Position (siehe später).
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
17 / 27
Die Klasse ALGOEdge
Definition (ALGOEdge)
package graph;
public class ALGOEdge {
protected double costs;
protected int sourceID, sinkID;
}
Eine Kante
hat eine Quelle und eine Senke (jeweils referenziert über ihre ID)
und
Kosten, wenn die durch die Kante repräsentierte Aktion
ausgeführt wird, während das System sich im Zustand befindet,
der der Senke entspricht.
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
18 / 27
Inhalt
1
Definition: Was ist ein Suchraum?
2
Darstellung eines diskreten Suchraums als Graph
3
Implizite und explizite Suchräume
4
Anwendung: Landkarten
Implementierung eines package für Graphen
JavaDesktop
OpenStreet-Maps in Java nutzen
Geocoding über Google Maps
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
19 / 27
Java-Library für komplexe Applikationen
Sun WebSite mit ausführlichen Informationen
Swing Application Framework API (JSR-296)
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
20 / 27
Code-Beispiel
Example (MapApp)
package mapapp;
import org.jdesktop.application.Application;
public class MapApp extends SingleFrameApplication {
@Override protected void startup() {
show(new MapView(this));
}
public static MapApp getApplication() {
return Application.getInstance(MapApp.class);
}
public static void main(String[] args) {
launch(MapApp.class, args);
}
}
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
21 / 27
Code-Beispiel
Example (MapView)
public class MapView extends FrameView {
public MapView(SingleFrameApplication app) {
super(app);
initComponents();
ResourceMap resourceMap = getResourceMap();
int messageTimeout =
resourceMap.getInteger("StatusBar.messageTimeout");
}
@org.jdesktop.application.Action
public void goChicago() {
}
@org.jdesktop.application.Action
public void addWaypoint() {
}
}
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
22 / 27
Inhalt
1
Definition: Was ist ein Suchraum?
2
Darstellung eines diskreten Suchraums als Graph
3
Implizite und explizite Suchräume
4
Anwendung: Landkarten
Implementierung eines package für Graphen
JavaDesktop
OpenStreet-Maps in Java nutzen
Geocoding über Google Maps
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
23 / 27
org.jdesktop.swingx.JXMapKit
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
24 / 27
Grundkonzept
JXMapKit bietet die Funktionalität, Karten von OpenStreetMaps
in einem speziellen JPanel-Objekt (JXMapViewer) anzuzeigen.
Mit einem WaypointPainter können eigene Layer in die Karte
gezeichnet werden.
Example (HighWayRoutePainter)
public class HighWayRoutePainter extends WaypointPainter
protected void doPaint(java.awt.Graphics2D g,
JXMapViewer map, int width, int height) {
Waypoint w1, w2;
Point2D p1, p2;
Iterator<Waypoint> it = getWaypoints().iterator();
{
...
while (it.hasNext()) {
w2 = it.next();
p2 = map.convertGeoPositionToPoint(w2.getPosition());
Line2D l = new Line2D.Double(p1, p2);
g.draw(l);
w1 = w2; p1 = p2;
}
}
}
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
25 / 27
Inhalt
1
Definition: Was ist ein Suchraum?
2
Darstellung eines diskreten Suchraums als Graph
3
Implizite und explizite Suchräume
4
Anwendung: Landkarten
Implementierung eines package für Graphen
JavaDesktop
OpenStreet-Maps in Java nutzen
Geocoding über Google Maps
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
26 / 27
Eine Java-Library für KML und Google Maps
Google stellt eine API für die Karten zur Verfügung.
Zur Nutzung muss man sich einen key auf der Seite Google Maps
API besorgen.
Die Abfrage von Geokoordinaten für Adressen ist dann sehr
einfach:
Example
URL mapURL =
new URL("http://maps.google.com/maps/geo?
q=ADDR&output=xml&key=XXX");
InputStreamReader data = mapURL.openStream();
Kml kmlRoot = new KMLParser().parse(data)));
if (kmlRoot.getPlacemark() != null) {
Point p = kmlRoot.getPlacemark().getGeometry();
System.out.println(p.getCoordinates());
else System.out.println("keine GPS-Koordinaten\n");
Dr.-Ing. Bernd Ludwig (Lehrstuhl KI)
Kognitive Systeme 1
Kapitel 3
27 / 27
Herunterladen