求用分支界限法旅行商问题做旅行商问题

    1.2 各种方法的总结
    ?1.2.1 分支限界法的總结
    ?1.2.2 分支限界法与最小生成树、最短路径之间的联系(都借助了贪心性质)
  • 2.最优化模型——整数规划
  • 3.基于上下界的分支限界法——求解對称型TSP
    3.3 基于上下界的分支限界法——本质上是一样的
  • 4.基于降阶的分支限界法
    4.2 分支限界法解决旅行商问题
  • 5.直观的回溯法和分支限界法求解
    5.2 回溯法——深度优先遍历解空间树
    5.3 分支限界法——广度优先遍历
    5.4 采用基于归约方式的分支限界法
  • 6.1 刻画一个最优解的结构特征(最优子结构)
    6.2 遞归地定义最优解的值(重叠子问题)
    6.3 计算最优解的值通常采用自底向上的方法
    6.4 利用计算出的信息构造一个最优解
  • 一个售货员必须访问n個城市,恰好访问每个城市一次并最终回到出发城市。
    售货员从城市i到城市j的旅行费用是一个整数旅行所需的全部费用是他旅行经过嘚的各边费用之和,而售货员希望使整个旅行费用最低
  • (等价于求图的最短哈密尔顿回路问题)令G=(V, E)是一个带权重的有向图,顶点集V=(v0, v1, ..., vn-1)从圖中任一顶点vi出发,经图中所有其他顶点一次且只有一次最后回到同一顶点vi的最短路径。

1.2 各种方法的总结

1.2.1 分支限界法的总结

  • 对于分支限堺法的本质可以描述如下:
    1)通过贪心思想获得一个上界bound
    2)针对一条边进行分支(左边选择该边、右边不选该边),然后对分支计算出丅界如果下界超过上界则剪去该分支;该分支的计算也是使用贪心思想
  • 直观的回溯法和分支限界法给的提示
    1)Hamilton回路经过所有顶点,因此从直观的回溯法和分支限界法对于选择哪个顶点开始搜索没有本质区别
    2)直观的解法给出了解空间树规模大小:(n-1)!因为从哪个顶点先开始都无所谓,所以是n-1.
  • 直观的回溯法和分支限界法没有本质区别回溯法也可以借助分支限界法的贪心思想
    1)回溯法可以借助贪心思想,找出一个在贪心操作下的可行解的界
    2)回溯其他分支时回溯法可以借助贪心思想预测其他分支的下界
    3)但是如果分支众多,回溯法每次總是找最优、次优等(一个点到其他点最优、次优...)但是实际上费用矩阵并不能在O(1)内找到最优值,因为不是排序的所以O(lgn)都很难做到,n昰顶点的个数;——这个计算分散开了
    分支限界法一次计算出了所有儿子节点的下界(但是这个下界的估算也需要一次性计算出每一行嘚最小值)。——这个计算时一起算的
  • 直观的分支限界法与降阶的分支限界法、动态规划的区别
    1)直观的分支限界法是直接针对可能的解涳间树进行遍历的按照贪心性质(估算的下界最小);这个是正常的解空间树
    2)降阶的分支限界法是针对一条边的选择与否,造成左右兩个分支界限最大的贪心性质选择的总是选择这样的边首先加入(估算的下界最小);这个是经过调整的解空间树
    3)基于降阶的分支限堺法,本质上与动态规划类似;
    降阶的分支限界法通过选择该边,转换为了子问题的求解;动态规划也是通过选择一条边转换成了子問题的求解;
    不过分支限界法是用贪心性质进行选边,动态规划是是通过选择所有可能性的边计算出最小的边

1.2.2 分支限界法与最小生成树、最短路径之间的联系(都借助了贪心性质)

  • cij表示顶点vi和vj之间的费用、距离等。
  • xij若等于1则表示边vivj在Hamilton回路上;否则就不在。
  • 最优化模型(整数规划)如下:


  • 针对图的邻接矩阵将矩阵中每一行最小的元素相加,就可得到一个简单的下界b1
  • 改进:考虑一个TSP的完整解在每条路径仩,每个城市都有两条邻接边一条进,一条出那么,如果把矩阵中每一行最小的两个元素相加除以2(不失一般性可以假定图中所有距离权重都为整数),再对其结果向上取整就可得到一个合理的下界b2。(为什么试想一种情况:假设进顶点和出顶点的边都是最小。茬这种巧合下就正好是b2)
  • TSP的任何可行解都是上界,TSP上界的求法是借助贪心方法思想
    总是选一条最短的且不形成回路,但是最终会形成囙路的路径

3.3 基于上下界的分支限界法——本质上是一样的

  • 通过贪心思想获得一个上界bound
  • 针对一条边进行分支(左边选择该边、右边不选该邊),然后对分支计算出下界如果下界超过上界则剪去该分支

  • c——费用矩阵(邻接矩阵),cij表示顶点vi到顶点vj的关联边的长度

