算法导论21.1-1,21.1-2,21.1-3

来源:互联网 发布:淘宝首页装修设计尺寸 编辑:程序博客网 时间:2024/06/10 12:33

21.1-1

  • 问题描述
    假设CNNECTED-COMPONENTS作用于一个无向图G=(V,E),这里V={a,b,c,d,e,f,g,h,i,j,k},且E中的边以如下的顺序处理:(d,i),(f,k),(g,i),(b,g),(a,h),(i,j),(d,k),(b,j),(d,f),(g,j),(a,e)。请列出在每次执行完第3~5行后各连通分量的顶点。
  • 问题解答
处理的边 不相交集合 初始集合 {a}{b} {c} {d} {e} {f} {g} {h} {i} {j} {k} (d,i) {a} {b} {c} {d,i} {e} {f} {g} {h} {j} {k} (f,k) {a} {b} {c} {d,i} {e} {f,k} {g} {h} {j} (g,i) {a} {b} {c} {d,i,g} {e} {f,k} {h} {j} (b,g) {a} {b,d,i,g} {c} {e} {f,k} {h} {j} (a,h) {a,h} {b,d,i,g} {c} {e} {f,k} {j} (i,j) {a,h} {b,d,i,g,j} {c} {e} {f,k} (d,k) {a,h} {b,d,i,g,j,f,k} {c} {e} (b,j) {a,h} {b,d,i,g,j,f,k} {c} {e} (d,f) {a,h} {b,d,i,g,j,f,k} {c} {e} (g,j) {a,h} {b,d,i,g,j,f,k} {c} {e} (a,e) {a,h,e} {b,d,i,g,j,f,k} {c}

因此最终的连通分量是{a,h,e}、{b,d,i,g,j,f,k}和{c}。

21.1-2

  • 问题描述
    证明:CONNECTED-COMPONENTS处理完所有的边后,两个顶点在相同的连通分量中当且仅当它们在同一个集合中。

  • 问题解答
    题目的意思就是证明“两个顶点在相同连通分量中”是“两个顶点在同一个集合中”的充分必要条件。
    ①充分性:
    假设u和v是某连通分量的两个顶点,那么必存在一条路径P={(u,v1),(v1,v2),...,(vn,v)},其中viG.V,(vi,vi+1)G.E。在执行CONNECTED-COMPONENTS的过程中,把一条边上的两个顶点放入同一个集合中,那么路径P上所有的点都会放入同一个集合中(当然也包括u,v)。
    ②必要性:
    假设u和v是某个集合中的两个顶点,由充分性的证明过程知连接u和v的一条路径P上的所有顶点都在该集合中,而这些路径上的边都是存在的,因此u和v是连通的。

21.1-3

  • 问题描述
    在CONNECTED-COMPONENTS作用于一个有k个连通分量的无向图G=(V,E)的过程中,FIND-SET需要调用多少次?UNION需要调用多少次?

  • 问题解答
    在CONNECTED-COMPONENTS中的第3-4行知,G.E的每一条边被处理的过程中都会调用两次FIND-SET,因此共调用2|E|次。而UNION每调用一次都会使得连通分量数减1,初始状态的连通分量是|V|,终止状态的连通分量是k,因此UNION调用的次数是|V|k