Exemplo n.º 1
0
        private void PathFind()
        {
            erText.Text = "";

            try
            {
                PathConstanse pathConstanse = new PathConstanse();
                PathFinder    pathFinder    = new PathFinder(pathConstanse, graph);
                pathFinder.Search();
                playerScore = pathConstanse.GetMinLength();
            }
            catch
            {
                erText.Text = "Сгенерируйте граф";
            }
        }
Exemplo n.º 2
0
        public void Search()
        {
            List <Edge> edges     = new List <Edge>();
            List <Edge> pathEdges = new List <Edge>();

            Node startNode = null;

            int  min     = 0;
            bool isEnded = false;

            foreach (Node node in Graph.Nodes)
            {
                if (node.Identifier == "s")
                {
                    startNode = node;
                }
            }

            while (!isEnded)
            {
                if (startNode == null)
                {
                    startNode = pathEdges[pathEdges.Count - 1].End;
                }

                foreach (Edge edge in Graph.Edges)
                {
                    if (edge.Start.Equals(startNode))
                    {
                        edges.Add(edge);
                    }
                }

                for (int i = 0; i < edges.Count - 1; i++)
                {
                    if (edges[min].Weight > edges[i + 1].Weight)
                    {
                        min = i + 1;
                    }
                }

                pathEdges.Add(edges[min]);
                min       = 0;
                startNode = null;
                edges.Clear();

                if (pathEdges[pathEdges.Count - 1].End.Identifier == "e")
                {
                    isEnded = true;;
                }
            }

            Path path = new Path();

            foreach (Edge edge in pathEdges)
            {
                path.AddEdge(edge);
            }

            PathConstanse.AddPath(path);
            PathConstanse.SetShortestPath();
        }
Exemplo n.º 3
0
 public PathFinder(PathConstanse pathConstanse, Graph graph)
 {
     PathConstanse = pathConstanse;
     Graph         = graph;
 }