T
- Graph
oder OverlayGraph
public abstract class AbstractRouter<T>
extends java.lang.Object
init(Object, Log)
,
newRouter(Class, Object, Log)
,
graphClassOf(Class)
,
findPath(int, int, double, RouterParameters)
,
VertexRouter
,
OverlayVertexRouter
Constructor and Description |
---|
AbstractRouter() |
Modifier and Type | Method and Description |
---|---|
int[] |
findFastestPath(int sourceId,
int targetId)
Komfort-Version, die
findPath(int, int, boolean, boolean) aufruft. |
int[] |
findPath(int sourceId,
int targetId,
boolean shortestPath,
boolean aStar)
Komfort-Version, die
findPath(int, int, double, RouterParameters) mit konkreten
Parametern ruft und sonst alles auf Standard belaesst. |
int[] |
findPath(int sourceId,
int targetId,
double maxCost,
RouterParameters params)
Traversiert den Graphen, bricht ab, sobald
der Ziel-Vertex besucht wurde und liefert den Pfad.
|
int[] |
findShortestPath(int sourceId,
int targetId)
Komfort-Version, die
findPath(int, int, boolean, boolean) aufruft. |
static java.lang.Class<?> |
graphClassOf(java.lang.Class<? extends AbstractRouter<?>> routerClass)
Holt die verwendete Graphen-Klasse aus dem
extends <T>
der abgeleiteten Router-Klasse. |
<R extends AbstractRouter<T>> |
init(T graph,
Log log)
Initialisiert den Router.
|
abstract boolean |
isVisited(int vertexId)
Liefert true, wenn sich ein Vertex nach der Traversierung
in der BlackList (ClosedList) befindet, also besucht
oder erreicht wurde.
|
abstract int[] |
makePath(int targetId)
Erstellt den Pfad nach erfolgreichem
traverse(int, RouterConstraints, RouterParameters) . |
static AbstractRouter<?> |
newAbstractRouter(java.lang.Class<? extends AbstractRouter<?>> routerClass,
java.lang.Object graph,
Log log)
Erzeugt eine neue Router-Instanz aus einer Router-Klasse.
|
static <G,R extends AbstractRouter<G>> |
newRouter(java.lang.Class<R> routerClass,
G graph,
Log log)
Erzeugt eine neue Router-Instanz aus einer Router-Klasse.
|
abstract boolean |
traverse(int sourceId,
RouterConstraints constraints,
RouterParameters params)
Traversiert den Graphen bis zur Abbruchbedingung oder komplett.
|
void |
traverseFully(int sourceId,
RouterParameters params)
Traversiert den kompletten Graphen vom uebergebenen Vertex aus.
|
public static <G,R extends AbstractRouter<G>> R newRouter(java.lang.Class<R> routerClass, G graph, Log log)
G
- GraphenklasseR
- RouterklasserouterClass
- Class of Routergraph
- <G> Graph
oder OverlayGraph
log
- Log
NOT NULLAbstractRouter
newAbstractRouter(Class, Object, Log)
public static AbstractRouter<?> newAbstractRouter(java.lang.Class<? extends AbstractRouter<?>> routerClass, java.lang.Object graph, Log log)
newRouter(Class, Object, Log)
wird hier
die Typsicherheit erst zur Laufzeit ueberprueft. Dadurch lassen
sich jedoch auch dynamische Szenarien umsetzen.routerClass
- Class of Routergraph
- <G> Graph
oder OverlayGraph
log
- Log
NOT NULLAbstractRouter
public static java.lang.Class<?> graphClassOf(java.lang.Class<? extends AbstractRouter<?>> routerClass) throws java.lang.Exception
extends <T>
der abgeleiteten Router-Klasse.routerClass
- AbstractRouter
- Implementationjava.lang.Exception
- CrashAbstractRouter
public <R extends AbstractRouter<T>> R init(T graph, Log log)
newRouter(Class, Object, Log)
gerufen.R
- Router (Class)graph
- <G> Graph
oder OverlayGraph
log
- Log
NOT NULLthis
AbstractRouter
public abstract boolean traverse(int sourceId, RouterConstraints constraints, RouterParameters params)
sourceId
- Vertex Start Id (1-wertig)constraints
- RouterConstraints
Abbruchbedingung (NULLABLE).params
- RouterParameters
weitere Einstellungen (NULLABLE).RouterConstraints.targetIds
erreicht.makePath(int)
,
findPath(int, int, double, RouterParameters)
,
AbstractRouter
public abstract int[] makePath(int targetId)
traverse(int, RouterConstraints, RouterParameters)
.targetId
- Id des ZielVertex. Dies muss nicht zwangslaeufig
der Ziel-Knoten sein. Es kann auch ein beliebiger Vertex aus
isVisited(int)
uebergeben werden, um so weitere Pfade zu finden.
Dies muss jedoch von der jeweiligen Implementation des Routers unterstuetzt werden.null
, wenn nicht gefunden.AbstractRouter
public abstract boolean isVisited(int vertexId)
vertexId
- int Id des Vertex >0.makePath(int)
,
AbstractRouter
public final void traverseFully(int sourceId, RouterParameters params)
sourceId
- int Start-Vertexparams
- optionale Parameter (NULLABLE)public final int[] findPath(int sourceId, int targetId, double maxCost, RouterParameters params)
traverse(int, RouterConstraints, RouterParameters)
gerufen, und wenn true
, dann makePath(int)
zurueckgeliefert.sourceId
- Vertex Start IdtargetId
- Vertex Ziel IdmaxCost
- double 0 bzw Double.MAX_VALUE
, wenn keine Zeit- oder Laengen-Begrenzungparams
- RouterParameters
weitere Einstellungen (NULLABLE).null
, wenn nicht gefunden.AbstractRouter
,
findPath(int, int, boolean, boolean)
public final int[] findPath(int sourceId, int targetId, boolean shortestPath, boolean aStar)
findPath(int, int, double, RouterParameters)
mit konkreten
Parametern ruft und sonst alles auf Standard belaesst.sourceId
- Vertex Start IdtargetId
- Vertex Ziel IdshortestPath
- boolean true: Kuerzesten Pfad statt schnellsten finden.aStar
- boolean true: Setzt RouterParameters.setHeuristicFactor(double)
auf 1.null
, wenn nicht gefunden.AbstractRouter
,
findShortestPath(int, int)
,
findFastestPath(int, int)
public final int[] findShortestPath(int sourceId, int targetId)
findPath(int, int, boolean, boolean)
aufruft.sourceId
- Vertex Start IdtargetId
- Vertex Ziel Idnull
, wenn nicht gefunden.AbstractRouter
,
findFastestPath(int, int)
public final int[] findFastestPath(int sourceId, int targetId)
findPath(int, int, boolean, boolean)
aufruft.sourceId
- Vertex Start IdtargetId
- Vertex Ziel Idnull
, wenn nicht gefunden.AbstractRouter
,
findShortestPath(int, int)