2차원 평면상에서 가장 먼 두 점 구하기

78
가장 먼 두 점

Upload: -

Post on 12-Apr-2017

884 views

Category:

Engineering


12 download

TRANSCRIPT

Page 1: 2차원 평면상에서 가장 먼 두 점 구하기

가장 먼 두 점

Page 2: 2차원 평면상에서 가장 먼 두 점 구하기

2/ 321

선정배경 –기하알고리즘을배우자

Page 3: 2차원 평면상에서 가장 먼 두 점 구하기

3/ 321

점과점사이의거리

(6, 3)

(1, 1)

Page 4: 2차원 평면상에서 가장 먼 두 점 구하기

4/ 321

점과점사이의거리

Page 5: 2차원 평면상에서 가장 먼 두 점 구하기

5/ 321

점과점사이의거리

5

2Sqrt(25 + 9)

약 5.830951894845301

Page 6: 2차원 평면상에서 가장 먼 두 점 구하기

6/ 321

점과점사이의거리

5

넘나 쉬운 것

Page 7: 2차원 평면상에서 가장 먼 두 점 구하기

7/ 321

점들의집합중가장먼두점

점이 6개다

Page 8: 2차원 평면상에서 가장 먼 두 점 구하기

8/ 321

점들의집합중가장먼두점𝑂(𝑛2)알고리즘?

점이 6개다

Page 9: 2차원 평면상에서 가장 먼 두 점 구하기

9/ 321

점들의집합중가장먼두점

점이 100,000,000개면?

Page 10: 2차원 평면상에서 가장 먼 두 점 구하기

10/ 321

점들의집합중가장먼두점

점이 100,000,000개면?

-넘나어려운것

글쎄요

Page 11: 2차원 평면상에서 가장 먼 두 점 구하기

11/ 321

점들의집합중가장먼두점

점이 많으면 어려운 문제가 된다.

Page 12: 2차원 평면상에서 가장 먼 두 점 구하기

12/ 321

점들의집합중가장먼두점

𝑂(𝑛2) 알고리즘보다 더 쎈

𝑂(𝑛𝑙𝑜𝑔𝑛) 알고리즘이 존재

Page 13: 2차원 평면상에서 가장 먼 두 점 구하기

13/ 321

점들의집합중가장먼두점

𝑂(𝑛2) 알고리즘보다 더 쎈

𝑂(𝑛𝑙𝑜𝑔𝑛) 알고리즘이 존재

- 볼록 껍질 문제로 해결 가능

Page 14: 2차원 평면상에서 가장 먼 두 점 구하기

14/ 321

볼록껍질문제란?

요놈들을감싸는볼록껍질을구하라

Page 15: 2차원 평면상에서 가장 먼 두 점 구하기

15/ 321

볼록껍질문제란?

요놈들을감싸는볼록껍질을구하라

-이렇게만들면됨

Page 16: 2차원 평면상에서 가장 먼 두 점 구하기

16/ 321

볼록껍질문제란?

요놈들을감싸는볼록껍질을구하라

-이렇게만들면됨

어떻게 해야 할까?

Page 17: 2차원 평면상에서 가장 먼 두 점 구하기

17/ 321

볼록껍질문제풀이

Graham scan method (1972년)

𝑶(𝒏𝒍𝒐𝒈𝒏)

Page 18: 2차원 평면상에서 가장 먼 두 점 구하기

18/ 321

볼록껍질문제풀이

Graham scan method (1972년)

𝑶(𝒏𝒍𝒐𝒈𝒏)

Page 19: 2차원 평면상에서 가장 먼 두 점 구하기

19/ 321

볼록껍질문제풀이

무조건외곽이되는점은무엇일까?

Graham scan method

Page 20: 2차원 평면상에서 가장 먼 두 점 구하기

20/ 321

볼록껍질문제풀이

무조건외곽이되는점은무엇일까?

- 그것은상하좌우최외곽에있는점

Page 21: 2차원 평면상에서 가장 먼 두 점 구하기

21/ 321

볼록껍질문제풀이

이점은무조건볼록껍질에포함된다.

Page 22: 2차원 평면상에서 가장 먼 두 점 구하기

22/ 321

볼록껍질문제풀이

선택된점에서모든점사이의각도를구한다.

Page 23: 2차원 평면상에서 가장 먼 두 점 구하기

23/ 321

볼록껍질문제풀이

각도를기준으로이렇게정렬

Page 24: 2차원 평면상에서 가장 먼 두 점 구하기

24/ 321

볼록껍질문제풀이

각도를기준으로이렇게정렬

1

23

4

