1

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

我应该如何存储边缘的重量、颜色等属性?(使其可重用,例如WeightedGraphsColoredGraphs)为了创建通用 Graph 类,我考虑在 Graph 类中添加IGraph接口(它将包含常见的 Graph 操作,如TraverseInsertEdge)作为属性。

但是我不知道如何处理边缘属性。如果我实现IGraph接口,因为ColoredGraph我想拥有带有颜色属性的顶点,IGraph实现WeightedGraph我想拥有权重属性等等。我还想听听您将如何将 Graph 实现为邻接列表。

ps:不是学校作业

4

2 回答 2

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
}
于 2013-02-19T21:54:19.137 回答
0

您可以通过使用 aTuple<>作为图的顶点来实现这一点。这Tuple<>将允许您存储边缘的各种属性。

图的签名可以定义为:

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

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

于 2016-03-18T00:08:52.277 回答