Adjacency List Graph实现 - 可重用的类

时间:2013-02-19 21:44:36

标签: c#

我将Graph(在我的Graph类中)存储为: Dictionary< Vertex<T>, List<Vertex<T>> _edges

我应该如何存储边缘的重量,颜色等属性? (例如,对于WeightedGraphsColoredGraphs等,可以重复使用。)为了创建通用的Graph类,我考虑添加IGraph接口(它将包含Traverse之类的常见图形操作,InsertEdge等)作为Graph类中的属性。

但是我不知道如何处理边缘属性。如果我将IGraph接口实现为ColoredGraph我希望Vertex具有颜色属性,IGraph实现为WeightedGraph我想要重量属性等等。我还想听听你如何将Graph作为邻接列表实现。

ps:这不是学校的家庭作业

2 个答案:

答案 0 :(得分:1)

Edge ={2 Vertices = {Adjacent Vertices per a vertex}, weighted value, color value, etc}

然后

public Vertex
{
//get adjacent list of vertices
}
public class Edge
{
//define necesary values
//define pair of vertices to make an edge
}

答案 1 :(得分:0)

您可以使用Tuple<>作为图表的顶点来实现此目的。 Tuple<>允许您存储边缘的各种属性。

图表的签名可以定义为:

Dictionary< Vertex<T>, List<Tuple<T, T>> _edges.

Tuple中的第一项表示边缘的目标节点。 Tuple中的其他项目将保留该边缘的属性。