5

6

7

0

Page 25: 2차원 평면상에서 가장 먼 두 점 구하기

25/ 321

볼록껍질문제풀이

1

23

4

5

6

7

0

Page 26: 2차원 평면상에서 가장 먼 두 점 구하기

26/ 321

볼록껍질문제풀이

1

23

4

5

6

7

0

1

0

Stack

0, 1을 stack에넣음

Page 27: 2차원 평면상에서 가장 먼 두 점 구하기

27/ 321

볼록껍질문제풀이

1

23

4

5

6

7

0

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

Page 28: 2차원 평면상에서 가장 먼 두 점 구하기

28/ 321

볼록껍질문제풀이

23

4

5

6

7

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 29: 2차원 평면상에서 가장 먼 두 점 구하기

29/ 321

볼록껍질문제풀이

23

4

5

6

7

1

0

Stack

이진행은반시계방향인가?

1

0

Page 30: 2차원 평면상에서 가장 먼 두 점 구하기

30/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

반시계방향이니 Stack에현재검사중인번호(2)를

넣음

1

0

Page 31: 2차원 평면상에서 가장 먼 두 점 구하기

31/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 32: 2차원 평면상에서 가장 먼 두 점 구하기

32/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

반시계방향인가?

1

0

Page 33: 2차원 평면상에서 가장 먼 두 점 구하기

33/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

반시계방향이니 Stack에현재검사중인번호(3)를

넣음

1

0

Page 34: 2차원 평면상에서 가장 먼 두 점 구하기

34/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 35: 2차원 평면상에서 가장 먼 두 점 구하기

35/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

반시계방향인가?

1

0

Page 36: 2차원 평면상에서 가장 먼 두 점 구하기

36/ 321

볼록껍질문제풀이

23

4

5

6

7

4

3

2

1

0

Stack

반시계방향이니 Stack에현재검사중인번호(4)를

넣음

1

0

Page 37: 2차원 평면상에서 가장 먼 두 점 구하기

37/ 321

볼록껍질문제풀이

23

4

5

6

7

4

3

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 38: 2차원 평면상에서 가장 먼 두 점 구하기

38/ 321

볼록껍질문제풀이

23

4

5

6

7

4

3

2

1

0

Stack

시계방향인가? -ㅇㅇ

1

0

Page 39: 2차원 평면상에서 가장 먼 두 점 구하기

39/ 321

볼록껍질문제풀이

23

4

5

6

7

4

3

2

1

0

Stack

Stack을 pop

1

0

Page 40: 2차원 평면상에서 가장 먼 두 점 구하기

40/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

Stack을 pop

1

0

Page 41: 2차원 평면상에서 가장 먼 두 점 구하기

41/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 42: 2차원 평면상에서 가장 먼 두 점 구하기

42/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

반시계방향인가?

1

0

Page 43: 2차원 평면상에서 가장 먼 두 점 구하기

43/ 321

볼록껍질문제풀이

23

4

5

6

7

5

3

2

1

0

Stack

반시계방향이니 Stack에현재검사중인번호(5)를

넣음

1

0

Page 44: 2차원 평면상에서 가장 먼 두 점 구하기

44/ 321

볼록껍질문제풀이

23

4

5

6

7

5

3

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 45: 2차원 평면상에서 가장 먼 두 점 구하기

45/ 321

볼록껍질문제풀이

23

4

5

6

7

5

3

2

1

0

Stack

시계방향이다 - Stack을 pop

1

0

Page 46: 2차원 평면상에서 가장 먼 두 점 구하기

46/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

시계방향이다 - Stack을 pop

1

0

Page 47: 2차원 평면상에서 가장 먼 두 점 구하기

47/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자.

1

0

Page 48: 2차원 평면상에서 가장 먼 두 점 구하기

48/ 321

볼록껍질문제풀이

23

4

5

6

7

3

2

1

0

Stack

시계방향이다 - Stack을 pop

1

0

Page 49: 2차원 평면상에서 가장 먼 두 점 구하기

49/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

시계방향이다 - Stack을 pop

1

0

Page 50: 2차원 평면상에서 가장 먼 두 점 구하기

50/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자. –반시계방향

1

0

Page 51: 2차원 평면상에서 가장 먼 두 점 구하기

51/ 321

볼록껍질문제풀이

23

4

5

6

72

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자. –반시계방향

1

0

Page 52: 2차원 평면상에서 가장 먼 두 점 구하기

52/ 321

볼록껍질문제풀이

23

4

5

6

7

6

2

1

0

Stack

Stack에서위에있는 2개의점과현재비교해야

