예제 #1
0
        public GraphRoute Find(int startId, int destId)
        {
            IEnumerable <int> trail = new DijkstrasGraph <int>(EdgeContaniner.ToWeightGraph())
                                      .shortest_path(startId, destId);

            if (trail == null)
            {
                throw new ArgumentOutOfRangeException($"No route found between {startId} and {destId}");
            }

            return(ToGraphRoute(trail.Concat(new[] { startId })));
        }
예제 #2
0
 private IEnumerable <TableRelation> ToEdges(IEnumerable <int> trail)
 => trail
 .Select(x => NodeContainer[x])
 .PairWise((a, b) => EdgeContaniner.GetEdge(a.TableOrUdfName, b.TableOrUdfName));