Пример #1
0
        public void DistanceTest()
        {
            var alg = new QuickGraph.Algorithms.ShortestPath.UndirectedDijkstraShortestPathAlgorithm <MapNode, UndirectedEdge <MapNode> >(Maps.Fleet, w => 1);

            alg.SetRootVertex(MapNodes.Get("sev"));
            alg.Compute();
            Assert.AreEqual(6, alg.Distances[MapNodes.Get("ven")]);
            Assert.AreEqual(13, alg.Distances[MapNodes.Get("stp_sc")]);
        }
Пример #2
0
        public static OccupiedMapNodeGroups Get(Board board, int groupSize = 6)
        {
            OccupiedMapNodeGroups groups = new OccupiedMapNodeGroups();

            foreach (var kvp in board.OccupiedMapNodes)
            {
                var alg = new QuickGraph.Algorithms.ShortestPath.UndirectedDijkstraShortestPathAlgorithm <MapNode, UndirectedEdge <MapNode> >(kvp.Value.MyMap, w => 1);
                alg.SetRootVertex(kvp.Key);
                alg.Compute();

                List <KeyValuePair <MapNode, double> > orderedDistances = alg.Distances
                                                                          .Where(kvp2 => board.OccupiedMapNodes.ContainsKey(kvp2.Key))
                                                                          .OrderBy(kvp2 => kvp2.Value).ToList();

                var group = new OccupiedMapNodeGroup();
                group.AddRange(orderedDistances.Take(groupSize).Select(kvp2 => kvp2.Key));
                groups.Add(group);
            }
            return(groups);
        }