0

我的计算理论教科书有一个解释多项式时间算法的例子:

PATH = {[G,s,t]|G 是有向图,具有从 s 到 t 的有向路径}。

PATH 的多项式时间算法 M 操作如下。M = “在输入 [G,s,t] 上,其中 G 是具有节点 s 和 t 的有向图:

  1. 在节点 s 上做一个标记。
  2. 重复以下操作,直到没有标记其他节点:
  3. 扫描 G 的所有边。如果发现一条边 (a,b) 从标记节点 a 到未标记节点 b,则标记节点 b。
  4. 如果 t 被标记,接受。否则,拒绝。”</li>

然后他们继续解释算法如何在多项式时间内运行:

显然,阶段 1 和阶段 4 只执行一次。阶段 3 最多运行 m 次,因为除了最后一次之外,它每次都标记 G 中的一个附加节点。因此,使用的阶段总数最多为 1+1+m,给出 G 大小的多项式。

*m 是图中的节点数

我的问题是,第 3 阶段不会最多运行m-1次而不是 m 次,因为第一个节点是在第 1 阶段标记的?

谢谢!

4

1 回答 1

1

它最多运行 m-1 次,它标记除 s 之外的其他节点,然后运行 ​​1 次,它没有找到要标记的其他节点。

于 2015-04-23T15:06:32.157 回答