public void AddEdge(Id <AbstractNode> sourceNodeId, Id <AbstractNode> destNodeId, int cost, int level = 1, bool inter = false, List <Id <AbstractNode> > pathPathNodes = null) { var edgeInfo = new AbstractEdgeInfo(cost, level, inter); edgeInfo.InnerLowerLevelPath = pathPathNodes; AbstractGraph.AddEdge(sourceNodeId, destNodeId, edgeInfo); }
private static bool IsValidEdgeForLevel(AbstractEdgeInfo edgeInfo, int level) { if (edgeInfo.IsInterClusterEdge) { return(edgeInfo.Level >= level); } return(edgeInfo.Level == level); }
private void CreateIntraClusterEdges(Cluster cluster) { foreach (var point1 in cluster.EntrancePoints) { foreach (var point2 in cluster.EntrancePoints) { if (point1 != point2 && cluster.AreConnected(point1.AbstractNodeId, point2.AbstractNodeId)) { var abstractEdgeInfo = new AbstractEdgeInfo(cluster.GetDistance(point1.AbstractNodeId, point2.AbstractNodeId), 1, false); _hierarchicalMap.AbstractGraph.AddEdge( point1.AbstractNodeId, point2.AbstractNodeId, abstractEdgeInfo); } } } }