SlideShare a Scribd company logo
Line Sweep Algorithms  원저자: bmerry  발표자: 심준현
목   차Line Sweep
 Events
Closest Pair
Line Segment Intersections
Union of Rectangles
Convex Hull
Manhattan Minimum Spanning TreeLine Sweep좌표평면에서 x축 또는 y축과 평행한 선으로 탐색하며주어진 점이나 직선을 탐색Event를 기준으로 움직임
Event각 직선/도형의 끝 지점컴퓨터의 특성상 연속적인 이동이 불가능하므로이 지점들의 좌표를 오름차순/내림차순으로 탐색
Closest Pair여러 개의 점들 중 가장 가까운 두 점 찾기단순 비교 -O(n^2)로 가능더 효율적인 방법은?
Closest Pair현재까지 최소 길이 h,현재까지 처리한 점의 개수 N-1X좌표 기준으로 점들을 정렬왼쪽에서부터 차례대로 처리점을 처리할 때 Set에 넣고다음 점으로 넘어갈 때나h가 감소할 때 Set에서 제거
Closest PairN번째 점과의 거리가h보다 가까운 점을 찾으려면현재 Set에 들어있으면서 N과의 x좌표, y좌표 차이가 각각 h 이하인 점들만 비교 대상Set의 원소들은 Y좌표로 정렬-> 정렬 시    Balanced Binary Tree 사용-> 탐색 Complexity O(log n)-> 전체 Complexity O(n log n)
Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분   1) X축에 평행한 직선의 양 끝   2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분   1) X축에 평행한 직선의 양 끝   2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
좀더 복잡한 경우…직선의 양 끝점과 Set 내 직선들의 교점까지 저장Priority Queue를 사용한 데이터 관리
Union of Rectangles사각형 안쪽의 넓이의 합 구하기X좌표를 기준으로 이벤트 구분   : 각사각형의 왼쪽, 오른쪽 모서리처음 왼쪽 모서리를 만났을 때 Set에 사각형 추가, 빠져나올 때 Set에서 제거넓이 = Σ(어떤 이벤트의 X좌표-이전 이벤트의 X좌표)*(cut length)

More Related Content

PPTX
점, 선, 면
PPT
GameMath-Chapter 09 가시성판단
PDF
프로그래머를위한선형대수학1.2
PPT
Chapter 02 행렬
PDF
10_무한 평면과 놀기
PDF
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
PDF
쏙 알고스터디 01
PDF
Algorithms summary korean
점, 선, 면
GameMath-Chapter 09 가시성판단
프로그래머를위한선형대수학1.2
Chapter 02 행렬
10_무한 평면과 놀기
[D2 CAMPUS] 2016 한양대학교 프로그래밍 경시대회 문제풀이
쏙 알고스터디 01
Algorithms summary korean

Similar to Line sweep algorithms (20)

PDF
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
PPTX
[데브루키]노대영_알고리즘 스터디
PDF
Shortest path algorithms
PDF
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
PPT
Equation Solving
PPTX
Doing math with python.ch06
PDF
자료구조(data structure)_NOTE 11. 그래프2.pdf
PDF
2018 Ajou Programming Contest solutions
PPTX
딥러닝-오차역전파법2
PPTX
2019 ppc answers
PDF
양성봉 - 알기쉬운 알고리즘 - 1장알고리즘의첫걸음
PPT
Data Structure 2
PDF
Coursera Machine Learning으로 기계학습 배우기 : week2
PDF
자료구조5보고서
PPTX
하스켈로 알고리즘 문제 풀기 2
PPT
웃으면서Python
PPTX
파이썬 Numpy 선형대수 이해하기
PDF
2019 경인지역 6개대학 연합 프로그래밍 경시대회 shake! 풀이
PDF
2017 cupc solution
PDF
Project#5 최단거리 찾기 D0 Hwp
[방송통신대 컴퓨터과학과] 2020년 1학기 전공 컴퓨터 그래픽스 과제물 제출본
[데브루키]노대영_알고리즘 스터디
Shortest path algorithms
알고리즘 연합캠프 세미나 1-C (알고리즘 설계와 모델링 및 수학)
Equation Solving
Doing math with python.ch06
자료구조(data structure)_NOTE 11. 그래프2.pdf
2018 Ajou Programming Contest solutions
딥러닝-오차역전파법2
2019 ppc answers
양성봉 - 알기쉬운 알고리즘 - 1장알고리즘의첫걸음
Data Structure 2
Coursera Machine Learning으로 기계학습 배우기 : week2
자료구조5보고서
하스켈로 알고리즘 문제 풀기 2
웃으면서Python
파이썬 Numpy 선형대수 이해하기
2019 경인지역 6개대학 연합 프로그래밍 경시대회 shake! 풀이
2017 cupc solution
Project#5 최단거리 찾기 D0 Hwp
Ad

More from skku_npc (14)

