如何做一个toposort;创建度数

时间:2012-11-24 00:45:28

标签: java graph topological-sort

我正在为学校作业构建图形结构。它目前表示为邻接列表:我使用的是散列图,其中键是图的节点(顶点),值是Edges列表(包含源节点和目标节点指针的对象以及“权重” )与关键节点相关联。

我的下一个任务是编写一个拓扑排序,但我被卡住了。我认为开始的最好方法是给每个节点对象一个整数字段作为indegree(通向节点的边缘数量),但我无法想出一种方法将它分配给我的所有节点鉴于我已有的。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我建议你也创建Node的概念。除了你是Edge对象之外,你还有Node对象,更好的建模总能帮助你更快地解决你的问题。使用Node定义的HashMap有一个键Integer在这种情况下会有所帮助,因为您可以在Node实例中存储其他信息。

但是如果你想/需要保持你当前的结构,为了知道通往给定节点的边数,你将不得不迭代HashMap entrySet的各种值(基于你所说的将会是边缘列表)并查看哪些边缘有你正在寻找的节点有一个目的节点,这个信息必须存储在一个辅助结构中(如有另一个地图)