Class Graph2D

Inheritance Relationships

Base Type

Class Documentation

class Graph2D : public f2c::types::Graph

Public Functions

Graph2D &addDirectedEdge(const Point &from, const Point &to, int64_t cost)
Graph2D &addEdge(const Point &i, const Point &j, int64_t cost)
Graph2D &addDirectedEdge(const Point &from, const Point &to)
Graph2D &addEdge(const Point &i, const Point &j)
Graph2D &addDirectedEdge(const Point &from, const Point &to, Graph2D &short_path_g)
Graph2D &addEdge(const Point &i, const Point &j, Graph2D &short_path_g)
Graph2D &removeDirectedEdge(const Point &from, const Point &to)
Graph2D &removeEdge(const Point &i, const Point &j)
size_t numNodes() const
std::vector<Point> getNodes() const
bool hasNode(const Point &p) const

Check if a point is a node of this graph.

size_t nodeToIndex(const Point &p) const
Point indexToNode(size_t id) const
std::vector<std::vector<Point>> allPathsBetween(const Point &from, const Point &to) const

Paths between two nodes. Empty if either point is not a node.

std::vector<Point> shortestPath(const Point &from, const Point &to, int64_t INF = 1 << 30)

Shortest path between two nodes.

Empty if there is no path or either point is not a node.

int64_t shortestPathCost(const Point &from, const Point &to, int64_t INF = 1 << 30)

Cost of the shortest path between two nodes.

INF if there is no path or either point is not a node.

Graph &addDirectedEdge(size_t from, size_t to, int64_t cost)
Graph &addEdge(size_t i, size_t j, int64_t cost)
Graph &removeDirectedEdge(size_t from, size_t to)
Graph &removeEdge(size_t i, size_t j)
std::vector<std::vector<size_t>> allPathsBetween(size_t from, size_t to) const
std::vector<size_t> shortestPath(size_t from, size_t to, int64_t INF = 1e15)
int64_t shortestPathCost(size_t from, size_t to, int64_t INF = 1e15)
Graph &addDirectedEdge(size_t from, size_t to, int64_t cost)
Graph &addEdge(size_t i, size_t j, int64_t cost)
Graph &removeDirectedEdge(size_t from, size_t to)
Graph &removeEdge(size_t i, size_t j)
size_t matrixSize() const

Size of the matrices returned by getCosts() and getPaths().

Nodes are indexed by their own id, so this is the largest id plus one.

size_t numEdges() const
map_to_map_to_int getEdges() const
std::vector<size_t> getEdgesFrom(size_t s) const
int64_t getCostFromEdge(size_t from, size_t to, int64_t INF = 1e15) const
std::vector<std::vector<size_t>> allPathsBetween(size_t from, size_t to) const
void shortestPathsAndCosts(int64_t INF = 1e15)
void initializeMatrices(std::vector<std::vector<int64_t>> &cost_dest, std::vector<std::vector<int64_t>> &next_dest, int64_t INF = 1e15)
std::vector<std::vector<int64_t>> &getCosts()
short_path_container_t &getPaths()
std::vector<size_t> shortestPath(size_t from, size_t to, int64_t INF = 1e15)
std::vector<size_t> reconstructPath(size_t from, size_t to, std::vector<std::vector<int64_t>> &next) const
int64_t shortestPathCost(size_t from, size_t to, int64_t INF = 1e15)