我将Graph(在我的Graph类中)存储为:
Dictionary< Vertex<T>, List<Vertex<T>> _edges
。
我应该如何存储边缘的重量,颜色等属性? (例如,对于WeightedGraphs
,ColoredGraphs
等,可以重复使用。)为了创建通用的Graph类,我考虑添加IGraph
接口(它将包含Traverse
之类的常见图形操作,InsertEdge
等)作为Graph类中的属性。
但是我不知道如何处理边缘属性。如果我将IGraph
接口实现为ColoredGraph
我希望Vertex具有颜色属性,IGraph
实现为WeightedGraph
我想要重量属性等等。我还想听听你如何将Graph作为邻接列表实现。
ps:这不是学校的家庭作业
答案 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
中的其他项目将保留该边缘的属性。