using System.Linq;
using System.Collections.Generic;
using Rivers;
using Rivers.Analysis;
using Rivers.Generators;
using Rivers.Serialization.Dot;
using Rivers.Analysis.Traversal;
using Rivers.Analysis.PathFinding;
using Rivers.Analysis.Isomorphism;
using Rivers.Analysis.Connectivity;
创建图并查看图的结构
var graph = new Graph();
// 添加节点
var node1 = graph.Nodes.Add("1");
var node2 = graph.Nodes.Add("2");
var node3 = graph.Nodes.Add("3");
//添加边
graph.Edges.Add(new Edge(node1, node2));
graph.Edges.Add(node2, node3);
//查看结构
graph.Dump();
var traversal = new DepthFirstTraversal();
var order = new TraversalOrderRecorder(traversal);
traversal.Run(node1);
foreach (var node in order.GetTraversal())
{
var es = node.GetReachableNodes();
string.Join("-",es.Select(s=>s.Name)).Dump();
}
输出结果:
1-2-3
2-3
3
Rivers还有许多其他特色功能,如创建序列图
// 创建图并输出所有节点
var generator = new PathGenerator(true, 5);
var pathGraph = generator.GenerateGraph();
string.Join("->",pathGraph.Nodes.Select(s=>s.Name))