39 #define GNMGFID GIntBig 41 #define GNM_EDGE_DIR_BOTH 0 // bidirectional 42 #define GNM_EDGE_DIR_SRCTOTGT 1 // from source to target 43 #define GNM_EDGE_DIR_TGTTOSRC 2 // from target to source 46 typedef std::vector<GNMGFID> GNMVECTOR, *LPGNMVECTOR;
47 typedef const std::vector<GNMGFID> GNMCONSTVECTOR;
48 typedef const std::vector<GNMGFID>* LPGNMCONSTVECTOR;
49 typedef std::pair<GNMGFID,GNMGFID> EDGEVERTEXPAIR;
50 typedef std::vector< EDGEVERTEXPAIR > GNMPATH;
99 virtual void AddVertex(GNMGFID nFID);
105 virtual void DeleteVertex(GNMGFID nFID);
116 virtual void AddEdge(GNMGFID nConFID, GNMGFID nSrcFID, GNMGFID nTgtFID,
123 virtual void DeleteEdge(GNMGFID nConFID);
131 virtual void ChangeEdge(GNMGFID nFID,
double dfCost,
double dfInvCost);
138 virtual void ChangeBlockState (GNMGFID nFID,
bool bBlock);
145 virtual bool CheckVertexBlocked(GNMGFID nFID)
const;
154 virtual void ChangeAllBlockState (
bool bBlock =
false);
168 virtual GNMPATH DijkstraShortestPath(GNMGFID nStartFID, GNMGFID nEndFID);
189 virtual std::vector<GNMPATH> KShortestPaths(GNMGFID nStartFID,
190 GNMGFID nEndFID,
size_t nK);
205 virtual GNMPATH ConnectedComponents(
const GNMVECTOR &anEmittersIDs);
208 virtual void Clear();
226 virtual void DijkstraShortestPathTree(GNMGFID nFID,
227 const std::map<GNMGFID, GNMStdEdge> &mstEdges,
228 std::map<GNMGFID, GNMGFID> &mnPathTree);
230 virtual GNMPATH DijkstraShortestPath(GNMGFID nStartFID, GNMGFID nEndFID,
231 const std::map<GNMGFID, GNMStdEdge> &mstEdges);
233 virtual LPGNMCONSTVECTOR GetOutEdges(GNMGFID nFID)
const;
234 virtual GNMGFID GetOppositVertex(GNMGFID nEdgeFID, GNMGFID nVertexFID)
const;
235 virtual void TraceTargets(std::queue<GNMGFID> &vertexQueue,
236 std::set<GNMGFID> &markedVertIds,
237 GNMPATH &connectedIds);
239 std::map<GNMGFID, GNMStdVertex> m_mstVertices;
240 std::map<GNMGFID, GNMStdEdge> m_mstEdges;
GNMGFID nTgtVertexFID
Target vertex FID.
Definition: gnmgraph.h:56
Core portability definitions for CPL.
GNMGFID nSrcVertexFID
Source vertex FID.
Definition: gnmgraph.h:55
bool bIsBidir
Whether the edge is bidirectonal.
Definition: gnmgraph.h:57
The simple graph class, which holds the appropriate for calculations graph in memory (based on STL co...
Definition: gnmgraph.h:83
bool bIsBloked
Whether the edge is blocked.
Definition: gnmgraph.h:60
bool bIsBloked
Whether the vertex is blocked.
Definition: gnmgraph.h:67
double dfInvCost
Inverse cost.
Definition: gnmgraph.h:59
Edge.
Definition: gnmgraph.h:53
GNMVECTOR anOutEdgeFIDs
TODO.
Definition: gnmgraph.h:66
double dfDirCost
Direct cost.
Definition: gnmgraph.h:58
Vertex.
Definition: gnmgraph.h:64