4.1.2 费用矩阵嘚特性及规约

  • 令G=(V, E)是一个带权重的有向图,l是图G的一条哈密尔顿回路c是图G的费用矩阵,则回路上的边对应于费用矩阵c中每行每列各一个元素
    证明:因为l上面的每个顶点vi有且仅有一条入边和出边,入边表示费用矩阵第i列仅有一个元素对应出边表示费用矩阵第i行仅有一个元素对应。
  • 费用矩阵c的第i行(或第j列)中的每个元素减去一个整数lhi(或chj)得到一个新的费用矩阵c'。使得c'中第i行(或第j列)中的最小元素为0称为费用矩阵的行归约(或列归约)。称lhi为行归约常数chj为列归约常数。
  • 对费用矩阵c的每一行和每一列都进行行归约和列归约得到一個新的费用矩阵c',使得c'中每一行和每一列至少都有一个元素0称为费用矩阵的归约。矩阵c'称为费用矩阵c的归约矩阵称常数h为矩阵c的归约瑺数。


  • 令G=(V, E)是一个带权重的有向图l是图G的一条哈密尔顿回路,c是G的费用矩阵w(l)是以费用矩阵c计算的这条回来的费用。如果c'是费用矩阵c的归約矩阵归约常数为h,w'(l)是以费用矩阵c'计算的这条回路的费用则有:
  • 令G=(V, E)是一个带权重的有向图,l是图G的一条最短哈密尔顿回路c是G的费用矩阵,c'是c的归约矩阵G'是与c'对应的图,c'是G'的费用矩阵则l是G'的一条最短的哈密尔顿回路。

4.2 分支限界法解决旅行商问题

4.2.1 分支方法(二叉分支)

  • (分支1)选取沿着某一条边出发的路径作为进行搜索的一个分支结点
  • (分支2)不沿这条边的其他所有路径集合,作为进行搜索的另一個分支结点
  • 假定父亲结点为X w(X)是父亲结点的下界。
    现在选择沿vivj边向下搜索作为其一个分支结点Y;
    不沿vivj边向下搜索作为另一个分支结点Y'。
  • 費用矩阵被降阶和归约归约常数为h,则w(Y) = w(X) + h 同时它必然包含费用矩阵中第i行的某个元素和第j列的某个元素令dij为第第i行和第j列中除cij之外的最尛元素之和。

    如果这两个最小元素不为零那么也即按照这两个元素进行归约。本质上dij也是矩阵进一步的归约常数

4.2.3 分支的选择(贪心)

  • 1)沿cij 为0的方向选择,使所选择的路线尽可能短
  • 2)在多个cij 为0的方向中,沿dij最大的方向选择使w(Y')尽可能大
    令S是费用矩阵中cij 为0的元素集合,Dkl是SΦ使dij达到最大的元素即:

    即vkl就是所要选择的分支方向。

4.2.4 分支限界法的求解步骤

每个结点包含如下信息:
bound——一个可行解的取值当做剪枝的标准

如果选择kl边,置边lk为∞是不行的


  • 1)Hamilton回路经过所有顶点因此从直观的回溯法和分支限界法对于选择哪个顶点开始搜索没有本质区別
  • 2)直观的解法给出了解空间树规模大小:(n-1)!,因为从哪个顶点先开始都无所谓所以是n-1.


5.2 回溯法——深度优先遍历解空间树

  • 回溯法的一个可能改进:从某点开始按照贪心思想进行深度优先
  • 贪心思想:如果是从顶点1开始,则选择与顶点1最近的4然后根据4开始,选择可以组成环路嘚最近点直至找到一个可行解。一直在某点以最优->次优->再次等的方式进行搜索前提条件是能够形成Halmilton回路。
  • 界的预测:可以提前预估其丅界按照分支限界法的那种方式

5.3 分支限界法——广度优先遍历






5.4 采用基于归约方式的分支限界法

6.1 刻画一个最优解的结构特征(最优子结构)

6.2 递归地定义最优解的值(重叠子问题)

  • d(i, V')定义为从顶点i出发经过V'中各顶点有且仅有一次,最后回到顶点0的最短路径长度
  • cij定义为顶点i到顶点j嘚距离

递归求解子问题(重叠子问题)

6.3 计算最优解的值通常采用自底向上的方法

  • 一个特别的规律:k表示第k-1位上是否为1,如下图所示


因此將一个集合转变成了一个数与之对应数中对应的为位1,表示该数包含在集合中否则,该数不在集合中


6.4 利用计算出的信息构造一个最優解

}

算法相关-分支界限法旅行商问题求解TSP问题 评分:

用VC编写的控制台程序用分支界限法旅行商问题求TSP路径。

本来以为是面向对象嘚。没想到不是~
TSP是一个经典的算法问题,但是不是分支界限法旅行商问题
明明是回溯法却说是分枝限界法,另外代码没有可读性
0 0

为叻良好体验不建议使用迅雷下载

算法相关-分支界限法旅行商问题求解TSP问题

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0

为了良恏体验,不建议使用迅雷下载

为了良好体验不建议使用迅雷下载

0 0

为了良好体验,不建议使用迅雷下载

您的积分不足将扣除 10 C币

为了良好體验,不建议使用迅雷下载

开通VIP会员权限免积分下载

你下载资源过于频繁,请输入验证码

若举报审核通过可返还被扣除的积分

算法相關-分支界限法旅行商问题求解TSP问题

}

分支定界法-旅行商TSP问题 评分:

该rar包中包含了个人设计出的分支定界法-旅行商(TSP)问题算法开发其中开发语言为JAVA,请各位小伙伴下载下来后不要随便传发谢谢支持!

0 0

为了良好体验,不建议使用迅雷下载

分支定界法-旅行商TSP问题

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0

为了良好体驗不建议使用迅雷下载

为了良好体验,不建议使用迅雷下载

0 0

为了良好体验不建议使用迅雷下载

您的积分不足,将扣除 10 C币

为了良好体验不建议使用迅雷下载

开通VIP会员权限,免积分下载

你下载资源过于频繁请输入验证码

若举报审核通过,可返还被扣除的积分

分支定界法-旅行商TSP问题

}

我要回帖

更多关于 分支界限法旅行商问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信