Esempio n. 1
0
        public void Baseline()
        {
            var sut   = new HamiltonPath();
            var graph = new UndirectedGraph(5);

            graph.Connect(0, 1);
            graph.Connect(0, 3);
            graph.Connect(1, 2);
            graph.Connect(1, 3);
            graph.Connect(1, 4);
            graph.Connect(2, 4);
            graph.Connect(3, 4);

            var(hasPath, hasCycle, path) = sut.HasHamiltonPath(graph);

            Assert.True(hasCycle);
            Assert.True(hasPath);
#pragma warning disable HAA0101 // Array allocation for params parameter
            Assert.Collection(path,
                              arg => Assert.Equal(0, arg),
                              arg => Assert.Equal(1, arg),
                              arg => Assert.Equal(2, arg),
                              arg => Assert.Equal(4, arg),
                              arg => Assert.Equal(3, arg),
                              arg => Assert.Equal(0, arg));
#pragma warning restore HAA0101 // Array allocation for params parameter
        }
    void CalcPossibleSolution()
    {
        HamiltonPath graph = new HamiltonPath(nodes, edges);

        possibleSolution = graph.GetPath();

        Debug.LogFormat("[Seven Deadly Sins #{0}] A possible button press order is [{1}] (there may be others).", moduleId, GetSinString(possibleSolution));
    }
Esempio n. 3
0
        private void btnCreateKRegularGraph_Click(object sender, RoutedEventArgs e)
        {
            draw.CurrentGraph = HamiltonPath.ConstructKRegularGraph((int)intUpDownNodes.Value, (int)intUpDownEdges.Value);

            if (draw.CurrentGraph.Nodes.Count == 0)
            {
                MessageBox.Show("Z podanych wartosci nie można utworzyc grafu k-regularnego!");
                return;
            }
            draw.ClearAll();
            draw.NodeRadius = (int)sliderNodeRadius.Value;
            draw.Radius     = (int)sliderRadius.Value;

            draw.DrawMainCircle();
            draw.Draw();
        }
Esempio n. 4
0
        public void BaselineWithNoPath()
        {
            var sut   = new HamiltonPath();
            var graph = new UndirectedGraph(5);

            graph.Connect(0, 1);
            graph.Connect(0, 3);
            graph.Connect(1, 2);
            graph.Connect(1, 4);
            graph.Connect(2, 4);

            var(hasPath, hasCycle, _) = sut.HasHamiltonPath(graph);

            Assert.False(hasCycle);
            Assert.False(hasPath);
        }
Esempio n. 5
0
        private void btnHamiltonianGraph_Click(object sender, RoutedEventArgs e)
        {
            if (draw.CurrentGraph.Nodes.Count > 0)
            {
                if (HamiltonPath.CheckHamiltonPath(draw.CurrentGraph))
                {
                    draw.ClearAll();
                    draw.NodeRadius = (int)sliderNodeRadius.Value;
                    draw.Radius     = (int)sliderRadius.Value;

                    draw.DrawMainCircle();
                    draw.Draw();
                }
                else
                {
                    MessageBox.Show("Na tym grafie nie istnieje cykl Hamiltona!");
                }
            }
        }