PDF
Maximum Flow
PDF
Computational Complexity
PPT
String Searching Algorithms
PPTX
disjoint-set data structures
PPTX
Data Structures
PPT
Prime numbers, factorization
PDF
Mathematics
PDF
Greedy is Good
PDF
Binary Search
PDF
How to find a solution
PDF
Dynamic programming
PPT
An introduction to recursion
PPT
Algorithm Games
PPTX
Introduction to Graphs
Maximum Flow
Computational Complexity
String Searching Algorithms
disjoint-set data structures
Data Structures
Prime numbers, factorization
Mathematics
Greedy is Good
Binary Search
How to find a solution
Dynamic programming
An introduction to recursion
Algorithm Games
Introduction to Graphs
Ad

Line sweep algorithms

  • 1. Line Sweep Algorithms 원저자: bmerry 발표자: 심준현
  • 2. 차Line Sweep
  • 8. Manhattan Minimum Spanning TreeLine Sweep좌표평면에서 x축 또는 y축과 평행한 선으로 탐색하며주어진 점이나 직선을 탐색Event를 기준으로 움직임
  • 9. Event각 직선/도형의 끝 지점컴퓨터의 특성상 연속적인 이동이 불가능하므로이 지점들의 좌표를 오름차순/내림차순으로 탐색
  • 10. Closest Pair여러 개의 점들 중 가장 가까운 두 점 찾기단순 비교 -O(n^2)로 가능더 효율적인 방법은?
  • 11. Closest Pair현재까지 최소 길이 h,현재까지 처리한 점의 개수 N-1X좌표 기준으로 점들을 정렬왼쪽에서부터 차례대로 처리점을 처리할 때 Set에 넣고다음 점으로 넘어갈 때나h가 감소할 때 Set에서 제거
  • 12. Closest PairN번째 점과의 거리가h보다 가까운 점을 찾으려면현재 Set에 들어있으면서 N과의 x좌표, y좌표 차이가 각각 h 이하인 점들만 비교 대상Set의 원소들은 Y좌표로 정렬-> 정렬 시 Balanced Binary Tree 사용-> 탐색 Complexity O(log n)-> 전체 Complexity O(n log n)
  • 13. Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분 1) X축에 평행한 직선의 양 끝 2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
  • 14. Line Segment Intersections직선끼리 교점 세기 문제X좌표를 기준으로 이벤트 구분 1) X축에 평행한 직선의 양 끝 2) X축에 수직인 직선처음 Range로 들어갈 때 Set에 직선 추가(Set은 Y 좌표로 정렬)빠져나올 때 Set에서 제거수직선을 만나면 Set에 포함된 선분들의 Y 좌표를 Range Search해서 결과값에 추가
  • 15. 좀더 복잡한 경우…직선의 양 끝점과 Set 내 직선들의 교점까지 저장Priority Queue를 사용한 데이터 관리
  • 16. Union of Rectangles사각형 안쪽의 넓이의 합 구하기X좌표를 기준으로 이벤트 구분 : 각사각형의 왼쪽, 오른쪽 모서리처음 왼쪽 모서리를 만났을 때 Set에 사각형 추가, 빠져나올 때 Set에서 제거넓이 = Σ(어떤 이벤트의 X좌표-이전 이벤트의 X좌표)*(cut length)
  • 17. Cut Length 구하기각 X Event에 대하여 Nested 루프 처리Y좌표를 기준으로 한 수평 Line Sweep이벤트 – Set에 포함된 사각형의위쪽 모서리와 아래쪽 모서리한 방향으로 이동하면서해당 범위에 사각형이 1개 이상 겹쳐있을 경우 Y좌표의 차이만큼 Cut Length에 추가
  • 18. Convex Hull문제: 주어진 모든 점을 포함하는 최소 크기의 볼록다각형 구하기방법: Andrew ScanUpper Hull과 Lower Hull로나누어 처리하고 마지막에 합체X좌표 기준으로 왼쪽에서부터 처리둘 이상의 X좌표가 같을 경우 Y 좌표가 큰 쪽을 선택(Upper Hull의 경우)
  • 19. Convex Hull문제: 주어진 모든 점을 포함하는 최소 크기의 볼록다각형 구하기세 점 단위로 처리Convex가 아닌 삼각형이 생성될 경우Convex가 될 때까지 두 번째 점을 제거Nested Loop가 있어 O(n^2)일것 같지만각 점은 최대 한 번씩만 지워지므로 O(n)의 Complexity를 가짐
  • 20. Sample Problem문제: 사각형 안쪽 넓이의 합 구하기 (SRM237/1/1)String 배열로 사각형들이 주어짐형식: { [Left], [Bottom], [Right], [Top] }Class: BoxUnionMethod: area Parameters: String[]Returns: intMethod signature: intarea(String[] rectangles)
  • 21. Sample Problem문제: 사각형 안쪽 넓이의 합 구하기 (SRM237/1/1)Examples{ "0 0 20000 20000", "0 0 20000 20000", "0 0 20000 20000" }Returns: 400000000{ "200 300 203 304" } Returns: 12