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);
             }
         }
     }
 }