Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有向无环图(DAG)中避免循环关系的逆关系_Ruby On Rails_Ruby_Algorithm_Graph Algorithm - Fatal编程技术网

Ruby on rails 有向无环图(DAG)中避免循环关系的逆关系

Ruby on rails 有向无环图(DAG)中避免循环关系的逆关系,ruby-on-rails,ruby,algorithm,graph-algorithm,Ruby On Rails,Ruby,Algorithm,Graph Algorithm,问题 在a中,添加关系所导致的循环传递关系是否总是通过反转要添加的关系来防止 例如: 现有关系:A->B,B->C,通过该关系,传递关系A->C,可以看作是A->B->C 要添加的关系:C->A,这将导致A->B->C->A,并且是循环的 Idea:反转要添加到cb->C的关系您的解决方案似乎有效。边C->A和A->C不能同时导致循环 证明: 如果添加C->A将导致循环,则已经存在路径A↝ C。如果添加A->C将导致循环,则已经存在路径C↝ A。如果上述两种情况都是正确的,那么组合这两条路径将

问题

在a中,添加关系所导致的循环传递关系是否总是通过反转要添加的关系来防止

例如:

  • 现有关系:
    A->B
    B->C
    ,通过该关系,传递关系
    A->C
    ,可以看作是
    A->B->C
  • 要添加的关系:
    C->A
    ,这将导致
    A->B->C->A
    ,并且是循环的

  • Idea:反转要添加到
    cb->C的关系您的解决方案似乎有效。边
    C->A
    A->C
    不能同时导致循环

    证明:


    如果添加
    C->A
    将导致循环,则已经存在路径
    A↝ C
    。如果添加
    A->C
    将导致循环,则已经存在路径
    C↝ A
    。如果上述两种情况都是正确的,那么组合这两条路径将提供一个已经存在的循环,因此初始图形将不是DAG。

    感谢您花时间思考@Cătălin Fr–ncu的问题