하는점을이어보자. –반시계방향

1

0

Page 53: 2차원 평면상에서 가장 먼 두 점 구하기

53/ 321

볼록껍질문제풀이

23

4

5

6

7

7

6

2

1

0

Stack

검색종료.

1

0

Page 54: 2차원 평면상에서 가장 먼 두 점 구하기

54/ 321

볼록껍질문제풀이

23

4

5

6

7

6

2

1

0

Stack

Stack에있는점을이어보면볼록껍질이완성됨.

1

0

7

Page 55: 2차원 평면상에서 가장 먼 두 점 구하기

55/ 321

볼록껍질문제풀이

23

4

5

6

7

6

2

1

0

Stack

Stack에있는점을이어보면볼록껍질이완성됨.

1

0

7

Page 56: 2차원 평면상에서 가장 먼 두 점 구하기

56/ 321

점들의집합중가장먼두점

23

4

5

6

점들의집합중가장먼두점은볼록껍질을구성하는

점들의집합에존재한다.

1

0

7

Page 57: 2차원 평면상에서 가장 먼 두 점 구하기

57/ 321

점들의집합중가장먼두점

G I F

Page 58: 2차원 평면상에서 가장 먼 두 점 구하기

58/ 321

점들의집합중가장먼두점

23

4

5

6

볼록껍질다각형에서가장먼두점을어떻게찾을까?

1

0

7

Page 59: 2차원 평면상에서 가장 먼 두 점 구하기

59/ 321

점들의집합중가장먼두점

23

4

5

6

볼록껍질다각형에서가장먼두점을어떻게찾을까?

1

0

7

𝑂(𝑛2)알고리즘?

Page 60: 2차원 평면상에서 가장 먼 두 점 구하기

60/ 321

점들의집합중가장먼두점

23

4

5

6

𝑂(𝑛2)이 아니라 𝑂(𝑛)알고리즘이 존재

1

0

7

Page 61: 2차원 평면상에서 가장 먼 두 점 구하기

61/ 321

점들의집합중가장먼두점

Rotating calipers (1978년)

Page 62: 2차원 평면상에서 가장 먼 두 점 구하기

62/ 321

점들의집합중가장먼두점

Rotating calipers (1978년)

rightest

leftest

Page 63: 2차원 평면상에서 가장 먼 두 점 구하기

63/ 321

점들의집합중가장먼두점

rightest

leftest

Page 64: 2차원 평면상에서 가장 먼 두 점 구하기

64/ 321

점들의집합중가장먼두점

rightest

leftest

Page 65: 2차원 평면상에서 가장 먼 두 점 구하기

65/ 321

점들의집합중가장먼두점

수직선

Page 66: 2차원 평면상에서 가장 먼 두 점 구하기

66/ 321

점들의집합중가장먼두점

Page 67: 2차원 평면상에서 가장 먼 두 점 구하기

67/ 321

점들의집합중가장먼두점

각도가 더욱

작은 쪽 직선을 회전

Page 68: 2차원 평면상에서 가장 먼 두 점 구하기

68/ 321

점들의집합중가장먼두점

Page 69: 2차원 평면상에서 가장 먼 두 점 구하기

69/ 321

점들의집합중가장먼두점

Page 70: 2차원 평면상에서 가장 먼 두 점 구하기

70/ 321

점들의집합중가장먼두점

Page 71: 2차원 평면상에서 가장 먼 두 점 구하기

71/ 321

점들의집합중가장먼두점

Page 72: 2차원 평면상에서 가장 먼 두 점 구하기

72/ 321

점들의집합중가장먼두점

한 바퀴 돌면 그만!

Page 73: 2차원 평면상에서 가장 먼 두 점 구하기

73/ 321

점들의집합중가장먼두점

Page 74: 2차원 평면상에서 가장 먼 두 점 구하기

74/ 321

점들의집합중가장먼두점

총 시간복잡도?

𝑛𝑙𝑜𝑔𝑛 + 𝑛𝑙𝑜𝑔𝑛 + 𝑛

𝑂(𝑛𝑙𝑜𝑔𝑛)

Page 75: 2차원 평면상에서 가장 먼 두 점 구하기

75/ 321

응용

othogonal

Bounding box

Bounding box(3D)

Page 76: 2차원 평면상에서 가장 먼 두 점 구하기

76/ 321

응용

othogonal

Bounding box

Bounding box(3D)

Page 77: 2차원 평면상에서 가장 먼 두 점 구하기

77/ 321

응용

Cluster bound

Page 78: 2차원 평면상에서 가장 먼 두 점 구하기

Q&A