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节点创建一个任务有

我需要计算工作流中所有可能的交点(有向无环图)。我试图找到有效的算法,但找不到。看起来是并行调度理论

例如,我有一个图表:

我不知道每个节点的执行时间,所以我需要找到所有交点:

  • 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
    节点创建一个任务有向图
    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抱歉,你们都纠正了。我错过了几盘。说明已更新。