Class SQLFunctionAstar
- java.lang.Object
-
- com.arcadedb.query.sql.function.SQLFunctionAbstract
-
- com.arcadedb.query.sql.function.SQLFunctionConfigurableAbstract
-
- com.arcadedb.query.sql.function.math.SQLFunctionMathAbstract
-
- com.arcadedb.query.sql.function.graph.SQLFunctionHeuristicPathFinderAbstract
-
- com.arcadedb.query.sql.function.graph.SQLFunctionAstar
-
- All Implemented Interfaces:
SQLFunction
public class SQLFunctionAstar extends SQLFunctionHeuristicPathFinderAbstract
A*'s algorithm describes how to find the cheapest path from one node to another node in a directed weighted graph with husrestic function.The first parameter is source record. The second parameter is destination record. The third parameter is a name of property that represents 'weight' and fourth parameter represents the map of options.
If property is not defined in edge or is null, distance between vertexes are 0 .
- Author:
- Saeed Tabrizi (saeed a_t nowcando.com)
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<Vertex,Vertex>
cameFrom
protected Set<Vertex>
closedSet
protected Map<Vertex,Double>
fScore
protected Map<Vertex,Double>
gScore
static String
NAME
protected PriorityQueue<Vertex>
open
-
Fields inherited from class com.arcadedb.query.sql.function.graph.SQLFunctionHeuristicPathFinderAbstract
context, MIN, PARAM_CUSTOM_HEURISTIC_FORMULA, PARAM_D_FACTOR, PARAM_DIRECTION, PARAM_EDGE_TYPE_NAMES, PARAM_EMPTY_IF_MAX_DEPTH, PARAM_HEURISTIC_FORMULA, PARAM_MAX_DEPTH, PARAM_PARALLEL, PARAM_TIE_BREAKER, PARAM_VERTEX_AXIS_NAMES, paramCustomHeuristicFormula, paramDestinationVertex, paramDFactor, paramDirection, paramEdgeTypeNames, paramEmptyIfMaxDepth, paramHeuristicFormula, paramMaxDepth, paramParallel, paramSourceVertex, paramTieBreaker, paramVertexAxisNames, rnd, route
-
Fields inherited from class com.arcadedb.query.sql.function.SQLFunctionConfigurableAbstract
configuredParameters
-
Fields inherited from class com.arcadedb.query.sql.function.SQLFunctionAbstract
name
-
-
Constructor Summary
Constructors Constructor Description SQLFunctionAstar()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
aggregateResults()
A function can make calculation on several records before returning a result.LinkedList<Vertex>
execute(Object iThis, Identifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, CommandContext iContext)
Process a record.protected double
getDistance(Edge edge)
protected double
getDistance(Vertex node, Vertex parent, Vertex target)
protected double
getHeuristicCost(Vertex node, Vertex parent, Vertex target, CommandContext iContext)
protected Set<Edge>
getNeighborEdges(Vertex node)
Object
getResult()
Only called when function aggregates results after all records have been passed to the function.String
getSyntax()
Returns a convenient SQL String representation of the function.protected boolean
isVariableEdgeWeight()
-
Methods inherited from class com.arcadedb.query.sql.function.graph.SQLFunctionHeuristicPathFinderAbstract
booleanOrDefault, doubleOrDefault, gcdist, getDiagonalHeuristicCost, getDiagonalHeuristicCost, getEuclideanHeuristicCost, getEuclideanHeuristicCost, getEuclideanNoSQRHeuristicCost, getEuclideanNoSQRHeuristicCost, getManhattanHeuristicCost, getManhattanHeuristicCost, getMaxAxisHeuristicCost, getMaxAxisHeuristicCost, getNeighbors, getPath, getSimpleHeuristicCost, getTieBreakingHeuristicCost, getTieBreakingHeuristicCost, getTieBreakingRandomHeuristicCost, integerOrDefault, longOrDefault, stringArray, stringOrDefault
-
Methods inherited from class com.arcadedb.query.sql.function.math.SQLFunctionMathAbstract
getClassWithMorePrecision, getContextValue
-
Methods inherited from class com.arcadedb.query.sql.function.SQLFunctionConfigurableAbstract
config, toString
-
Methods inherited from class com.arcadedb.query.sql.function.SQLFunctionAbstract
getName
-
-
-
-
Field Detail
-
NAME
public static final String NAME
- See Also:
- Constant Field Values
-
open
protected final PriorityQueue<Vertex> open
-
-
Method Detail
-
execute
public LinkedList<Vertex> execute(Object iThis, Identifiable iCurrentRecord, Object iCurrentResult, Object[] iParams, CommandContext iContext)
Description copied from interface:SQLFunction
Process a record.iCurrentRecord
- : current recordiCurrentResult
- TODOiParams
- : function parameters, number is ensured to be within minParams and maxParams.iContext
- : object calling this function- Returns:
- function result, can be null. Special cases : can be null if function aggregate results, can be null if function filter results : this mean result is excluded
-
getSyntax
public String getSyntax()
Description copied from interface:SQLFunction
Returns a convenient SQL String representation of the function.Example :
myFunction( param1, param2, [optionalParam3])
This text will be used in exception messages.
- Returns:
- String , never null.
-
getResult
public Object getResult()
Description copied from interface:SQLFunction
Only called when function aggregates results after all records have been passed to the function.- Specified by:
getResult
in interfaceSQLFunction
- Overrides:
getResult
in classSQLFunctionAbstract
- Returns:
- Aggregation result
-
getDistance
protected double getDistance(Vertex node, Vertex parent, Vertex target)
- Specified by:
getDistance
in classSQLFunctionHeuristicPathFinderAbstract
-
getDistance
protected double getDistance(Edge edge)
-
aggregateResults
public boolean aggregateResults()
Description copied from interface:SQLFunction
A function can make calculation on several records before returning a result.Example of such function : sum, count, max, min ...
The final result of the aggregation is obtained by calling
SQLFunction.getResult()
- Specified by:
aggregateResults
in interfaceSQLFunction
- Overrides:
aggregateResults
in classSQLFunctionMathAbstract
- Returns:
- true if function aggregate results
-
getHeuristicCost
protected double getHeuristicCost(Vertex node, Vertex parent, Vertex target, CommandContext iContext)
- Specified by:
getHeuristicCost
in classSQLFunctionHeuristicPathFinderAbstract
-
isVariableEdgeWeight
protected boolean isVariableEdgeWeight()
- Overrides:
isVariableEdgeWeight
in classSQLFunctionHeuristicPathFinderAbstract
-
-