本文整理汇总了C#中Graph.RemoveEdge方法的典型用法代码示例。如果您正苦于以下问题:C# Graph.RemoveEdge方法的具体用法?C# Graph.RemoveEdge怎么用?C# Graph.RemoveEdge使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Graph
的用法示例。
在下文中一共展示了Graph.RemoveEdge方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Undirected
public void Undirected()
{
var graph = new Graph<int>(false);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
var vertex4 = new Vertex<int>(4);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddVertex(vertex4);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex3, vertex2);
graph.AddEdge(vertex1, vertex3);
Assert.IsFalse(graph.IsStronglyConnected());
graph.AddEdge(vertex2, vertex4);
Assert.IsTrue(graph.IsStronglyConnected());
graph.RemoveEdge(vertex2, vertex3);
Assert.IsTrue(graph.IsStronglyConnected());
graph.RemoveEdge(vertex1, vertex3);
Assert.IsFalse(graph.IsStronglyConnected());
}
示例2: Simple
public void Simple()
{
var graph = new Graph<int>(true);
var vertex1 = graph.AddVertex(1);
var vertex2 = graph.AddVertex(2);
var vertex3 = graph.AddVertex(3);
var vertex4 = graph.AddVertex(4);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex2, vertex3);
graph.AddEdge(vertex2, vertex4);
graph.AddEdge(vertex3, vertex4);
Assert.IsFalse(graph.IsCyclic());
// Add a cycle
graph.AddEdge(vertex4, vertex1);
Assert.IsTrue(graph.IsCyclic());
// Remove the cycle again
graph.RemoveEdge(vertex4, vertex1);
Assert.IsFalse(graph.IsCyclic());
// Add a cycle again
graph.AddEdge(vertex2, vertex1);
Assert.IsTrue(graph.IsCyclic());
// Remove the cycle
graph.RemoveEdge(vertex2, vertex1);
Assert.IsFalse(graph.IsCyclic());
}
示例3: TestAddRemove1
public void TestAddRemove1()
{
using (var graph = new Graph<Edge>(new MemoryMappedStream(new MemoryStream()), 1000, Edge.MapFromDelegate, Edge.MapToDelegate, Edge.SizeUints))
{
uint tagsId = 10;
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = tagsId
}, null);
// test forward edge.
var edges = graph.GetEdges(vertex1).ToKeyValuePairs();
Assert.AreEqual(1, edges.Length);
Assert.AreEqual(tagsId, edges[0].Value.Tags);
Assert.AreEqual(vertex2, edges[0].Key);
Assert.AreEqual(true, edges[0].Value.Forward);
// remove edge again.
graph.RemoveEdge(vertex1, vertex2);
// check if the edge is gone.
edges = graph.GetEdges(vertex1).ToKeyValuePairs();
Assert.AreEqual(0, edges.Length);
}
}
示例4: DirectedVertices
public void DirectedVertices()
{
var graph = new Graph<int>(true);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex3, vertex2);
graph.AddEdge(vertex1, vertex3);
Assert.AreEqual(graph.Edges.Count, 3);
Assert.AreEqual(graph.Vertices.Count, 3);
Assert.IsTrue(graph.RemoveEdge(vertex1, vertex2));
Assert.AreEqual(graph.Edges.Count, 2);
Assert.AreEqual(graph.Vertices.Count, 3);
Assert.IsTrue(graph.RemoveEdge(vertex1, vertex3));
Assert.AreEqual(graph.Edges.Count, 1);
Assert.AreEqual(graph.Vertices.Count, 3);
}
示例5: DirectedNotInGraph
public void DirectedNotInGraph()
{
var graph = new Graph<int>(true);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex3, vertex2);
graph.AddEdge(vertex1, vertex3);
Assert.IsFalse(graph.RemoveEdge(new Edge<int>(vertex2, vertex3, true)));
}
示例6: TestGraphRemoveAll
public void TestGraphRemoveAll()
{
var graph = new Graph<Edge>();
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
var vertex3 = graph.AddVertex(51, 3);
var vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex2, vertex1);
graph.RemoveEdge(vertex2, vertex3);
graph.RemoveEdge(vertex4, vertex3);
graph.RemoveEdge(vertex4, vertex2);
Assert.IsFalse(graph.ContainsEdges(vertex2, vertex1));
Assert.IsFalse(graph.ContainsEdges(vertex2, vertex3));
Assert.IsFalse(graph.ContainsEdges(vertex4, vertex3));
Assert.IsFalse(graph.ContainsEdges(vertex4, vertex2));
}
示例7: TestGraphRemoveBegin
public void TestGraphRemoveBegin()
{
var graph = new Graph<Edge>();
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
var vertex3 = graph.AddVertex(51, 3);
var vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex2, vertex1);
Assert.IsFalse(graph.ContainsEdges(vertex2, vertex1));
Assert.IsFalse(graph.ContainsEdges(vertex1, vertex2));
Assert.AreEqual(graph.GetEdges(vertex1).ToKeyValuePairs().Length, 0);
Assert.AreEqual(graph.GetEdges(vertex2).ToKeyValuePairs().Length, 2);
Assert.AreEqual(graph.GetEdges(vertex3).ToKeyValuePairs().Length, 2);
Assert.AreEqual(graph.GetEdges(vertex4).ToKeyValuePairs().Length, 2);
}
示例8: TestGraphAddRemove2
public void TestGraphAddRemove2()
{
uint tagsId = 10;
var graph = new Graph<Edge>();
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
var vertex3 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = tagsId
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = tagsId
}, null);
// test edges.
var edges = graph.GetEdges(vertex1).ToKeyValuePairs();
Assert.AreEqual(1, edges.Length);
Assert.AreEqual(tagsId, edges[0].Value.Tags);
Assert.AreEqual(vertex2, edges[0].Key);
Assert.AreEqual(true, edges[0].Value.Forward);
edges = graph.GetEdges(vertex2).ToKeyValuePairs();
Assert.AreEqual(2, edges.Length);
edges = graph.GetEdges(vertex3).ToKeyValuePairs();
Assert.AreEqual(1, edges.Length);
Assert.AreEqual(tagsId, edges[0].Value.Tags);
Assert.AreEqual(vertex2, edges[0].Key);
Assert.AreEqual(false, edges[0].Value.Forward);
// remove edge again.
graph.RemoveEdge(vertex1, vertex2);
// test edges.
edges = graph.GetEdges(vertex1).ToKeyValuePairs();
Assert.AreEqual(0, edges.Length);
edges = graph.GetEdges(vertex2).ToKeyValuePairs();
Assert.AreEqual(1, edges.Length);
Assert.AreEqual(tagsId, edges[0].Value.Tags);
Assert.AreEqual(vertex3, edges[0].Key);
Assert.AreEqual(true, edges[0].Value.Forward);
edges = graph.GetEdges(vertex3).ToKeyValuePairs();
Assert.AreEqual(1, edges.Length);
Assert.AreEqual(tagsId, edges[0].Value.Tags);
Assert.AreEqual(vertex2, edges[0].Key);
Assert.AreEqual(false, edges[0].Value.Forward);
}
示例9: Run
// This would be much more effective as a unit test.
public void Run(Graph<Node, Edge> graph)
{
// Add nodes 0 and 1, and an curEdge between them.
graph.AddNode(new Node(graph.AvailableNodeIndex));
graph.AddNode(new Node(graph.AvailableNodeIndex));
graph.AddEdge(new Edge(0, 1));
// Add nodes 2 and 3.
graph.AddNode(new Node(graph.AvailableNodeIndex));
graph.AddNode(new Node(graph.AvailableNodeIndex));
// Connect 0-2, 0-3, 2-3, and change 2-3's actualWeight.
graph.AddEdge(new Edge(0, 2));
graph.AddEdge(new Edge(0, 3));
graph.AddEdge(new Edge(2, 3));
graph.ChangeEdgeWeight(3, 0, 32.0);
// Should print all nodes (0, 1, 2, and 3)
SysDbg.WriteLine("Nodes before first delete.");
foreach (Node node in graph.Nodes)
SysDbg.WriteLine("\tNode #" + node.Index);
// Nodes 0 and 1 should be removed as well as corresponding edges.
graph.RemoveNode(0);
graph.RemoveNode(1);
// Should print nodes 2 and 3.
SysDbg.WriteLine("Nodes after first delete.");
foreach (Node node in graph.Nodes)
SysDbg.WriteLine("\tNode #" + node.Index);
// Re-add node 0, connect 0-2. (Connect 0-1 and 1-0 not allowed)
// Also, change 0-2 actualWeight.
graph.AddNode(new Node(0));
graph.AddEdge(new Edge(0, 1));
graph.AddEdge(new Edge(2, 0));
graph.AddEdge(new Edge(1, 0));
graph.ChangeEdgeWeight(0, 2, 42.0);
// Should print 0-2, 2-3, 2-0, and 3-2.
SysDbg.WriteLine("Current edges.");
foreach (Edge edge in graph.Edges)
SysDbg.WriteLine("\tEdge " + edge.NodeFrom + " -> " + edge.NodeTo);
// Remove 0-2 and 2-0.
graph.RemoveEdge(2, 0);
// Should print 2-3 and 3-2.
SysDbg.WriteLine("Current edges.");
foreach (Edge edge in graph.Edges)
SysDbg.WriteLine("\tEdge " + edge.NodeFrom + " -> " + edge.NodeTo);
SysDbg.WriteLine("Node 3 exists? " + graph.NodeExists(3));
SysDbg.WriteLine("Node 1 exists? " + graph.NodeExists(1));
SysDbg.WriteLine("Edge 2-3 exists? " + graph.EdgeExists(2, 3));
SysDbg.WriteLine("Edge 3-2 exists? " + graph.EdgeExists(3, 2));
SysDbg.WriteLine("Edge 0-1 exists? " + graph.EdgeExists(0, 1));
SysDbg.WriteLine("Edge 1-0 exists? " + graph.EdgeExists(1, 0));
graph.AddNode(new Node(1));
graph.AddNode(new Node(4));
graph.AddNode(new Node(5));
graph.AddNode(new Node(6));
graph.AddEdge(new Edge(2, 2, 3));
for (int i = 2; i < 20; i++)
graph.AddEdge(new Edge(i, 1, 9.999));
// Should print nodes 0-6.
SysDbg.WriteLine("Nodes");
foreach (Node node in graph.Nodes)
SysDbg.WriteLine("\tNode #" + node.Index);
SysDbg.WriteLine("Current edges.");
foreach (Edge edge in graph.Edges)
SysDbg.WriteLine("\tEdge " + edge.NodeFrom + " -> " + edge.NodeTo);
SysDbg.WriteLine("Current edges from node 1.");
foreach (Edge edge in graph.EdgesFromNode(1))
SysDbg.WriteLine("\tEdge " + edge.NodeFrom + " -> " + edge.NodeTo);
graph.RemoveEdge(0, 5);
graph.RemoveEdge(3, 2);
// These all change the actualWeight.
graph.ChangeEdgeWeight(1, 2, 9001);
graph.GetEdge(6, 1).Weight = 33.2112;
graph.GetEdge(1, 6).Weight = 2112.33;
// Check for curEdge modification by iteration.
foreach (Edge e in graph.Edges)
e.Weight = 1.0;
double weightMod = 10.0;
foreach (Edge e in graph.Edges)
{
e.Weight += weightMod;
weightMod += 10.0;
}
// Revert all weights back to 1.0.
//.........这里部分代码省略.........
示例10: TestCompressEdges
public void TestCompressEdges()
{
using (var graph = new Graph<Edge>(new MemoryMappedStream(new MemoryStream()), 1000,
Edge.MapFromDelegate, Edge.MapToDelegate, Edge.SizeUints))
{
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
var vertex3 = graph.AddVertex(51, 3);
var vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex2, vertex3);
graph.Compress();
Assert.IsFalse(graph.ContainsEdges(vertex2, vertex3));
Assert.IsFalse(graph.ContainsEdges(vertex3, vertex2));
Assert.AreEqual(graph.GetEdges(vertex1).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex2).ToKeyValuePairs().Length, 2);
Assert.AreEqual(graph.GetEdges(vertex3).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex4).ToKeyValuePairs().Length, 2);
}
using (var graph = new Graph<Edge>(new MemoryMappedStream(new MemoryStream()), 1000,
Edge.MapFromDelegate, Edge.MapToDelegate, Edge.SizeUints))
{
uint vertex1 = graph.AddVertex(51, 1);
uint vertex2 = graph.AddVertex(51, 2);
uint vertex3 = graph.AddVertex(51, 3);
uint vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex3, vertex4);
graph.Compress();
Assert.IsFalse(graph.ContainsEdges(vertex3, vertex4));
Assert.IsFalse(graph.ContainsEdges(vertex4, vertex3));
Assert.AreEqual(graph.GetEdges(vertex1).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex2).ToKeyValuePairs().Length, 3);
Assert.AreEqual(graph.GetEdges(vertex3).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex4).ToKeyValuePairs().Length, 1);
Edge edge;
Assert.IsTrue(graph.GetEdge(vertex1, vertex2, out edge));
Assert.AreEqual(1, edge.Tags);
Assert.IsTrue(graph.GetEdge(vertex2, vertex3, out edge));
Assert.AreEqual(2, edge.Tags);
Assert.IsTrue(graph.GetEdge(vertex4, vertex2, out edge));
Assert.AreEqual(4, edge.Tags);
}
}
示例11: ExceptionNullVertex2
public void ExceptionNullVertex2()
{
var graph = new Graph<int>(true);
graph.RemoveEdge(null, new Vertex<int>(3));
}
示例12: ExceptionNullEdge
public void ExceptionNullEdge()
{
var graph = new Graph<int>(true);
graph.RemoveEdge(null);
}
示例13: UndirectedFromVerticesNotInGraph
public void UndirectedFromVerticesNotInGraph()
{
var graph = new Graph<int>(false);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex3, vertex2);
Assert.IsTrue(graph.RemoveEdge(vertex2, vertex3));
Assert.IsFalse(graph.RemoveEdge(vertex1, vertex3));
}
示例14: OtherVertex
public void OtherVertex()
{
var graph = new Graph<int>(true);
var vertex1 = new Vertex<int>(1);
var vertex2 = new Vertex<int>(2);
var vertex3 = new Vertex<int>(3);
graph.AddVertex(vertex1);
graph.AddVertex(vertex2);
graph.AddVertex(vertex3);
graph.AddEdge(vertex1, vertex2);
graph.AddEdge(vertex3, vertex2);
graph.AddEdge(vertex1, vertex3);
Assert.AreEqual(graph.Edges.Count, 3);
Assert.AreEqual(graph.Vertices.Count, 3);
Assert.IsTrue(graph.RemoveEdge(vertex1, vertex2));
Assert.AreEqual(graph.Edges.Count, 2);
Assert.IsFalse(vertex1.HasEmanatingEdgeTo(vertex2));
Assert.IsTrue(vertex3.HasEmanatingEdgeTo(vertex2));
Assert.IsTrue(graph.RemoveEdge(vertex3, vertex2));
Assert.AreEqual(graph.Edges.Count, 1);
Assert.IsFalse(vertex1.HasEmanatingEdgeTo(vertex2));
Assert.IsFalse(vertex3.HasEmanatingEdgeTo(vertex2));
}
示例15: TestGraphCompressEdges
public void TestGraphCompressEdges()
{
var graph = new Graph<Edge>();
var vertex1 = graph.AddVertex(51, 1);
var vertex2 = graph.AddVertex(51, 2);
var vertex3 = graph.AddVertex(51, 3);
var vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex2, vertex3);
graph.Compress();
Assert.IsFalse(graph.ContainsEdges(vertex2, vertex3));
Assert.IsFalse(graph.ContainsEdges(vertex3, vertex2));
Assert.AreEqual(graph.GetEdges(vertex1).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex2).ToKeyValuePairs().Length, 2);
Assert.AreEqual(graph.GetEdges(vertex3).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex4).ToKeyValuePairs().Length, 2);
graph = new Graph<Edge>();
vertex1 = graph.AddVertex(51, 1);
vertex2 = graph.AddVertex(51, 2);
vertex3 = graph.AddVertex(51, 3);
vertex4 = graph.AddVertex(51, 3);
graph.AddEdge(vertex1, vertex2, new Edge()
{
Forward = true,
Tags = 1
}, null);
graph.AddEdge(vertex2, vertex3, new Edge()
{
Forward = true,
Tags = 2
}, null);
graph.AddEdge(vertex3, vertex4, new Edge()
{
Forward = true,
Tags = 3
}, null);
graph.AddEdge(vertex4, vertex2, new Edge()
{
Forward = true,
Tags = 4
}, null);
graph.RemoveEdge(vertex3, vertex4);
graph.Compress();
Assert.IsFalse(graph.ContainsEdges(vertex3, vertex4));
Assert.IsFalse(graph.ContainsEdges(vertex4, vertex3));
Assert.AreEqual(graph.GetEdges(vertex1).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex2).ToKeyValuePairs().Length, 3);
Assert.AreEqual(graph.GetEdges(vertex3).ToKeyValuePairs().Length, 1);
Assert.AreEqual(graph.GetEdges(vertex4).ToKeyValuePairs().Length, 1);
Edge edge;
Assert.IsTrue(graph.GetEdge(vertex1, vertex2, out edge));
Assert.AreEqual(1, edge.Tags);
Assert.IsTrue(graph.GetEdge(vertex2, vertex3, out edge));
Assert.AreEqual(2, edge.Tags);
Assert.IsTrue(graph.GetEdge(vertex4, vertex2, out edge));
Assert.AreEqual(4, edge.Tags);
}