Documentation ¶
Index ¶
- Constants
- Variables
- type ContractionPath
- type Distance
- type Graph
- func (graph *Graph) AddEdge(from, to int64, weight float64) error
- func (graph *Graph) AddTurnRestriction(from, via, to int64) error
- func (graph *Graph) AddVertex(labelExternal, labelInternal int64) error
- func (graph *Graph) ComputePath(middleID int64, prevF, prevR map[int64]int64) []int64
- func (graph *Graph) CreateVertex(label int64) error
- func (graph *Graph) ExportToFile(fname string) error
- func (graph *Graph) FindVertex(labelExternal int64) (idx int64, ok bool)
- func (graph *Graph) Freeze()
- func (g *Graph) ImportRestrictionsFromFile(fname string) error
- func (graph *Graph) IsShortcut(labelFromVertex, labelToVertex int64) (ok bool)
- func (graph *Graph) Isochrones(source int64, maxCost float64) (map[int64]float64, error)
- func (graph *Graph) PrepareContractionHierarchies()
- func (graph *Graph) Preprocess() []int64
- func (graph *Graph) ShortestPath(source, target int64) (float64, []int64)
- func (graph *Graph) ShortestPathOneToMany(source int64, targets []int64) ([]float64, [][]int64)
- func (graph *Graph) Unfreeze()
- func (graph *Graph) VanillaShortestPath(source, target int64) (float64, []int64)
- func (graph *Graph) VanillaTurnRestrictedShortestPath(source, target int64) (float64, []int64)
- type Vertex
Constants ¶
const DEBUG_PREPROCESSING = false
Variables ¶
var ( // ErrGraphIsFrozen Graph is frozen, so it can not be modified. ErrGraphIsFrozen = fmt.Errorf("Graph has been frozen") )
Functions ¶
This section is empty.
Types ¶
type ContractionPath ¶ added in v1.7.1
ContractionPath
ViaVertex - ID of vertex through which the contraction exists Cost - summary cost of path between two vertices
type Distance ¶
type Distance struct {
// contains filtered or unexported fields
}
Distance Information about contraction between source vertex and contraction vertex
type Graph ¶
type Graph struct { Vertices []*Vertex // contains filtered or unexported fields }
Graph Graph object
pqImportance Heap to store importance of each vertex pqComparator Heap to store traveled distance mapping Internal map for 1:1 relation of internal IDs to user's IDs Vertices Slice of vertices of graph nodeOrdering Ordering of vertices shortcuts Found and stored shortcuts based on contraction hierarchies
func ImportFromFile ¶
ImportFromFile Imports graph (prepared by ExportToFile(fname string) function) from file of CSV-format Header of CSV-file containing information about edges:
from_vertex_id - int64, ID of source vertex to_vertex_id - int64, ID of arget vertex f_internal - int64, Internal ID of source vertex t_internal - int64, Internal ID of target vertex weight - float64, Weight of an edge
Header of CSV-file containing information about vertices:
vertex_id - int64, ID of vertex internal_id - int64, internal ID of target vertex order_pos - int, Position of vertex in hierarchies (evaluted by library) importance - int, Importance of vertex in graph (evaluted by library)
Header of CSV-file containing information about contractios between vertices:
from_vertex_id - int64, ID of source vertex to_vertex_id - int64, ID of arget vertex f_internal - int64, Internal ID of source vertex t_internal - int64, Internal ID of target vertex weight - float64, Weight of an edge via_vertex_id - int64, ID of vertex through which the contraction exists v_internal - int64, Internal ID of vertex through which the contraction exists
func (*Graph) AddEdge ¶
AddEdge Adds new edge between two vertices
from User's definied ID of first vertex of edge to User's definied ID of last vertex of edge weight User's definied weight of edge
func (*Graph) AddTurnRestriction ¶ added in v1.2.0
AddTurnRestriction Adds new turn restriction between two vertices via some other vertex
from User's definied ID of source vertex via User's definied ID of prohibited vertex (between source and target) to User's definied ID of target vertex
func (*Graph) AddVertex ¶
AddVertex Adds vertex with provided internal ID
labelExternal User's definied ID of vertex labelInternal internal ID of vertex
func (*Graph) ComputePath ¶
ComputePath Returns slice of IDs (user defined) of computed path
func (*Graph) CreateVertex ¶
CreateVertex Creates new vertex and assign internal ID to it
label User's definied ID of vertex
func (*Graph) ExportToFile ¶
ExportToFile Exports graph to file of CSV-format Header of edges CSV-file:
from_vertex_id - int64, ID of source vertex to_vertex_id - int64, ID of target vertex f_internal - int64, Internal ID of source vertex t_internal - int64, Internal ID of target vertex weight - float64, Weight of an edge
Header of vertices CSV-file:
vertex_id - int64, ID of vertex internal_id - int64, Internal ID of vertex order_pos - int, Position of vertex in hierarchies (evaluted by library) importance - int, Importance of vertex in graph (evaluted by library)
Header of contractios CSV-file:
from_vertex_id - int64, ID of source vertex to_vertex_id - int64, ID of arget vertex f_internal - int64, Internal ID of source vertex t_internal - int64, Internal ID of target vertex weight - float64, Weight of an edge via_vertex_id - int64, ID of vertex through which the contraction exists v_internal - int64, Internal ID of vertex through which the contraction exists
func (*Graph) FindVertex ¶ added in v1.7.3
FindVertex Returns index of vertex in graph
labelExternal - User defined ID of vertex If vertex is not found then returns (-1; false)
func (*Graph) Freeze ¶ added in v1.5.0
func (graph *Graph) Freeze()
Freeze Freeze graph. Should be called after contraction hierarchies had been prepared.
func (*Graph) ImportRestrictionsFromFile ¶ added in v1.2.1
ImportRestrictionsFromFile Imports turn restrictions from file of CSV-format into graph
Header of CSV-file: from_vertex_id;via_vertex_id;to_vertex_id; int;int;int
func (*Graph) IsShortcut ¶ added in v1.7.3
IsShortcut Returns true if edge is a shortcut (edge defined as two vertices)
func (*Graph) Isochrones ¶ added in v1.6.0
Isochrones Returns set of vertices and corresponding distances restricted by maximum travel cost for source vertex source - source vertex (user defined label) maxCost - restriction on travel cost for breadth search See ref. https://wiki.openstreetmap.org/wiki/Isochrone and https://en.wikipedia.org/wiki/Isochrone_map Note: implemented breadth-first searching path algorithm does not guarantee shortest pathes to reachable vertices (until all edges have cost 1.0). See ref: https://en.wikipedia.org/wiki/Breadth-first_search Note: result for estimated costs could be also inconsistent due nature of data structure
func (*Graph) PrepareContractionHierarchies ¶ added in v1.7.2
func (graph *Graph) PrepareContractionHierarchies()
PrepareContractionHierarchies Compute contraction hierarchies
func (*Graph) Preprocess ¶
Preprocess Computes contraction hierarchies and returns node ordering
func (*Graph) ShortestPath ¶
ShortestPath Computes and returns shortest path and it's cost (extended Dijkstra's algorithm)
If there are some errors then function returns '-1.0' as cost and nil as shortest path
source User's definied ID of source vertex target User's definied ID of target vertex
func (*Graph) ShortestPathOneToMany ¶ added in v1.2.8
ShortestPathOneToMany Computes and returns shortest path and it's cost (extended Dijkstra's algorithm) for one-to-many relation
If there are some errors then function returns '-1.0' as cost and nil as shortest path
source User's definied ID of source vertex targets User's definied IDs for target vertetices
func (*Graph) Unfreeze ¶ added in v1.5.0
func (graph *Graph) Unfreeze()
Unfreeze Freeze graph. Should be called if graph modification is needed.
func (*Graph) VanillaShortestPath ¶
VanillaShortestPath Computes and returns shortest path and it's cost (vanilla Dijkstra's algorithm)
If there are some errors then function returns '-1.0' as cost and nil as shortest path
source User's definied ID of source vertex target User's definied ID of target vertex
func (*Graph) VanillaTurnRestrictedShortestPath ¶ added in v1.2.0
VanillaTurnRestrictedShortestPath Computes and returns turns restricted shortest path and it's cost (vanilla Dijkstra's algorithm)
If there are some errors then function returns '-1.0' as cost and nil as shortest path
source User's definied ID of source vertex target User's definied ID of target vertex
type Vertex ¶
type Vertex struct { Label int64 // contains filtered or unexported fields }
Vertex All information about vertex
func (*Vertex) Importance ¶ added in v1.7.0
Importance Returns importance (in terms of contraction hierarchies) of vertex
func (*Vertex) OrderPos ¶ added in v1.7.0
OrderPos Returns order position (in terms of contraction hierarchies) of vertex
func (*Vertex) SetImportance ¶ added in v1.7.0
SetImportance Sets order position (in terms of contraction hierarchies) for vertex
func (*Vertex) SetOrderPos ¶ added in v1.7.0
SetOrderPos Sets order position (in terms of contraction hierarchies) for vertex