Пример #1
0
        public void ThreePeaksAddArcOrientedMatrix()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 3);

            Assert.IsTrue(graph.Oriented);

            graph.AddArc(0, 1, 32);
            graph.AddArc(1, 0, -32);
            graph.AddArc(1, 2, -64);
            graph.AddArc(2, 1, 64);
            graph.AddArc(0, 2, 128);
            graph.AddArc(2, 0, 256);

            Assert.AreEqual(3, graph.PeakCount);

            Assert.AreEqual(32, graph.GetWeight(0, 1));
            Assert.AreEqual(-32, graph.GetWeight(1, 0));
            Assert.AreEqual(-64, graph.GetWeight(1, 2));
            Assert.AreEqual(64, graph.GetWeight(2, 1));
            Assert.AreEqual(128, graph.GetWeight(0, 2));
            Assert.AreEqual(256, graph.GetWeight(2, 0));


            //Assert.IsFalse(graph.ContainsArc(0, 0));
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(0, 2));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            //Assert.IsFalse(graph.ContainsArc(1, 1));
            Assert.IsTrue(graph.ContainsArc(1, 2));
            Assert.IsTrue(graph.ContainsArc(2, 0));
            Assert.IsTrue(graph.ContainsArc(2, 1));
            //Assert.IsFalse(graph.ContainsArc(2, 2));
        }
        public void CountAfter()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(false, 3);

            PeakCodes peakCodes = new PeakCodes()
            {
                'a', 'b', 'c'
            };

            graph.AddArc(peakCodes['a'], peakCodes['b'], 31);
            graph.AddArc(peakCodes['b'], peakCodes['c'], 42);
            graph.AddArc(peakCodes['c'], peakCodes['a'], 45);

            Assert.AreEqual(3, graph.PeakCount);
            Assert.AreEqual(42, graph.GetWeight(peakCodes['b'], peakCodes['c']));
            Assert.AreEqual(42, graph.GetWeight(peakCodes['c'], peakCodes['b']));
            Assert.AreEqual(31, graph.GetWeight(peakCodes['a'], peakCodes['b']));
            Assert.AreEqual(31, graph.GetWeight(peakCodes['b'], peakCodes['a']));
            Assert.AreEqual(45, graph.GetWeight(peakCodes['c'], peakCodes['a']));
            Assert.AreEqual(45, graph.GetWeight(peakCodes['a'], peakCodes['c']));

            graph.RemovePeak(peakCodes['c']);

            Assert.AreEqual(2, graph.PeakCount);
            Assert.AreEqual(31, graph.GetWeight(peakCodes['a'], peakCodes['b']));
            Assert.AreEqual(31, graph.GetWeight(peakCodes['b'], peakCodes['a']));
        }
