Exemplo n.º 1
0
        internal DayShortestPathDict Execute(AdjacencyGraph <TravelItem, Edge <TravelItem> > graph, Dictionary <Edge <TravelItem>, double> distance, DayTravelDict dayTravel)
        {
            var result = new DayShortestPathDict();

            foreach (var(day, travel) in dayTravel)
            {
                double edgeCost(Edge <TravelItem> edge) => distance[edge];

                TravelItem root = travel[0];

                var tryGetPaths = graph.ShortestPathsDijkstra(edgeCost, root);

                TravelItem target = travel[^ 1];
Exemplo n.º 2
0
        internal CalculatorResult Execute(AdjacencyGraph <TravelItem, Edge <TravelItem> > graph,
                                          Dictionary <Edge <TravelItem>, double> distance,
                                          List <TravelItem> travelItems,
                                          Func <Edge <TravelItem>, double> distanceReceiver)
        {
            if (graph is null)
            {
                throw new ArgumentNullException(nameof(graph));
            }

            if (distance is null)
            {
                throw new ArgumentNullException(nameof(distance));
            }

            if (travelItems is null)
            {
                throw new ArgumentNullException(nameof(travelItems));
            }

            var dayCalc       = new DayDistanceCalculator();
            var pathCalc      = new ShortestPathCalculator();
            var dayTravelCalc = new DayTravelCalculator();

            DayTravelDict dayTravel = dayTravelCalc.Execute(travelItems);

            (DayDistancesDict dayDistances, DayEdgeDistanceDict edgeDist) = dayCalc.Execute(graph, distance, dayTravel, distanceReceiver);
            DayShortestPathDict shortestPaths = pathCalc.Execute(graph, distance, dayTravel);

            return(new CalculatorResult()
            {
                DayDistances = dayDistances,
                DayShortestPath = shortestPaths,
                DayTravel = dayTravel,
                DayEdgeDistance = edgeDist
            });
        }