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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值