当前课程知识点:算法设计与分析 > 10 Local Search > 10.1 Landscape of an Optimization Problem > Landscape of an Optimization Problem
Local Search
即局部搜索是一种常用的算法设计方法
面对一个NP-hard问题
我们能做些什么呢
复杂性理论告诉我们
不太可能找到多项式时间算法
我们必须要对算法的下面三个基本要求
做一些取舍
求得最优解
算法的运行时间是多项式的
解决问题的任意一个实例
局部搜索算法可能对这三点都不满足
我们先对局部搜索算法做个一般性的介绍
还以顶点覆盖问题为例
给定图G=(V,E)
求一个最小的顶点的子集S
使得对于E中的任何一条边
它至少有一个端点属于S
我们可以定义S的邻居S'
为S增加或删去一个顶点
那么每个顶点覆盖S至多有n个邻居
然后我们可以给出梯度下降的算法
开始时
令S=V
如果存在一个邻居S'也是一个顶点覆盖
并且包含的顶点数更少
那么用S'替代S
注意到 算法至多n步终止
因为它每步会下降目标值一个单位
我们来看几个例子
对于第一个图
最优解是中间的顶点
而其它所有的顶点构成一个局部最优
第二个图中
左边的顶点是最优顶点覆盖
而右边的点构成一个局部最优
第三个图中
从左到右 偶数位置的点是最优的
而去掉3的倍数的位置的点
得到的顶点覆盖是一个局部最优解
可以看到
局部搜索的算法
不能保证得到顶点覆盖问题的最优解
还可能严重偏离最优解
局部搜索算法通过探索附近的可行解
从当前解改进到一个更好的邻居解
令S'是问题中S的一个邻居
梯度下降算法的思想是
令当前解为S
如果存在一个邻居S'
其目标值更优
那么用S'替代S
否则算法终止
对于左图中只有一个局部最优的情况
我们可以通过找到这个局部最优
得到全局的最优解
而一般情况
如右图所示
我们往往只能找到一个局部的最优解
这依赖于初始状态的选择
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam