计算java中图(网络)中的节点数

时间:2012-07-28 09:07:20

标签: java

我正在用java编写一个程序来安排项目中的活动,同时考虑资源限制(类似于MS项目,但更基本的课程)。当可用资源太少时,我会使用优先级规则按特定顺序排列活动(以便可以先安排最重要的活动)。

我正在安排的优先级规则之一是“最多的接班人”,它优先考虑拥有最多“未计划”粉丝的活动。我加了一张图片让你知道我在说什么(这不是我正在使用的项目的图片,因为它太大了)。对于活动A,后继者的总数将为3(B,E,C)。

我有关于活动总数和所有活动的直接后继者的信息(以二进制形式,如果关注者[2] [1] == 1例如,这意味着活动2是活动的直接追随者1),但我的主要问题是我不知道如何从追随者的追随者和追随者追随者的追随者那里获取信息,并且...因为我不知道我的图表有多“深”。我已经在互联网上搜索了解决方案,但大多数似乎都申请了二叉树(如二进制搜索),这与我的网络不同(某些活动有3个或更多的粉丝,有些活动是共享的,... )。

有人可能有想法(或暗示)我如何处理这个问题? 非常感谢提前! (对于长篇文章感到抱歉)

Example of a network

1 个答案:

答案 0 :(得分:0)

使用一组已计数的节点,最初为空。从根节点开始。对于当前节点的每个子节点,如果它不在集合中,则将其添加到集合中,递增计数器,然后应用相同的算法,使用相同的集合,并将子节点作为起始节点。