当前位置:嗨网首页>书籍在线阅读

50-回溯法算法秘籍

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.8 回溯法算法秘籍

用回溯法解决问题时,首先要考虑如下3个问题。

(1)定义合适的解空间

因为解空间的大小对搜索效率有很大的影响,因此使用回溯法首先要定义合适的解空间,确定解空间包括解的组织形式和显约束。

  • 解的组织形式:解的组织形式都规范为一个n元组{x1,x2,…,xn},只是具体问题表达的含义不同而已。
  • 显约束:显约束是对解分量的取值范围的限定,显约束可以控制解空间的大小。

(2)确定解空间的组织结构

解空间的组织结构通常用解空间树形象的表达,根据解空间树的不同,解空间分为子集树、排列树、m叉树等。

(3)搜索解空间

回溯法是按照深度优先搜索策略,根据隐约束(约束函数和限界函数),在解空间中搜索问题的可行解或最优解。当发现当前结点不满足求解条件时,就回溯,尝试其他的路径。“能进则进,进不了则换,换不了则退”。

如果问题只是要求可行解,则只需要设定约束函数即可;如果要求最优解,则需要设定约束函数和限界函数。

解空间的大小和剪枝函数的好坏是影响搜索效率的关键。

显约束可以控制解空间的大小,剪枝函数决定剪枝的效率。

所以 回溯法解题的关键是设计有效的显约束和隐约束