the divide-and- conquer strategy 5-1 the 2-dimensional maxima finding problem 5-2 the closest pair...

Post on 16-Dec-2015

226 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

The Divide-and-Conquer The Divide-and-Conquer StrategyStrategy

5-1 The 2-Dimensional maxima finding problem5-1 The 2-Dimensional maxima finding problem5-2 The Closest pair problem5-2 The Closest pair problem5-3 The Convex hull problem5-3 The Convex hull problem

指導教授:指導教授:徐熊健徐熊健 教授 教授報告者:陳琨報告者:陳琨

22

Divide-and-ConquerDivide-and-Conquer

精神 : 分裂並各個擊破

什麼樣的問題適用 ? 一個問題如果能切割成兩個獨立的小問題,且解小問題與解

原始問題是一樣一樣的,差別只在於 size 的大小時

33

A General Divide-and-Conquer A General Divide-and-Conquer AlgorithmAlgorithm

Step 1Step 1: If the problem size is small, solve this : If the problem size is small, solve this problem directly; otherwise, split the problem directly; otherwise, split the original problem into 2 sub-problems original problem into 2 sub-problems with equal sizes.with equal sizes.

Step 2Step 2: Recursively solve these 2 sub-problems : Recursively solve these 2 sub-problems by applying this algorithm.by applying this algorithm.

Step 3Step 3: Merge the solutions of the 2 sub-: Merge the solutions of the 2 sub-problems into a solution of the original problems into a solution of the original problem.problem.

44

A General Divide-and-Conquer A General Divide-and-Conquer IIllustration - 1llustration - 1

Step 1Step 1

直接解

If sma

ll

else

55

A General Divide-and-Conquer A General Divide-and-Conquer IIllustration - 2llustration - 2

Step 2Step 2

66

Step 3Step 3

A General Divide-and-Conquer A General Divide-and-Conquer IIllustration - 3llustration - 3

77

Time Complexity of the General Time Complexity of the General AlgorithmAlgorithm

Time Complexity

2 ( ) ( ) ( ) ,( ) 2

,

nT S n M n n c

T nb n c

time of splitting

time of merging

constant

88

A Simple ExampleA Simple Example

29 14 15 01 06 10 32 12

Finding the maximum

29 14 15 01 06 10 32 12

29 14 15 01 06 10 32 12

99

A Simple Example A Simple Example (cont.)(cont.)

29 32

Finding the maximum

29

32

29 14

15

15 01

10

06

32

32 1210

1010

Time ComplexityTime Complexity

Time Complexity 2 ( ) 1 , 2

( ) 21 , 2

nT n

T nn

T(n) = 2T(n/2)+1

Assume n = 2k

= 2(2T(n/4)+1)+1

= 2k-1 = n-1

= 4T(n/4)+2+1

= 2k-1T(2)+2k-2+…+4+2+1= 2k-1+2k-2+…+4+2+1

T(n/2) = 2T[(n/2)/2]+1

22

kn

x x

12kx

1111

5-1 The 2-Dimesional Maxima 5-1 The 2-Dimesional Maxima Finding ProblemFinding Problem

何謂 Dominates ? A point (x1, y1) dominates (x2, y2) if x1 > x2 and

y1 > y2.

X

Y

B

A

A dominates B

1212

A point is called a maxima if no other point dominates it.

何謂 Maxima ?

5-1 The 2-Dimesional Maxima 5-1 The 2-Dimesional Maxima Finding Problem Finding Problem (cont.)(cont.)

X

Y兩兩比較

Time Complexity : O(n2)

1313

Maxima Finding AlgorithmMaxima Finding Algorithm

Input:Input: A set S of n planar points.A set S of n planar points.

Output:Output: The maximal points of S.The maximal points of S.

Step 1:Step 1: If S contains only one point, return it as the maxiIf S contains only one point, return it as the maxima. Otherwise, find a line L perpendicular to the ma. Otherwise, find a line L perpendicular to the X-axis which separates S into SX-axis which separates S into SLLand Sand SRR, with equ, with equ

