Algorithm 图形调度交叉点
我需要计算工作流中所有可能的交点(有向无环图)。我试图找到有效的算法,但找不到。看起来是并行调度理论 例如,我有一个图表: 我不知道每个节点的执行时间,所以我需要找到所有交点:Algorithm 图形调度交叉点,algorithm,graph,scheduling,Algorithm,Graph,Scheduling,我需要计算工作流中所有可能的交点(有向无环图)。我试图找到有效的算法,但找不到。看起来是并行调度理论 例如,我有一个图表: 我不知道每个节点的执行时间,所以我需要找到所有交点: A B C B E F B E G 乙二醇 B H D C D E F D E G D G D H H 和其他可能的集合(在评论后更新) 如何计算这些交点?为了部分回答这个问题,对于问题中的问题,下面这类示例没有有效的算法(在运行时边界的意义上,输入的编码长度是多项式边界的) 设n为非负整数。用n+2节点创建一个任务有
如何计算这些交点?为了部分回答这个问题,对于问题中的问题,下面这类示例没有有效的算法(在运行时边界的意义上,输入的编码长度是多项式边界的) 设
n
为非负整数。用n+2
节点创建一个任务有向图G=(V,E)
,如下所示。设s
为构成第一层的源节点,设t_1,…,t_n
为第二层的n
中间节点,设t
为第三层的终端节点,即
V := { s } union { t_i : i in { 1,...,n } } union { t }
E := { ( s, t_i ) : i in { 1,...,n } } union { ( t_i, t ) : { 1,...,n } }
将第一层连接到第二层,第二层连接到第三层,即
V := { s } union { t_i : i in { 1,...,n } } union { t }
E := { ( s, t_i ) : i in { 1,...,n } } union { ( t_i, t ) : { 1,...,n } }
这直观地意味着源连接到所有任务,所有任务连接到终端。假设所有任务t_{i}
,对于{1,…,n}中的每个i都有处理时间1
或2
;s
和t
的处理时间无关紧要。这意味着,对于{1,…,n}
中的每个i,任务t{i}
的潜在每个组合都可以同时运行;然而,所有任务组合的基数t_i
(它是{t_1,…,t_n}
)是2^n
,它在n
中不是多项式有界的
话虽如此,也许通常的“多项式运行时界限”的概念在这里并不适用,因为输出的大小在输入的大小中已经不是多项式界限。您是否错过了D在C之前结束的情况?我不完全明白您所看到的。你需要计算这个图闭包的所有独立集吗?还是仅仅是最大的?还是我遗漏了什么?例如,为什么有集合{H},而没有集合{D}?@DamienProt交叉点列表似乎不完整。@DamienProt抱歉,你们都纠正了。我错过了几盘。说明已更新。