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'])); }
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'])); }
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); }
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); }
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]); }
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)); }
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)); }
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)); }
public void IncorrectPeak() { WeightedGraphMatrix <int> graph = new WeightedGraphMatrix <int>(true, 1); graph.AddArc(0, 1, 234); }