public void TestAssignment()
        {
            var algorithm = new Dijkstra<int>(Graph, 1);
            algorithm.Run();

            var nodes = new[]
            {
                Graph.Get(7),
                Graph.Get(37),
                Graph.Get(59),
                Graph.Get(82),
                Graph.Get(99),
                Graph.Get(115),
                Graph.Get(133),
                Graph.Get(165),
                Graph.Get(188),
                Graph.Get(197),
            }.ToList();

            nodes.ForEach(n =>
            {
                Console.Write(n.Score);
                Console.Write(",");
            });
        }
        public void TestSmallGraph()
        {
            var g = new Graph<int>();
            for (int i = 0; i < 4; ++i) g.GetOrCreateVertex(i);

            g.Get(0).AddEdge(1, 1);
            g.Get(0).AddEdge(2, 3);
            g.Get(1).AddEdge(2, 1);
            g.Get(1).AddEdge(3, 3);
            g.Get(2).AddEdge(3, 1);

            var algorithm = new Dijkstra<int>(g, 0);
            algorithm.Run();

            Assert.AreEqual(0, g.Get(0).Score);
            Assert.AreEqual(1, g.Get(1).Score);
            Assert.AreEqual(2, g.Get(2).Score);
            Assert.AreEqual(3, g.Get(3).Score);
        }
