当前课程知识点:算法设计与分析 >  5 Divide and Conquer >  5.3 Closest Pair of Points >  Closest Pair of Points

返回《算法设计与分析》慕课在线视频课程列表

Closest Pair of Points在线视频

Closest Pair of Points

下一节:Integer Multiplication

返回《算法设计与分析》慕课在线视频列表

Closest Pair of Points课程教案、知识点、字幕

我们再来研究一个基本的几何问题

最近点对问题

给定平面上n个点

求欧式距离最近的一对点

这是最基本的几何问题

在图形学

计算机视觉

几何信息系统

分子模型

空中交通管制等等都有重要的应用

这个问题也是最近邻居

欧式最小支撑树问题的一个特例

我们可以用强力搜索的方法

计算出任何两对之间的距离

然后寻找出最小的一个

这需要n^2级别的计算时间

我们考虑简化的情形

一维的情况

也就是说所有的点位于一条直线上

那么我们把这些点进行排序

然后依次计算相邻两点之间的距离

并记录下最小值

用logn的时间就可以得到问题的解

在下面的讨论中

为了叙述上的方便

我们假设

任何的两点的横坐标都是不同的

问题中的点落于二维的平面中

一个自然的想法是横竖各做一次分割

把平面分成四个部分

但我们发现这样做有不易克服的困难

我们希望把问题分为4个规模相仿的部分

但是如上的划分中

我们很难使得

这四部分包含的点的数量差不多

我们考虑把平面只做一次分割

用一条竖直的线L把平面分为两个部分

可以使得左右两边

包含的点的数目大致相同

然后我们分别去治理这两部分

求出每部分的最近点对

合的过程需要比较左右两部分的最近点对

以及分别位于两部分的点对之间的最小距离

从中选出最好的一个

这里的困难显然在于

求分别位于两部分的点对之间的最小距离

平凡地求解

这其中包含的运算也是n2级别的

还看刚才的例子

如果我们分别求出左右两部分的最小距离

分别为12和21

令δ为两者的最小值=12

一个重要的发现是

我们只需要去探索

L左右两边δ宽度区域内的点

因为对于分别位于两部分的点对

如果有一个点落在这个区域之外

这个点对的距离至少是δ

不少于我们已经发现的某对点的距离

把宽度2δ的条形区域中的点

按照它们的y坐标进行排序

这个区域还可能包含绝大多数的点

实际上我们不需要计算任意两点之间的距离

而只需要去计算距离可能小于δ的点对

之后的结果表明

只需要计算每个点与相邻的11个点的距离

从而需要线性的运算时间

在2δ条形区域中

令s_i是按照y坐标从小到大排列的第i个点

我们声称

如果|i-j|大于等于12

那么 s_i和s_j之间的距离至少是δ

我们把这个条形区域分割为一些

δ/2为边长的小正方形

可以发现 在任意的一个小正方形中

最多只包含一个点

这是因为我们已经设定

在左右两个区域中

最近点的距离最小值为δ

而小正方形中

两个点之间的距离

不超过2分之根号2乘以δ

所以如果i和j的序号相差12个

它们至少相隔两行

它们之间的距离至少是2×δ/2等于δ

这就得到了我们需要的结论

实际上 通过更细致的分析和证明

我们可以把结论中的12替换成7

下面我们给出 求最近点对的分治算法

首先计算出直线L

把平面分为左右两个部分

每部分包含一半的点

递归调用本算法

对左右两部分分别求最近点对

设最小距离分别为δ_1和δ_2

令δ为两者的最小值

只保留L左右两边δ宽的区域中的点

删掉其它的点

把保留下来的点按照y坐标进行排序

对于每个点

计算它与之后的11个点之间的距离

找到最小的一个

如果得到了小于δ的值

那么我们就更新δ

最后返回δ

我们来分析一下算法的运行时间

第一步计算对点进行排序

需要O(nlogn)的时间

递归调用子算法需要2T(n/2)

删除点的操作需要O(n) 的时间

对保留下来的点

按照y坐标进行排序

需要O(nlogn)的时间

对于条形区域中的点

计算它与11个邻居的距离

共需要O(n)的时间

所以我们有

算法的运行时间T(n)≤2T(n/2)+O(nlogn)

可以归纳的证明

T(n)=O(nlog^2n)

是否能得到O(nlogn)的结果呢

是的

我们可以不必在每次调用子算法的时候

都对点进行排列

在每一步算法中返回两个序列

分别按照x坐标和y坐标进行排列

那么在合并操作的时候

也很容易把它们并归为有序的序列

那么刚才所得到的运行时间

就可以被2T(n/2)+O(n)所控制

可以得到T(n)=O(nlogn)

算法设计与分析课程列表:

1 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--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 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--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

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--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

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--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 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Closest Pair of Points笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。