1

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

我正在安排的优先级规则之一是“最多后继者”,它为具有最多“未安排”追随者的活动提供优先级。我附上了一张图片,让您了解我在说什么(这不是我正在使用的项目的图片,因为它太大了)。对于活动 A,后继者总数为 3(B、E、C)。

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

有人可能有一个想法(或提示)我如何处理这个问题?提前非常感谢!(对不起,很长的帖子)

网络示例

4

1 回答 1

0

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

于 2012-07-28T09:36:51.123 回答