适合图表的数据结构(自己的实现)

时间:2013-05-24 10:39:10

标签: c# data-structures graph

我将在C#中编写自己的Graph结构(我知道这样存在,但我想练习+我需要自定义方法)。这个想法很简单:

  1. Graph<T>类将有一组GraphNode<T>个对象,代表节点
  2. 每个节点都有一组GraphNode<T>个对象,代表它所连接的节点(面向图)。
  3. 我的问题很简单:如果我想快速遍历GraphNode<T>集,我应该使用哪种数据结构?快速添加/删除是+,但不是主要目标。

1 个答案:

答案 0 :(得分:0)

如果您期望节点数量相对较少(少于十万个),则可以使用邻接矩阵(对于更大数量的节点,您可以使用按位运算符;这还取决于您的图是否称重)。这在插入/删除时会非常慢。

对于快速图遍历,邻居节点列表将非常有用,因为它可以非常快速地遍历。此外,这种方法将允许遍历的并行化,这将提高性能。这种方法可能是您正在寻找的最佳方法。

我会使用List<GraphNode<T>>来存储邻居。 对于具有许多节点的加权图,ConcurrentDictionary<GraphNode<T>, double>应该表现良好。