本文整理汇总了C#中IGraph.AddEdge方法的典型用法代码示例。如果您正苦于以下问题:C# IGraph.AddEdge方法的具体用法?C# IGraph.AddEdge怎么用?C# IGraph.AddEdge使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGraph
的用法示例。
在下文中一共展示了IGraph.AddEdge方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Emit
private INode Emit(AST a, IGraph to)
{
String text = a.getText();
int iType = a.Type;
String type = parserpackage.GetTypeName(iType);
NodeType currentNodeType = GetNodeType(type, to);
INode currentNode = to.AddNode(currentNodeType);
currentNode.SetAttribute("value", text);
if (a.getNumberOfChildren() > 0)
{
List<AST> l = GetChildren(a);
INode previousChild = null;
foreach (AST current in l)
{
INode childNode = Emit(current, to);
EdgeType childType = GetEdgeType("child", to);
to.AddEdge(childType, currentNode, childNode);
if (previousChild != null)
{
EdgeType nextType = GetEdgeType("next", to);
to.AddEdge(nextType, previousChild, childNode);
}
previousChild = childNode;
}
}
return currentNode;
}
示例2: _initializeSecondCaseGraph
//
// Second Case Initialization
private static void _initializeSecondCaseGraph(ref IGraph<string> graph)
{
// Clear the graph
graph.Clear();
//
// Add vertices
var verticesSet = new string[] { "a", "b", "c", "d", "e", "f", "s", "v", "x", "y", "z" };
graph.AddVertices (verticesSet);
//
// Add edges
// Connected Component #1
// the vertex "e" won't be connected to any other vertex
// Connected Component #2
graph.AddEdge("a", "s");
graph.AddEdge("a", "d");
graph.AddEdge("s", "x");
graph.AddEdge("s", "a");
graph.AddEdge("x", "d");
// Connected Component #3
graph.AddEdge("b", "c");
graph.AddEdge("b", "v");
graph.AddEdge("c", "f");
graph.AddEdge("c", "v");
graph.AddEdge("f", "b");
// Connected Component #4
graph.AddEdge("y", "z");
}
示例3: Read
public bool Read(IGraph myGraph, FileStream myInputStream)
{
// use a streamreader .. better handling
StreamReader reader = null;
// stores the added vertices for fast retrieval
var addedVertices = new Dictionary<string, IVertex>();
try
{
reader = new StreamReader(myInputStream);
String line; // current line in file
String[] edge; // contains source and target vertex id
IVertex source; // source vertex
IVertex target; // target vertex
var count = 0L; // number of processed edges
while ((line = reader.ReadLine()) != null)
{
if (!line.StartsWith(EdgeListTokens.LINE_COMMENT)) // just a comment
{
// line look like that "0 1", splitting it to get source and target id
edge = line.Split(EdgeListTokens.SOURCE_TARGET_SEPARATOR);
// got two id's?
if (edge.Length == 2)
{
// check if source has been added before
if (!addedVertices.TryGetValue(edge[0], out source))
{
// if not, create new vertex
source = myGraph.AddVertex(edge[0]);
addedVertices.Add(edge[0], source);
}
// check if target has been added before
if (!addedVertices.TryGetValue(edge[1], out target))
{
// if not, create new vertex
target = myGraph.AddVertex(edge[1]);
addedVertices.Add(edge[1], target);
}
if (myGraph.AddEdge(source, target) != null)
{
count++;
}
}
}
}
}
catch (IOException ex)
{
// TODO add logging here
return false;
}
finally
{
reader.Close();
}
return true;
}
示例4: _initializeFirstCaseGraph
//
// Second Case Initialization
private static void _initializeFirstCaseGraph(ref IGraph<string> graph)
{
// Clear the graph
graph.Clear();
//
// Add vertices
var verticesSet = new string[] { "a", "b", "c" };
graph.AddVertices (verticesSet);
//
// Add Edges
graph.AddEdge("a", "b");
graph.AddEdge("b", "c");
graph.AddEdge("c", "a");
}