算法导论24.1-2,24.1-3,24.1-4

  • 24.1-2
    证明推论24.3:
    G=(V,E) 是一带权重的源结点为s的有向图,其权重函数为 w:ER 。假定图G不包含从源节点s可以到达的权重为负值的环路,则对于所有结点 vV ,存在一条从源结点到结点v的路径当且仅当BELLMAN-FORD算法终止时有 v.d<
    证明
    1 充分性
    如果存在一条从源结点到结点v的路径,那么该路径上所有的结点的d属性都是更新过的并小于 。所以BELLMAN-FORD算法终止时必存在 δ(s,v)< 。根据引理24.2知道, v.d=δ(s,v)<
    2 必要性
    初始化时,任意结点v, v.d= 。在BELLMAN-FORD算法执行的过程中, v.d 是单调减少的,而它的每次更新都发生在 u.d+w(u,v)<v.d 时,此时的 v.π=u 。因为 v.d< ,所以v在前驱子图中是有祖先的。
    又因为前驱子图是一棵以s为根的树,因此在前驱子图中存在一条 sv 路径。而图G又包含前驱子图,因此图G中存在一条源结点到结点v的路径。
  • 24.1-3
    问题描述
    假设给定 G=(V,E) 是一带权重且没有权重为负值的环路的有向图,对于所有的结点 vV ,从源结点s到结点v之间的最短路径中,包含边的条数的最大值为m。请对算法BELLMAN-FORD进行简单修改,可以让其在m+1遍松弛操作之后终止,即使m不是事先知道的一个数值。
    问题求解
    在BELLMAN-FORD算法的2-4行执行过程中,如果某一次循环结束时 v.d 的值跟本次循环开始时 v.d 的值相比不发生改变时,此次循环即为第m+1次。对算法修改如下:
    BELLMAN-FORD(G,w,s)
INITALIZE-SINGLE-SOURCE(G,s)
for i=1 to |G.V|-1
  for each v in G.V
     save v.d to T
  for each edge(u,v) in G.E
    RELAX(u,v,w)
  for each v in G.V
    if v.d != T[].d
      goto h
h:for each edge(u,v) in G.E
  if v.d>u.d+w(u,v)
    return FALSE
return TRUE
  • 24.1-4
    问题描述:
    修改Bellman-Ford算法,使其对于所有结点v来说,如果从源结点s都结点v的一条路径上存在权重为负值的环路,则将 v.d 的值设置为
    问题求解:
    在BELLMAN-FORD(G,w,s)的第5-7行中如果 sv 存在权重为负值的环路,将会执行第7行。所以只需把第7行修改为 v.d= 即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值