G
- Graph
oder OverlayGraph
public abstract class AbstractRouter<G extends AbstractGraph>
extends java.lang.Object
init(AbstractGraph, Log)
,
newRouter(Class, AbstractGraph, 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 <G extends AbstractGraph> |
graphClassOf(java.lang.Class<? extends AbstractRouter<?>> routerClass)
Holt die verwendete Graphen-Klasse aus dem
extends <T>
der abgeleiteten Router-Klasse. |
<R extends AbstractRouter<G>> |
init(G 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 <G extends AbstractGraph,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.
|
protected G extends AbstractGraph graph
protected Log log
public static <G extends AbstractGraph,R extends AbstractRouter<G>> R newRouter(java.lang.Class<R> routerClass, G graph, Log log)
G
- GraphenklasseR
- RouterklasserouterClass
- Class of Routergraph
- <G> AbstractGraph
log
- Log
NOT NULLAbstractRouter
public static <G extends AbstractGraph> java.lang.Class<G> graphClassOf(java.lang.Class<? extends AbstractRouter<?>> routerClass) throws java.lang.Exception
extends <T>
der abgeleiteten Router-Klasse.G
- Class of AbstractGraph
routerClass
- AbstractRouter
- Implementationjava.lang.Exception
- CrashAbstractRouter
public <R extends AbstractRouter<G>> R init(G graph, Log log)
newRouter(Class, AbstractGraph, 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)