旅行销售员问题-------分支限界法

       分支界限法即界限剪枝法在分支界限法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止

限界剪枝法的基本思想

1. 限界剪枝法与回溯法的不同

    (1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

    (2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。

常见的两种分支限界法

(1)队列式(FIFO)分支限界法

按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。

(2)优先队列式分支限界法

按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。

搜索方式------最小耗费搜索法

下界估值函数~C(x), ~C(x)是C(x)的下界估值, ~C(x)可即时计算. 当x为解结点时,~C(x)=C(x)=D(x)

下界估值越小,分枝含有最优解的可能越大。优先搜索下界估值最小的结点,则第一个待扩展的解结点为最优解。

最小耗费搜索法的算法描述
设T为状态空间树的根结点;~C(x)为耗费估计函数;初始化优先队列Q;
计算~C(T),并将T入队;
循环,直到队列Q空(无解):
    结点e出队;
    若e是回答结点,则
     输出解或求解路径,求解结束; 否则 检查e的所有子结点x:     
若x满足约束条件,则  计算~C(x),并将x入队;
    记录搜索路径;
当~C(x)满足:~C(x)≤C(x),C(x)单调,解结点的~C(x)=C(x)时,上述算法可以正确找到C(x)的最小耗费解;
限界剪枝法的算法描述
设T为状态空间树的根结点;~C(x)为耗费估计函数; 初始化优先队列Q ,初始化U=u(T); 计算~C(T),并将T入队; 循环,直到队列Q空(无解):
    结点e出队;
    若e是回答结点,则 输出解或求解路径,求解结束; 否则,若~C(e)≤U,则  检查e的所有子结点x,若x满足约束条件,则 计算~C(x),若~C(x)≤U,则 将x入队,并计算u(x);  若u(x)<U,则令U=u(x); 记录搜索路径;
旅行销售员问题
问题:某售货员要到若干城市去推销,已知各城市之间的路程(或旅费),求一条从驻地出发,经过每个城市仅一次,最后回到驻地的路线,使总的路程(或总旅费)最小。

      旅行售货员问题的解空间可以组织成一棵树,从树的根结点到任一叶结点的路径定义了图的一条周游路线。旅行售货员问题要在图G中找出费用最小的周游路线。路线是一个带权图。图中各边的费用(权)为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。 
定义耗费函数C(x):
当x为解结点时,C(x)取x的路线耗费;
当x不是解结点时,C(x)取x的子树中最小耗费解结点的耗费;
定义上界函数u(x):
当x为解结点时,u(x) = C(x);
当x不是解结点时,u(x) = ∞;
为了定义C(x)的下界~C(x),引入权值矩阵的归约矩阵:
从权值矩阵的每一行(列)中减去该行(列)的最小值,称为对行(列)的归约,被减去的最小值称为该行(列)的约数;对一个矩阵的行和列都做归约,称为原矩阵的归约矩阵,行列约数之和称为原矩阵的约数,记为r ;
    由归约矩阵的定义可知,在有向连通网上的一条极大简单回路的路径权值之和等于权值矩阵的归约矩阵的约数r+归约矩阵上的对应权值之和;因此r是路径权值的一个下界,可作为C(x)的下界函数;定义~C(T)=r;




  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值