幻灯片下载-ECOLE
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
邻居变量:如果两个变量出现在同一个子句中,称他们是邻居。 变量x的格局:一个由x的所有邻居变量的赋值构成的向量。
格局检测用于SAT问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
CC for SAT:对于一个变量v,如果从上次v改变赋值之后, v的格局没
用局部搜索求解以下MaxSAT(或SAT)实例 {x1 \/ ~x2, x1 \/ x2, x2 \/x3, ~x1 \/ x2 \/~x3}
赋值 初始 000 Step 1 001 Step 2 101 Step 3 110
不满足的子句 x1 \/ x2, x2 \/x3 x1 \/ x2 ~x1 \/ x2 \/~x3 无 (找到最优解)
有改变过,那么禁止v变回原来的赋值。
顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
顶点覆盖:对于一个无向图,一个顶点覆盖是一个顶点子集,使得每
条边都至少有一个点属于该集合。
最小顶点覆盖问题:给定一个无向图,找出最小的顶点覆盖。
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
简单地说,局部搜索是:
先产生一个(或一群)完整的候选解,然后进行迭代改进,每一步只修改 解的某个局部(比如一个基本单元),直到得到一个令人满意的解或者达 到某个资源限制(一般是时间限制)。
格局检测(configuration checking,简称CC)的直观理解:
无法记忆整个解,但可以记忆每个解部件的环境及其变化。 通过检测解部件的环境,减少解的局部结构上的循环,以此减少整
个搜索的循环问题。 对于一个解部件x,如果从上次x改变赋值之后, x的环境没有改变
过,那么禁止x变回原来的赋值。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
解部件的格局
我们把解部件的环境信息称为它的格局,可以有不同的定义 最常见的是:
一个解部件的格局,是一个由它的邻居解部件的赋值构成的向量。
一个例子:CC for SAT
组合优化问题随处可见,具有很强的工程代表性应用。 许多组合优化问题都是NP难的:最大可满足性(MaxSAT)问题,最大团
问题,最小顶点覆盖问题,旅行商问题。。。
求解NP难组合优化问题
分支限界:完备算法(保证解的最优性),回溯搜索,遍历解空间 启发式搜索(包括局部搜索,演化算法等):不完备算法,迭代改进,采
样解空间
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
简单地说,局部搜索是:
先产生一个(或一群)完整的候选解,然后进行迭代改进,每一步只修改 解的某个局部(比如一个基本单元),直到得到一个令人满意的解或者达 到某个资源限制(一般是时间限制)。
变元:x1,x2, x3,… , xn 文字:变元或者其否定形式 x1,~x1, … 子句:文字的析取 x1 \/ ~x2, x1 \/ x2 \/~x4, …. CNF公式:子句的合取,可看为一个子句集合
MaxSAT(优化问题):给出一组(布尔)赋值,满足最多子句。 SAT(判定问题):是否存在一组(布尔)赋值,满足所有子句。
格局检测是一种从空间(或结构)上考虑的禁忌策略
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
解部件的格局
我们把解部件的环境信息称为它的格局,可以有不同的定义 最常见的是:
一个解部件的格局,是一个由它的邻居解部件的赋值构成的向量。
比如对SAT问题,变量的格局还可以定义为:变量的关联子句的状态构成的向 量。
不同的检测方法不同的CC策略。
比如量化CC,以格局改变的幅度作为选择解部件的一个优先序法则。
不同的格局定义,禁忌强度不同。
可以设计多层次的CC策略。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
循环问题不可能完全避免
这是由局部搜索的无记忆性决定的 不可能增加一个记忆机制来记住访问过的候选解,空间时间要求都太庞大
局部搜索的循环问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的循环问题
重复访问(近期刚访问过的)候选解 花费很长时间在解空间的某个区域(比如某个局部最优附近的区域)搜索 导致:容易陷入局部最优,花费太多时间在做无效搜索。。。 很多局部搜索的文献其实都是围绕如何解决这个问题
局部搜索的循环问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的循环问题
重复访问(近期刚访问过的)候选解 花费很长时间在解空间的某个区域(比如某个局部最优附近的区域)搜索 导致:容易陷入局部最优,花费太多时间在做无效搜索。。。 很多局部搜索的文献其实都是围绕如何解决这个问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
格局检测:普适的 局部搜索策略
蔡少伟 中国科学院软件研究所
2015.6.13
组合优化
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
格局检测用于顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
最小顶点覆盖问题可以通过迭代解决其判定问题来求解
当找到一个规模为k的顶点覆盖时,继续寻找一个规模为k-1的顶点 覆盖。
算法核心:对一个整数k,找一个规模为k的顶点集合覆盖所有的边。 初始的时候,构造一个规模为k的顶点集合(候选解)。 局部搜索的每一步交换集合中的一点和集合外的一点。
Байду номын сангаас 形式化一点说,局部搜索定义为:
候选解集合(也称搜索空间)S; 目标函数 f:S->R(实数集); 初始候选解集合 I; 邻域关系 N: S->2^S,对于每个候选解s,N(s) = {s′ ∈ S|N(s, s′)} ⊆ S; (一
般是基于候选解的海明距离,最常见的是1-海明距离邻域) 跳转函数(Step function):定义了如何从当前候选解跳转到它的一个邻
格局检测用于顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
最小顶点覆盖问题可以通过迭代解决其判定问题来求解
当找到一个规模为k的顶点覆盖时,继续寻找一个规模为k-1的顶点 覆盖。
算法核心:对一个整数k,找一个规模为k的顶点集合覆盖所有的边。 初始的时候,构造一个规模为k的顶点集合(候选解)。 局部搜索的每一步交换集合中的一点和集合外的一点。
组合优化问题
优化问题可以分为两类:一类是连续变量的问题,另一类是离散变量的问 题,后者称为组合优化问题。
组合优化问题的任务:从一个有限或可数无限集里,寻找一个使得目标函 数最优的对象——典型地包括:一组赋值,一个集合,一个排列。
组合优化问题随处可见,具有很强的工程代表性应用。
许多组合优化问题都是NP难的:最大可满足性(MaxSAT)问题,最大团 问题,最小顶点覆盖问题,旅行商问题。。。
格局检测已经被使用于多个组合优化问题
SAT,MaxSAT,顶点覆盖,最大团,图着色,集合覆盖,支配集,刻度 划分问题等等。
从2011年提出到目前已经产生20几篇论文(包括其他团队)。
格局检测对SAT领域产生极大影响
2013年SAT比赛随机组接近40%的solver使用该技术; 最近三年,共有6个获奖SAT solver使用该技术,包括2个第一,2个第二,
MaxSAT(优化问题):给出一组(布尔)赋值,满足最多子句。 SAT(判定问题):是否存在一组(布尔)赋值,满足所有子句。
一个局部搜索的例子
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
一个例子:最大可满足性问题(MaxSAT)
格局检测:对一个顶点v,如果从上次v被移出候选解之后,v的格局没
有改变过,那么禁止把v重新加入候选解。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
更一般的说,格局检测(CC)是一种思想
不同的格局定义不同的CC策略。
2个第三; 最近两年,非完备算法组获奖的MaxSAT solver大都采用了格局检测。 AAAI 2013年关于SAT方面的Tutorial Forum评价“It is outstanding. It is
likely changing the game.”
居候选解
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的优点:
简单; 通用; 容易实现; 可扩展性强; 许多NP难问题在求解性能上最好的算法都是基于局部搜索
什么时候使用局部搜索
组合爆炸:对于NP难问题,解空间是问题规模的指数级别 时间限制短,或者时间资源非常重要 关于问题的领域知识太少 接受近似解
循环问题不可能完全避免
这是由局部搜索的无记忆性决定的 不可能增加一个记忆机制来记住访问过的候选解,空间时间要求都太庞大
已有的(通用)方法
随机游动 重启 以一定条件(如概率)允许非改进步 Tabu策略:禁止反转近期内(t步内)所做的改动 加权方法改变能量地图
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
相关概念:
解的基本单元一般称为解部件(solution component):在最大团问题 中是一个点,在可满足性问题中是一个变元。。。
解部件的赋值:例如,点 {选中,没选中}, 变元 {true, false}
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
相关概念:
解的基本单元一般称为解部件(solution component):在最大团问题 中是一个点,在可满足性问题中是一个变元。。。
解部件的赋值:例如,点 {选中,没选中}, 变元 {true, false}
组合优化
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
组合优化问题
优化问题可以分为两类:一类是连续变量的问题,另一类是离散变量的问 题,后者称为组合优化问题。
组合优化问题的任务:从一个有限或可数无限集里,寻找一个使得目标函 数最优的对象——典型地包括:一组赋值,一个集合,一个排列。
一个局部搜索的例子
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
一个例子:最大可满足性问题(MaxSAT)
变元:x1,x2, x3,… , xn 文字:变元或者其否定形式 x1,~x1, … 子句:文字的析取 x1 \/ ~x2, x1 \/ x2 \/~x4, …. CNF公式:子句的合取,可看为一个子句集合
格局检测用于SAT问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
CC for SAT:对于一个变量v,如果从上次v改变赋值之后, v的格局没
用局部搜索求解以下MaxSAT(或SAT)实例 {x1 \/ ~x2, x1 \/ x2, x2 \/x3, ~x1 \/ x2 \/~x3}
赋值 初始 000 Step 1 001 Step 2 101 Step 3 110
不满足的子句 x1 \/ x2, x2 \/x3 x1 \/ x2 ~x1 \/ x2 \/~x3 无 (找到最优解)
有改变过,那么禁止v变回原来的赋值。
顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
顶点覆盖:对于一个无向图,一个顶点覆盖是一个顶点子集,使得每
条边都至少有一个点属于该集合。
最小顶点覆盖问题:给定一个无向图,找出最小的顶点覆盖。
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
简单地说,局部搜索是:
先产生一个(或一群)完整的候选解,然后进行迭代改进,每一步只修改 解的某个局部(比如一个基本单元),直到得到一个令人满意的解或者达 到某个资源限制(一般是时间限制)。
格局检测(configuration checking,简称CC)的直观理解:
无法记忆整个解,但可以记忆每个解部件的环境及其变化。 通过检测解部件的环境,减少解的局部结构上的循环,以此减少整
个搜索的循环问题。 对于一个解部件x,如果从上次x改变赋值之后, x的环境没有改变
过,那么禁止x变回原来的赋值。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
解部件的格局
我们把解部件的环境信息称为它的格局,可以有不同的定义 最常见的是:
一个解部件的格局,是一个由它的邻居解部件的赋值构成的向量。
一个例子:CC for SAT
组合优化问题随处可见,具有很强的工程代表性应用。 许多组合优化问题都是NP难的:最大可满足性(MaxSAT)问题,最大团
问题,最小顶点覆盖问题,旅行商问题。。。
求解NP难组合优化问题
分支限界:完备算法(保证解的最优性),回溯搜索,遍历解空间 启发式搜索(包括局部搜索,演化算法等):不完备算法,迭代改进,采
样解空间
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
简单地说,局部搜索是:
先产生一个(或一群)完整的候选解,然后进行迭代改进,每一步只修改 解的某个局部(比如一个基本单元),直到得到一个令人满意的解或者达 到某个资源限制(一般是时间限制)。
变元:x1,x2, x3,… , xn 文字:变元或者其否定形式 x1,~x1, … 子句:文字的析取 x1 \/ ~x2, x1 \/ x2 \/~x4, …. CNF公式:子句的合取,可看为一个子句集合
MaxSAT(优化问题):给出一组(布尔)赋值,满足最多子句。 SAT(判定问题):是否存在一组(布尔)赋值,满足所有子句。
格局检测是一种从空间(或结构)上考虑的禁忌策略
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
解部件的格局
我们把解部件的环境信息称为它的格局,可以有不同的定义 最常见的是:
一个解部件的格局,是一个由它的邻居解部件的赋值构成的向量。
比如对SAT问题,变量的格局还可以定义为:变量的关联子句的状态构成的向 量。
不同的检测方法不同的CC策略。
比如量化CC,以格局改变的幅度作为选择解部件的一个优先序法则。
不同的格局定义,禁忌强度不同。
可以设计多层次的CC策略。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
循环问题不可能完全避免
这是由局部搜索的无记忆性决定的 不可能增加一个记忆机制来记住访问过的候选解,空间时间要求都太庞大
局部搜索的循环问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的循环问题
重复访问(近期刚访问过的)候选解 花费很长时间在解空间的某个区域(比如某个局部最优附近的区域)搜索 导致:容易陷入局部最优,花费太多时间在做无效搜索。。。 很多局部搜索的文献其实都是围绕如何解决这个问题
局部搜索的循环问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的循环问题
重复访问(近期刚访问过的)候选解 花费很长时间在解空间的某个区域(比如某个局部最优附近的区域)搜索 导致:容易陷入局部最优,花费太多时间在做无效搜索。。。 很多局部搜索的文献其实都是围绕如何解决这个问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
格局检测:普适的 局部搜索策略
蔡少伟 中国科学院软件研究所
2015.6.13
组合优化
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
格局检测用于顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
最小顶点覆盖问题可以通过迭代解决其判定问题来求解
当找到一个规模为k的顶点覆盖时,继续寻找一个规模为k-1的顶点 覆盖。
算法核心:对一个整数k,找一个规模为k的顶点集合覆盖所有的边。 初始的时候,构造一个规模为k的顶点集合(候选解)。 局部搜索的每一步交换集合中的一点和集合外的一点。
Байду номын сангаас 形式化一点说,局部搜索定义为:
候选解集合(也称搜索空间)S; 目标函数 f:S->R(实数集); 初始候选解集合 I; 邻域关系 N: S->2^S,对于每个候选解s,N(s) = {s′ ∈ S|N(s, s′)} ⊆ S; (一
般是基于候选解的海明距离,最常见的是1-海明距离邻域) 跳转函数(Step function):定义了如何从当前候选解跳转到它的一个邻
格局检测用于顶点覆盖问题
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
最小顶点覆盖问题可以通过迭代解决其判定问题来求解
当找到一个规模为k的顶点覆盖时,继续寻找一个规模为k-1的顶点 覆盖。
算法核心:对一个整数k,找一个规模为k的顶点集合覆盖所有的边。 初始的时候,构造一个规模为k的顶点集合(候选解)。 局部搜索的每一步交换集合中的一点和集合外的一点。
组合优化问题
优化问题可以分为两类:一类是连续变量的问题,另一类是离散变量的问 题,后者称为组合优化问题。
组合优化问题的任务:从一个有限或可数无限集里,寻找一个使得目标函 数最优的对象——典型地包括:一组赋值,一个集合,一个排列。
组合优化问题随处可见,具有很强的工程代表性应用。
许多组合优化问题都是NP难的:最大可满足性(MaxSAT)问题,最大团 问题,最小顶点覆盖问题,旅行商问题。。。
格局检测已经被使用于多个组合优化问题
SAT,MaxSAT,顶点覆盖,最大团,图着色,集合覆盖,支配集,刻度 划分问题等等。
从2011年提出到目前已经产生20几篇论文(包括其他团队)。
格局检测对SAT领域产生极大影响
2013年SAT比赛随机组接近40%的solver使用该技术; 最近三年,共有6个获奖SAT solver使用该技术,包括2个第一,2个第二,
MaxSAT(优化问题):给出一组(布尔)赋值,满足最多子句。 SAT(判定问题):是否存在一组(布尔)赋值,满足所有子句。
一个局部搜索的例子
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
一个例子:最大可满足性问题(MaxSAT)
格局检测:对一个顶点v,如果从上次v被移出候选解之后,v的格局没
有改变过,那么禁止把v重新加入候选解。
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
更一般的说,格局检测(CC)是一种思想
不同的格局定义不同的CC策略。
2个第三; 最近两年,非完备算法组获奖的MaxSAT solver大都采用了格局检测。 AAAI 2013年关于SAT方面的Tutorial Forum评价“It is outstanding. It is
likely changing the game.”
居候选解
局部搜索
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
局部搜索的优点:
简单; 通用; 容易实现; 可扩展性强; 许多NP难问题在求解性能上最好的算法都是基于局部搜索
什么时候使用局部搜索
组合爆炸:对于NP难问题,解空间是问题规模的指数级别 时间限制短,或者时间资源非常重要 关于问题的领域知识太少 接受近似解
循环问题不可能完全避免
这是由局部搜索的无记忆性决定的 不可能增加一个记忆机制来记住访问过的候选解,空间时间要求都太庞大
已有的(通用)方法
随机游动 重启 以一定条件(如概率)允许非改进步 Tabu策略:禁止反转近期内(t步内)所做的改动 加权方法改变能量地图
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
相关概念:
解的基本单元一般称为解部件(solution component):在最大团问题 中是一个点,在可满足性问题中是一个变元。。。
解部件的赋值:例如,点 {选中,没选中}, 变元 {true, false}
格局检测
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
相关概念:
解的基本单元一般称为解部件(solution component):在最大团问题 中是一个点,在可满足性问题中是一个变元。。。
解部件的赋值:例如,点 {选中,没选中}, 变元 {true, false}
组合优化
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
组合优化问题
优化问题可以分为两类:一类是连续变量的问题,另一类是离散变量的问 题,后者称为组合优化问题。
组合优化问题的任务:从一个有限或可数无限集里,寻找一个使得目标函 数最优的对象——典型地包括:一组赋值,一个集合,一个排列。
一个局部搜索的例子
中国科学院软件研究所
Institute of Software,Chinese Academy of Sciences
一个例子:最大可满足性问题(MaxSAT)
变元:x1,x2, x3,… , xn 文字:变元或者其否定形式 x1,~x1, … 子句:文字的析取 x1 \/ ~x2, x1 \/ x2 \/~x4, …. CNF公式:子句的合取,可看为一个子句集合