Пример #3
0
        public void OutgoingArcsRemovePeak()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 3);

            graph.AddArc(0, 2, 234);
            graph.AddArc(1, 0, 235);
            graph.AddArc(1, 2, 236);

            Assert.IsTrue(graph.ContainsArc(0, 2));

            int[] ans = new int[] { 235, 236 };
            int   ind = 0;

            foreach (var el in graph.OutGoingArcs(1))
            {
                Assert.IsTrue(el.Item2 == ans[ind]);
                ind++;
            }

            ind = 0;

            Assert.IsTrue(graph.ContainsArc(0, 2));

            graph.RemovePeak(2);

            foreach (var el in graph.OutGoingArcs(1))
            {
                Assert.AreEqual(235, el.Item2);
            }

            foreach (var el in graph.OutGoingArcs(0))
            {
                Assert.AreEqual(235, el.Item2);
            }
        }
        public void MatrixFiveModern()
        {
            WeightedGraphMatrix <string> graph = new WeightedGraphMatrix <string>(true, 5);

            PeakCodes peakCodes = new PeakCodes()
            {
                'a', 'b', 'c', 'd', 'e'
            };

            graph.AddArc(peakCodes['a'], peakCodes['b'], "a");
            graph.AddArc(peakCodes['b'], peakCodes['c'], "b");
            graph.AddArc(peakCodes['c'], peakCodes['d'], "c");
            graph.AddArc(peakCodes['d'], peakCodes['e'], "d");
            graph.AddArc(peakCodes['e'], peakCodes['a'], "e");

            graph.RemovePeak(peakCodes['c']);
            peakCodes.Remove('c');

            Assert.AreEqual(4, graph.PeakCount);
            Assert.AreEqual("a", graph.GetWeight(peakCodes['a'], peakCodes['b']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a']));

            Assert.AreEqual("d", graph.GetWeight(peakCodes['d'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['d']));

            Assert.AreEqual("e", graph.GetWeight(peakCodes['e'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['e']));

            Assert.IsTrue(graph.ContainsArc(peakCodes['d'], peakCodes['e']));
            Assert.IsTrue(graph.ContainsArc(peakCodes['e'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['d']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['b']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['e']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['e'], peakCodes['b']));

            graph.RemovePeak(peakCodes['e']);
            peakCodes.Remove('e');

            Assert.AreEqual(3, graph.PeakCount);

            Assert.AreEqual("a", graph.GetWeight(peakCodes['a'], peakCodes['b']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a']));

            Assert.IsTrue(graph.ContainsArc(peakCodes['a'], peakCodes['b']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['a'], peakCodes['d']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['d']));

            Assert.IsFalse(graph.ContainsArc(peakCodes['b'], peakCodes['a'])); // ??? - ошибка
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['a']));
            Assert.IsFalse(graph.ContainsArc(peakCodes['d'], peakCodes['b']));
        }
Пример #5
0
        public void OutComingArcsUnoriented()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(false, 2);

            graph.AddArc(0, 1, 234);
            Assert.AreEqual(2, graph.PeakCount);
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.IsFalse(graph.Oriented);
        }
Пример #6
0
        public void AddArcRangeExceptionMatrix()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(false, 2);

            Assert.IsFalse(graph.Oriented);

            Assert.AreEqual(2, graph.PeakCount);

            graph.AddArc(0, 2, 2);
        }
Пример #7
0
        public void ThreePeaks()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 3);

            graph.AddArc(1, 0, 2);
            graph.AddArc(1, 2, 3);

            graph.AddArc(0, 2, 4);

            Assert.AreEqual(1, Kahn.Run(new UnweightedGraphWrapper <int>(graph))[0]);
            Assert.AreEqual(0, Kahn.Run(new UnweightedGraphWrapper <int>(graph))[1]);
            Assert.AreEqual(2, Kahn.Run(new UnweightedGraphWrapper <int>(graph))[2]);
        }
Пример #8
0
        public void AddArcRangeExceptionOrientedMatrix()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 2);

            Assert.IsTrue(graph.Oriented);


            Assert.AreEqual(2, graph.PeakCount);

            graph.AddArc(0, 1, 2);
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsFalse(graph.ContainsArc(1, 0));
            Assert.AreEqual(2, graph.GetWeight(0, 1));
            Assert.AreEqual(2, graph.GetWeight(1, 0));
        }
Пример #9
0
        public void TwoPeaksAddArcMatrix()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(false, 2);

            Assert.IsFalse(graph.Oriented);

            Assert.AreEqual(2, graph.PeakCount);

            graph.AddArc(0, 1, 2);
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.AreEqual(2, graph.GetWeight(0, 1));
            Assert.AreEqual(2, graph.GetWeight(1, 0));

            graph.AddArc(1, 0, 4);
            Assert.IsTrue(graph.ContainsArc(0, 1));
            Assert.IsTrue(graph.ContainsArc(1, 0));
            Assert.AreEqual(4, graph.GetWeight(0, 1));
            Assert.AreEqual(4, graph.GetWeight(1, 0));
        }
Пример #10
0
        public void IncomingArcsCountOriented()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 5);

            graph.AddArc(0, 1, 234);
            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(0, graph.InArcsCount(0));

            graph.AddArc(1, 2, 234);
            Assert.AreEqual(1, graph.InArcsCount(1));
            Assert.AreEqual(1, graph.InArcsCount(2));

            graph.AddArc(3, 2, 234);
            Assert.AreEqual(2, graph.InArcsCount(2));
            Assert.AreEqual(0, graph.InArcsCount(3));

            graph.AddArc(4, 2, 234);
            Assert.AreEqual(3, graph.InArcsCount(2));
            Assert.AreEqual(0, graph.InArcsCount(4));

            graph.AddArc(0, 2, 234);
            Assert.AreEqual(4, graph.InArcsCount(2));
            Assert.AreEqual(0, graph.InArcsCount(0));
        }
Пример #11
0
        public void IncorrectPeak()
        {
            WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 1);

            graph.AddArc(0, 1, 234);
        }