示例#3
0
        static void Main(string[] args)
        {
            StreamReader sr = new StreamReader("input.txt");
            StreamWriter sw = new StreamWriter("output.txt");

            var tmp = sr.ReadLine().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);

            int n = int.Parse(tmp[0]);
            int m = int.Parse(tmp[1]);

            Graph graph = new Graph(n);

            int vertexS, vertexE, weight;

            while (!sr.EndOfStream)
            {
                var buf = sr.ReadLine().Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                vertexS = int.Parse(buf[0]);
                vertexE = int.Parse(buf[1]);
                weight  = int.Parse(buf[2]);

                graph.addEdge(vertexS - 1, vertexE - 1, weight);
            }

            if (graph._vertices.Count == 0)
            {
                sw.Write(0);
            }
            else
            {
                Dijkstra dijkstra = new Dijkstra(graph);

                int res = dijkstra.solve(0, n - 1);

                sw.Write(res);
            }

            sw.Close();
        }
        private void btnRun_Click(object sender, EventArgs e)
        {
            if (Vertices.Count != 0)
            {
                double[,] G = new double[Vertices.Count, Vertices.Count];

                foreach (Edge edge in Edges)
                {
                    G[edge.from, edge.to] = edge.weight;
                }

                try
                {
                    Dijkstra dijk = new Dijkstra(G, 0);
                    double[] dist = dijk.dist;
                    int[]    path = dijk.path;

                    for (int i = 0; i < dist.Length; i++)
                    {
                        Graphics g = panMap.CreateGraphics();

                        Vertex       p          = Vertices[i];
                        StringFormat distFormat = new StringFormat();
                        distFormat.Alignment = StringAlignment.Center;
                        g.DrawString("Uzaklık= " + dist[i].ToString(), new Font("Verdana", 11), new SolidBrush(Color.Red), p.p.X, p.p.Y - 7, distFormat);
                    }
                }
                catch (ArgumentException)
                {
                }
            }
            else
            {
                MetroFramework.MetroMessageBox.Show(this, "Düğümleri Oluşturup Ağırlıklarını Girmeden Neyi Çalıştırmaya Çalışıyosunuz :)", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#5
0
        public void TestSmallGraph()
        {
            var g = new Graph <int>();

            for (int i = 0; i < 4; ++i)
            {
                g.GetOrCreateVertex(i);
            }

            g.Get(0).AddEdge(1, 1);
            g.Get(0).AddEdge(2, 3);
            g.Get(1).AddEdge(2, 1);
            g.Get(1).AddEdge(3, 3);
            g.Get(2).AddEdge(3, 1);

            var algorithm = new Dijkstra <int>(g, 0);

            algorithm.Run();

            Assert.AreEqual(0, g.Get(0).Score);
            Assert.AreEqual(1, g.Get(1).Score);
            Assert.AreEqual(2, g.Get(2).Score);
            Assert.AreEqual(3, g.Get(3).Score);
        }
示例#6
0
        static void Main(string[] args)
        {
            Dijkstra t = new Dijkstra();

            t.print();
        }
示例#7
0
文件: Program.cs 项目: Miltt/Console
        static void Main(string[] args)
        {
            Graph graph = new Graph();
            graph.AddEdge(0, 1, 7);
            graph.AddEdge(0, 2, 9);
            graph.AddEdge(0, 5, 14);
            graph.AddEdge(1, 2, 10);
            graph.AddEdge(1, 3, 15);
            graph.AddEdge(2, 3, 11);
            graph.AddEdge(2, 5, 2);
            graph.AddEdge(3, 4, 6);
            graph.AddEdge(4, 5, 9);

            Dijkstra dijkstra = new Dijkstra(graph, graph.Vertices.First());
            dijkstra.Run();

            Console.WriteLine(dijkstra.Output());
            Console.WriteLine("Press any key..");
            Console.ReadKey();
        }
示例#8
0
文件: Map.cs 项目: Bejusek/GameServer
        // obliczenie najkrótszej ścieżki z lokacji A do B
        public int GetTime(uint _startLocation, uint _stopLocation)
        {
            dijkstra = new Dijkstra.Dijkstra();

            foreach (Connection connection in connections)
            {
                dijkstra.Connections.Add(connection);
            }
            /*foreach (City city in cityData)
            {
                dijkstra.Locations.Add(city.Id);
            }*/
            for (uint i = 0; i <= maxId + 1; i++)
            {
                dijkstra.Locations.Add(i);
            }

            // wyliczenie najkrótszej ścieżki między lokacjami
            return dijkstra.CalculateMinCost(_startLocation, _stopLocation);
        }
示例#9
0
文件: Map.cs 项目: Bejusek/GameServer
        public Map(GlobalMySql GlobalMySqlObject)
        {
            //zainicjalizowanie obiektu obliczeniowego Dijkstry
            dijkstra = new Dijkstra.Dijkstra();

            citiesNumber = 0;
            maxId = 0;

            //ustawienie połączenia z bazą
            dataBase = GlobalMySqlObject;
            if (dataBase.Connection.State != ConnectionState.Open)
            {
                try
                {
                    dataBase.Connection.Open();
                }
                catch
                {
                    //
                }
            }

            MySqlCommand query = dataBase.Connection.CreateCommand();

            //ustalenie najwiekszego identyfikatora miasta w bazie
            query.CommandText = "SELECT GREATEST( MAX( id_city ) , MAX( id_cityB ) ) AS max FROM `times`";
            try
            {
                maxId = uint.Parse(query.ExecuteScalar().ToString());
            }
            catch
            {
                //
            }

            //utworznie zapytania pobierającego dane o miastach
            query.CommandText = "SELECT * FROM `map_city`";

            //pobranie danych o miastach
            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //utworznie obiektu typu City z danymi z pojedynczego rekordu
                        City city = new City(
                            reader.GetUInt32("id"),
                            reader.GetString("name"),
                            reader.GetUInt32("accessLevel"),
                            reader.GetUInt32("leftCoordinate"),
                            reader.GetUInt32("topCoordinate"),
                            reader.GetString("icon")
                            );

                        //dodanie obiektu do listy miast
                        cityData.Add(city);

                        //zwiększenie liczby miast
                        citiesNumber++;
                    }
                }
            }
            catch
            {
                //
            }

            //utworzenie zapytania pobierającego czasy między lokacjami
            query.CommandText = "SELECT * FROM `times`";

            //pobranie danych o miastach
            try
            {
                using (MySqlDataReader reader = query.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        //utworzenie połączenia pomiędzy
                        Link(
                            reader.GetUInt32("id_city"),
                            reader.GetUInt32("id_cityB"),
                            reader.GetInt32("weight")
                            );
                    }
                }
            }
            catch
            {
                //
            }
        }
 static void Main(string[] args)
 {
     graph x = new graph();
     Console.WriteLine("Enter Starting Node (node0-4): ");
     string start = Console.ReadLine();
     x.Add("node0");
     x.Add("node1");
     x.Add("node2");
     x.Add("node3");
     x.Add("node4");
     x.AddEdge(x.vertex[0],x.vertex[1],5);
     x.AddEdge(x.vertex[0], x.vertex[2], 8);
     x.AddEdge(x.vertex[1], x.vertex[3], 7);
     x.AddEdge(x.vertex[2], x.vertex[4], 3);
     x.AddEdge(x.vertex[3], x.vertex[4], 5);
     Dijkstra test = new Dijkstra(x,start);
     foreach (Vertex e in test.dist)
     {
         Console.Write("Distance to "+e.index+": ");
         Console.WriteLine(e.distance);
     }
     Console.WriteLine();
 }