Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Algorithm 图的宽度优先遍历的证明_Algorithm_Graph Algorithm_Discrete Mathematics_Proof - Fatal编程技术网

Algorithm 图的宽度优先遍历的证明

Algorithm 图的宽度优先遍历的证明,algorithm,graph-algorithm,discrete-mathematics,proof,Algorithm,Graph Algorithm,Discrete Mathematics,Proof,我试图证明下面的算法,看看在图G=(v,E)中是否存在从u到v的路径 我知道要完成证明,我需要证明终止、不变量和正确性,但我不知道如何证明。我想我需要在while循环中使用归纳法,但我不确定如何使用 我如何证明算法的这三个特征?免责声明:我不知道你希望你的证明有多正式,我不熟悉正式证明 while循环的归纳法:一开始是真的吗?在一个步骤(相当简单的路径属性)之后它是否仍然为真 同样的想法,关于k的归纳法(为什么k+1?):一开始是真的吗?在一个步骤(相当简单的路径属性)之后它是否仍然为真 把Re

我试图证明下面的算法,看看在图G=(v,E)中是否存在从u到v的路径

我知道要完成证明,我需要证明终止、不变量和正确性,但我不知道如何证明。我想我需要在while循环中使用归纳法,但我不确定如何使用


我如何证明算法的这三个特征?

免责声明:我不知道你希望你的证明有多正式,我不熟悉正式证明

  • while循环的归纳法:一开始是真的吗?在一个步骤(相当简单的路径属性)之后它是否仍然为真
  • 同样的想法,关于k的归纳法(为什么k+1?):一开始是真的吗?在一个步骤(相当简单的路径属性)之后它是否仍然为真
  • 把Reach看作一个严格递增的集合
  • 终止:也许你可以使用一个相当简单的属性链接到图的直径


    (这个问题可能在其他地方得到更好的回答,也许吧?

    有很多可能性。例如,对于广度优先搜索,我们注意到: (1) 该算法从不访问同一节点两次。(因为任何返回路径必须大于等于已将其放入已发现堆中的长度。)。 (2) 在每一步中,它只添加一个节点

    因此,它显然必须在任何有限图上终止,因为可发现的节点集不能大于图中的节点集

    最后,由于给定一个起始节点,它将仅在到达通过任何路径连接到起始节点的每个节点时终止,因此它将始终找到起始和目标之间的路径(如果存在)

    如果您愿意,您可以更严格地重写上述逻辑步骤,例如,通过显示访问节点的列表严格增加且不收敛(即,向某个对象重复添加一个节点趋于无穷大)且终止条件必须满足至多某个有限值,且非收敛的增函数总是与给定的界恰好相交一次

    BFS是一个简单的例子,因为它有如此简单的逻辑,但为给定的算法证明这些东西可能非常棘手。

    什么是“后续算法”?