al sizes.al sizes.

Step 2:Step 2: Recursively find the maximal points of SRecursively find the maximal points of SLL and S and SRR . .

Step 3:Step 3: Find the largest y-value of SR, denoted as yFind the largest y-value of SR, denoted as yRR. Dis. Dis

card each of the maximal points of SL if its y-valucard each of the maximal points of SL if its y-value is less than ye is less than yRR..

1414

Maxima Finding Algorithm Maxima Finding Algorithm Illustration - 1Illustration - 1

Step 1Step 1

maxima

If only one point

else

X

Y Y

X

L

SL SR

Time Complexity : O(n)

1515

Maxima Finding Algorithm Maxima Finding Algorithm Illustration - 2Illustration - 2

Step 2Step 2

Y

X

SL SR

L L

Time Complexity : 2T(n/2)

1616

Maxima Finding Algorithm Maxima Finding Algorithm Illustration - 3Illustration - 3

Step 3Step 3Time Complexity :

X

Y LSL SR => O(n) (presorting)

=> O(nlogn)

1717

Maxima Finding Time complexityMaxima Finding Time complexity

Step 1: O(n)

2 ( ) ( ) ( log ) , 1( ) 2

1 , 1

nT O n O n n n

T nn

Step 2: 2T(n/2)

Step 3: O(nlogn)

Assume n = 2k

2

2

( ) ( log ) ( log )

( log )

T n O n n O n n

O n n

Time complexity: T(n)

1818

Maxima Finding Time complexity Maxima Finding Time complexity (cont.)(cont.)

Step 1: O(n)

2 ( ) ( ) ( ) , 1( ) 2

1 , 1

nT O n O n n

T nn

Step 2: 2T(n/2)

Step 3: O(n)

Assume n = 2k

( ) ( log )T n O n n

After presorting Time complexity: O(nlogn)+T(n)

Time complexity = O(nlogn)+T(n) = O(nlogn)+O(nlogn) = O(nlogn)

1919

5-2 The Closest Pair Problem5-2 The Closest Pair Problem

何謂 Closest Pair ? Given a set S of n points, find a pair of points which are cl

osest together( 在一個有 n 個點的集合 S 中,找最靠近的兩個點 )

1-D version:1-D version:

X

Time Complexity : O(nlogn)

2-D version:2-D version:

X

Y

2020

Closest Pair AlgorithmClosest Pair Algorithm

Input:Input: A set S of n planar points.A set S of n planar points.

Output:Output: The distance between two closest points. The distance between two closest points.

Step 1:Step 1: Sort points in S according to their y-values.Sort points in S according to their y-values.

Step 2:Step 2: If S contains only one point, return infinity as its distIf S contains only one point, return infinity as its distance.ance.

Step 3:Step 3: Find a median line L perpendicular to the X-axis to Find a median line L perpendicular to the X-axis to divide S into Sdivide S into SLL and S and SRR, with equal sizes., with equal sizes.

Step 4:Step 4: Recursively apply Steps 2 and 3 to solve the closesRecursively apply Steps 2 and 3 to solve the closest pair problems of St pair problems of SLL and S and SRR. Let d. Let dLL(d(dRR) denote the ) denote the

distance between the closest pair in Sdistance between the closest pair in SLL (S (SRR). Let d ). Let d

= min(d= min(dLL, d, dRR).).

2121

Y

X

Closest Pair Algorithm Closest Pair Algorithm Illustration - 1Illustration - 1

Step 2Step 2

d = ∞

If only one point

X

Y L

SL SR

Time Complexity : O(n)

Step 1Step 1 先針對每個點 X 軸的值和 Y 軸的值做排序

Step 3Step 3

2222

Closet Pair Algorithm Closet Pair Algorithm Illustration - 2Illustration - 2

Step 4Step 4

SL SR

L L

Time Complexity : 2T(n/2)

Y

X

2323

dR

Closet Pair Algorithm Closet Pair Algorithm Illustration - 3Illustration - 3

Step 5Step 5

SL SR

LY

X

