【讲座笔记】李宏博副教授:约束满足问题建模与求解 CCF-Talk

量子麻小
2024-09-20 10:50:48

讲座时间:2024年7月24日

讲座组织:中国计算机学会

主讲人:李宏博 副教授

 

问题实例

经典问题实例:n皇后问题

在一个n * n的国际象棋棋盘上,放置n个皇后,使得任意两个皇后之间不能互相攻击。横向、纵向、对角线、反对角线只能有一个皇后。

一般来说,手工求解,4皇后可以解出来;8皇后费点力气也可以解出来;但是100皇后基本上就无法手动求解了。

解决方法基本上就是一个个试。

经典问题实例:旅行商问题

给定n个城市和任意两个城市之间的距离,寻找一种周游方案从某个城市出发,最终回到这个城市,并且每个城市经过一次,使得旅行的总距离最短。

如何解决这个问题?

● 尝试所有的可能性

● n!种可行方案

● 在距离矩阵中每次选择距离最近的两个城市连接?

    ○ 012430距离37

    ○ 014230距离23

 

以上两个问题如何用同一套算法进行解决?

— —约束程序设计

 

约束程序设计

传统的程序设计

● 为解决某些特定问题,使用程序设计语言告诉计算机算法的每一个执行步骤

● 计算机执行程序,解决问题。

高级的约束程序设计

● 为解决某些特定问题,使用约束程序设计语言(建模)告诉计算机待解决的问题描述

● 计算机调用约束求解器来求解所描述的问题。

 

约束程序设计优点:

● 问题描述能力强:现有约束求解器可提供多种多样的约束类型。

● 约束程序设计是求解离散组合搜索问题的通用方法。

● 使用约束程序设计解决离散组合搜索问题,用户只关注如何将问题描述告诉计算机,即用户只关注问题建模

● 用户建模完成后,求解器进行自动求解。求解器的求解算法是由科研人员进行设计研究,即科研人员主要关注约束求解算法

 

求解算法

● 完备算法(也叫精确算法)

    ○ 回溯搜索:求解约束满足问题

    ○ 分支限界搜索:求解约束优化问题

● 非完备算法:主要使用启发式方法求解约束优化问题

    ○ 贪婪搜索

    ○ 局部搜索

    ○ 智能计算方法:遗传算法、蚁群算法......

:完备算法与非完备算法互补

 

完备算法 VS 非完备算法

● 完备算法

  ○ 约束满足问题

    ■ 若有解,算法终止时可找到可行解

    ■ 若无解,算法终止时可证明无解。

  ○ 约束优化问题

■ 算法终止时可找到最优解,并且证明解的最优性。

  算法可能无法在有效时间内终止

● 非完备算法:主要解决约束优化问题

 可能快速找到一个高质量解,甚至是最优解

  无法保证一定找到最优解,无法证明解的最优性

  ○ 当优化问题约束比较复杂,可行解难找,非完备算法可能无法找到可行解

对比来看,非完备算法可以找一个高质量的解,但不一定是最优解。那么如果找到最优解一定是使用完备算法,但是完备算法无法在有效时间终止的问题,如何解决呢?个人认为简单粗暴的一点,提高算力即可。比如说用传统计算机需要计算24个小时,用量子计算机的超高算力,可能毫秒级就可以出来结果。

 

分支限界搜索 与 向溯搜索

● 分支限界搜索

1.  先调用回溯搜索找到一个可行解S0,然后在问题中添加一个约束,使得下一个可行解的优化目标比obj(S0)更好;

2.  寻找新的可行解,重复1过程,直到某次更新上界后没有找到可行解;

3.  最后一次找到的可行解即是最优解。

● 举例说明旅行商问题

1.  不考虑优化目标,找一个可行方案S0,obj(So)=100

2.  加入约束条件,令obj<100,寻找下一个可行方案,得S1,obj(S1)=90。

3.  加入约束条件,令obj<90,寻找下一个可行方案Si:

4.  若有可行方案,重复3,若无可行方案,则上一个Si是最优解

 

 

约束满足问题

 

约束

 

全局约束举例

 

约束程序设计(8皇后问题)

 

约束传播

● 用户建模后的约束满足问题,有d"种可能的取值组合,其中n是变量个数,d是变量的值域大小。

● 回溯搜索算法本质上是穷举所有取值组合

● 约束传播算法通过推理对搜索过程进行剪枝,减少需探索的组合数。

 

约束传播与局部相容

 

四皇后问题穷举搜索树

 

四皇后问题的回溯搜索过程

 

约束求解

约束求解的核心技术

● 搜索策略

○ 理想情况下,每次为变量赋值时,恰好选到在解中的那个赋值

● 约束传播算法

○ 约束传播算法的剪枝能力

○ 约束传播算法本身的实现代价

● 冲突记录

● 重启搜索

 

搜索策略-失败优先原则

失败优先原则:尽量选择最有可能导致失败的变量进行赋值

● 最小值域(dom):每次选择值域最小(候选值最少)的变量进行赋值

● 最大度(deg):每次选择连接约束最多的变量进行赋值

● dom/deg:每次选择该比值最小的变量进行赋值

● 基于影响力的启发式、基于活跃度的启发式、基于冲突历史的启发式、失败加权度启发式、基于失败率的启发式......

 

约束求解的搜索策略

最小值域

 

失败加权度变量启发式

 

基于失败的变量启发式(李教授研究)

 

470
1
0
1
关于作者
相关文章
  • 国内量子计算机完美求解D-wave应用案例(内含万能转化代码) ...
    D-Wave是全球首个商业量子计算机供应商,也堪称量子计算领域的龙头。截至 今年,已经开发了数百 ...
    了解详情 
  • 离散优化问题之三国招兵
    东汉末年分三国,烽火连天不休。刘关张桃园结义,招兵志平暴乱。 兵源 冯家村刘家村赵 ...
    了解详情 
在本版发帖返回顶部
快速回复 返回顶部 返回列表