dL

d=min(dL,dR)L-d L+d

2424

Closet Pair Algorithm Closet Pair Algorithm Illustration - 4Illustration - 4

Y

X

P

d

2d

2525

Closest Pair Time complexityClosest Pair Time complexity

Step 1: O(nlogn)

2 ( ) ( ) ( ) , 1( ) 2

1 , 1

nT O n O n n

T nn

Step 2~5: T(n) = 2T(n/2)+S(n)+M(n)

( ) ( log )T n O n n

Time complexity:

Total time-complexity = O(nlogn)+T(n) = O(nlogn)+O(nlogn) = O(nlogn)

2626

5-3 The Convex Hull Problem5-3 The Convex Hull Problem

Concave polygon ( 凹多邊形 ):

Convex polygon :

何謂 Convex polygon ( 凸多邊形 ) ?

2727

5-3 The Convex Hull Problem 5-3 The Convex Hull Problem (Cont.)(Cont.)

何謂 Convex Hull ?

The Convex hull of a set of planar points is defined as the smallest convex polygon containing all of the points.( 在平面上的一組點,用最小面積的凸多邊形將所有點包起來 )

2828

Convex Hull AlgorithmConvex Hull Algorithm

Input Input :: A set S of planar pointsA set S of planar pointsOutputOutput : : A convex hull for SA convex hull for SStep 1:Step 1: If S contains no more than five points, use exhaustiIf S contains no more than five points, use exhausti

ve searching to find the convex hull and return.ve searching to find the convex hull and return.Step 2:Step 2: Find a median line perpendicular to the X-axis whicFind a median line perpendicular to the X-axis whic

h divides S into Sh divides S into SLL and S and SRR, with equal sizes., with equal sizes.

Step 3:Step 3: Recursively construct convex hulls for SRecursively construct convex hulls for SLL and S and SRR, d, denoted as Hull(Senoted as Hull(SLL) and Hull(S) and Hull(SRR), respectively.), respectively.

Step 4:Step 4: Apply the merging procedure to merge Hull(SApply the merging procedure to merge Hull(SLL) and ) and Hull(SHull(SRR) together to form a convex hull.) together to form a convex hull.

2929

Use Divide-and-Conquer to Use Divide-and-Conquer to SolveSolve

Y

X

SLSR

L

Use Graham scan

3030

Graham Scan AlgorithmGraham Scan Algorithm

Step 1:Step 1: Select an interior point as the origin.Select an interior point as the origin.

Step 2:Step 2: Each other point forms a polar angle, Each other point forms a polar angle, and all points sorted by polar anglesand all points sorted by polar angles

Step 3:Step 3: Examines the points cause reflexive Examines the points cause reflexive anglesangles

Step 4:Step 4: The remaining points are convex hull The remaining points are convex hull verticesvertices

3131

The Graham scan (Illustration)The Graham scan (Illustration)

Y

X

P P0

P1

P2

P3

P4

P5

3232

Eliminates points (Illustration)Eliminates points (Illustration)

Y

X

P2

P3

P4

P5

P0

P1

令 P0,P1,P2 座標各為 (x0,y0) (x1,y1) (x2,y2)

0 0

1 1

2 2

1

det 1

1

x y

x y

x y

If det < 0 than 逆時針If det > 0 than 順時針If det = 0 than 三點共線

0 1 1 2 2 0 2 1 1 0 0 2det x y x y x y x y x y x y

3333

Use Divide-and-Conquer to Use Divide-and-Conquer to SolveSolve

Y

X

SLSR

L

jj

kk

gghh

aa bb

cc

dd

ee

ff

ii

pp

找小於 π/2 最大的

找大於 3π/2 最小的

3434

Use Divide-and-Conquer to Use Divide-and-Conquer to SolveSolve

Y

X

SL

L

jj

kk

gghh

aa bb

cc

dd

ee

ff

ii

SR

Time Complexity :

TT((nn) = 2) = 2TT((nn/2) + /2) + OO((nn))

= = OO((nnloglognn))

3535

The End

top related