800 likes | 1.23k Views
Computational Geometry. 목 차 계산 기하학이란 ? 배경 유용한 알고리즘 전략 다각형 분할 공간데이터베이스를 위한 알고리즘 요 약. 발표자 : 지정희 , 이선준. 2001 년 10 월 19 일. 계산 기하학이란 ?. 계산 기하학 기하 객체에 대한 계산을 다루는 알고리즘의 한 분야 응용 GIS 를 위한 공간 데이터베이스 GUIs, robotics, CAD/CAM 이 장에서 다루는 내용 공간 데이터베이스에서 요구되는 공간 연산을 위한 계산 기하학. 배 경. 알고리즘
E N D
Computational Geometry • 목 차 • 계산 기하학이란? • 배경 • 유용한 알고리즘 전략 • 다각형 분할 • 공간데이터베이스를 위한 알고리즘 • 요 약 발표자: 지정희, 이선준 2001년10월19일
계산 기하학이란? • 계산 기하학 • 기하 객체에 대한 계산을 다루는 알고리즘의 한 분야 • 응용 • GIS를 위한 공간 데이터베이스 • GUIs, robotics, CAD/CAM • 이 장에서 다루는 내용 • 공간 데이터베이스에서 요구되는 공간 연산을 위한 계산 기하학 Representation of Spatial Objects
배 경 • 알고리즘 • 컴퓨터 알고리즘의 설계와 분석 • 알고리즘 설계 • Pseudo language를 사용한 추상레벨에서의 기술 • 정확성에 대한 검증 • 알고리즘 분석 • 알고리즘의 성능 평가(복잡도) • 이 절에서 설명하는 내용들 • 알고리즘에 대한 기본 개념들 • 알고리즘 분석 • 최적 • 자료구조 Representation of Spatial Objects
알고리즘의 기본 개념들 • 알고리즘의 구성 요소 • 계산 모델, 알고리즘 기술 언어, 성능평가 • 계산 모델 • 어떤 형태의 정보를 기계가 다룰 수 있고, 연산이 가능한지를 기술하는 수단 제공 • 일반적으로 RAM 모델, 사칙연산과 비교연산을 갖는 실수 사용 • 알고리즘 기술 언어 • 단순 언어 또는 pseudo-language • 문법은 PASCAL이나 C와 같은 프로그래밍 언어와 유사 • 성능 평가 • 프로그램의 실행 시 수행되는 각 연산의 발생횟수의 총합 • 단순성과 표현의 용이성을 위해 불필요한 세부사항은 제거 • f(n, c1, c2, …, cm), n: 입력의 크기,ci: 각 key operation의 비용 • O(Big “oh”): Upper bound, Ω(Omega): Lower bound, Θ(Theta): Same order Representation of Spatial Objects
알고리즘의 기본 개념들 Representation of Spatial Objects
알고리즘 분석 • 알고리즘 복잡도 • 입력의 크기가 n일 때 알고리즘에 의해 수행된 연산의 개수의 상한을 제공하는 함수 g(n) • 상한(upper bound) • Worst-case complexity • 주어진 크기의 어떤 입력에 대한 수행시간이 최대에 도달하는 입력에 대한 몇몇 값들을 제외하면 상한보다 낮다. • 대부분의 알고리즘 분석에서 사용 • Average-case complexity • f(n)이 주어진 크기에 대한 모든 problem instance에 걸친 연산들의 평균 개수이다. • 알고리즘의 실제적 행위를 더 잘 표현한다. • 추정하기가 어렵다. • 복잡도 • Linear(n), logarithmic(log n), polynomial(na), exponential(an) Representation of Spatial Objects
최 적 • 주어진 문제를 해결하는 알고리즘의 복잡도가 하한에 도달하면 최적이다. • 하한(lower bound) 추정 • 출력 크기 이용 • 예: n 세그먼트 교차 계산 문제 • 출력 크기: O(n2) • 어떤 알고리즘도 이 문제를 최악의 경우에는 O(n2)에 해결한다. • 이것은 이 문제가 Ω(n2)이라고 말해서 줄일 수 있다. • 이 문제를 해결하는 O(n2) 알고리즘을 찾으면 그것은 최적이고 복잡도는 Θ(n2)이다. Representation of Spatial Objects
최 적 Representation of Spatial Objects
최 적 • 문제 변환(transformation of problems ,problem reduction) • 문제 A에 대한 하한을 알고 있다고 가정하고 문제 B에 대한 하한을 추정 • A를 해결하는 것 보다 작은 비용을 갖는 변환 단계에 의해 A를 B로 변환할 수 있다면 B는 A와 동일한 하한을 갖는다. • 예: ConvexHull 문제 • Point들의 집합 S에 대한 ConvexHull은 S를 둘러싸는 가장 작은 convex 다각형으로 점들이 순서대로 정렬되어 있다. • 하한은 정렬문제(Θ(nlog n))를 convex-hull 문제로 줄여서 설정 • 집합 {x1, x2, … , xn}에 대해 O(n) 시간에 (xi, xi2)을 계산 • 이 point의 집합에 대한 convex hull을 계산 • O(n) 시간에 맨 왼쪽 정점을 찾는다. • ConvexHull 문제의 복잡도가 nlog n 보다 작다고 가정 위배 Ω(nlog n) Representation of Spatial Objects
최 적 Representation of Spatial Objects
자료 구조 • 높이-균형 트리 • AVL, 2-3-4 트리 • 검색, 갱신 시간: O(log n) • Interval tree • 실수 집합 R에 있는 interval들의 집합을 저장 • 삽입, 삭제 시간: O(log n) • 주어진 점을 포함하는 interval들을 검색 가능 • 트리에서의 interval의 위치: 어떤 interval I=[x1,x2] • x2 < N.v. N의 왼쪽 서브트리에 저장 • x1 > N.v. N의 오른쪽 서브트리에 저장 • x1 ≤ N.v ≤ x2. N에 저장 • w를 포함하는 interval 검색 • 루트에서 시작하여 다음 단계를 순환적으로 적용한다. • w < N.v이면, N.L1을 스캔하고 x1>w를 만족하는 첫번째 interval [x1, x2]를 만날 때까지 모든 interval을 보고. 검색은 N의 왼쪽 서브트리로 진행. • w > N.v이면, N.L2를 스캔하고 x2<w인 첫번째 interval [x1, x2]를 만날때까지 모든 interval을 보고. 검색은 N의 오른쪽 서브트리로 진행. • 예: 6을 포함하는 interval을 출력하시오. • 복잡도 : O(log n + k), output sensitive Representation of Spatial Objects
자료 구조 Representation of Spatial Objects
유용한 알고리즘 전략 • 계산 기하학에서의 일반적인 세가지 전략 • Incremental • Divide and conquer • Sweep-line Representation of Spatial Objects
Incremental 알고리즘: The Convex-Hull 예제 • Incremental 알고리즘 • 문제를 해결할 수 있는 충분히 작은 입력의 부분집합을 취한다. • 남아 있는 입력 중에서 하나씩 추가(단, 각 단계에서 해를 유지해야 한다.) • 초보 알고리즘 • S={p1,p2, … , pn}는 convex hull로 간주되는 point들의 집합. • 3개의 points {p1, p2, p3}로 구성되는 convex hull에서 시작 • Convex hull Hi-1에 point pi를 추가하는 문제 • pi ∈ Hi-1. pi가 Hi-1의 내부에 있는 경우. Hi-1의 모든 point를 시계방향으로 스캔할 때 pi가 항상 모든 line들의 right에 존재하는가를 체크. 이러한 경우 Hi = Hi-1. • pi Hi-1. Hi = Hi-1∪pi. pi에서 Hi-1로 두개의 접촉 line을 찾는 문제. 접촉 point pt는 pi가 방향성 edge pt-1pt의 right에 존재하고 ptpt+1의 left에 존재하는 point이다. 즉, (pt1, .. Pt2) (pt1pipt2) 로 교환하여 Hi를 얻는다. • 복잡도: 3+…+(n-1) = O(n2) Representation of Spatial Objects
Incremental 알고리즘: The Convex-Hull 예제 Representation of Spatial Objects
Incremental 알고리즘: The Convex-Hull 예제 • 향상된 Convex-hull 알고리즘 • 입력을 사전 정렬하여 최적의 복잡도 Θ(nlog n)에 도달하도록 한다. • S내의 point들은 정렬되어 있다고 가정. • 삽입되어야 하는 point가 hull에 포함될 수 없기 때문에 초보 알고리즘에서 수행했던 스캔 연산이 불필요. • 접촉 point는 x축에 대한 두개의 monotonic chains에 대해 각각 하나씩 존재 • Convex hull Hi의 boundary는 시계방향의 순서로 저장 • n이 H를 기술하는 point들의 수라고 하면 point 인덱스는 modulo n으로 계산된다. • 복잡도 • n points 삽입: O(n) • 주된 비용이 초기의 정렬 비용이므로 전체 비용은 O(nlog n) • Incremental algorithm: Θ(nlog n) Representation of Spatial Objects
Incremental 알고리즘: The Convex-Hull 예제 INCREMENTALCONVEXHULL(S:set of points): the hull H begin Sort the n points in S by their x coordinate. H = triangle(p1,p2,p3) for(i = 4 to n) do begin j = index of the rightmost point of H //Find the upper tangency point u = j while(pihu is not tangent to H) do begin if(u != j) remove hu from H u = u – 1 end while //Find the lower tangency point l = j while(pihl is not tangent to H) do begin if(I != u), remove hl from H I = l + 1 end while Insert pi in H between hu and hl end for end Representation of Spatial Objects
Divide-and-Conquer: The Half-Plane 교차 예제 • Divide-and-conquer 전략 • 입력은 subproblem이 쉽게 해결될 수 있을 정도의 충분히 작은 크기가 될 때까지 순환적으로 분할된다. • 순환적으로 해들을 결합한다. • Half-plane intersection • 가정 • 결과물은 작은 convex polygon. • Search space R은 rectangle. • 결과 polygon은 항상 R에 포함된다. • 3단계 전략 • 구조형성 • 입력으로 받는 n개의 half-plane들의 집합이 n개의 singleton half-plane을 얻을 때까지 2등분된다. 이진트리 형성 • 단일문제 해결 • 각 리프에 있는 half-plane이 R과 교차 각 리프에서 convex polygon을 생성 • 결과들의 결합 • Convex polygon들의 교차를 순환적으로 계산 • 복잡도: O(nlog n) , convex polygon intersection: O(p+p’) Representation of Spatial Objects
Divide-and-Conquer: The Half-Plane 교차 예제 HALFPLANEINTER(S:set of half-planes): a convex polygon begin if(Card(S) > 2) then return HALFPLANEINTER(S/2) ∩ HALFPLANEINTER(S-S/2) else return S ∩ R end if end Representation of Spatial Objects
Sweep-Line Method:The Rectangle Intersection 예제 • Sweep-line 기법 • 2차원 문제를 2개의 1차원 문제로 해결 • 자료구조 • Sweep-line active list: L • Event list: • The rectangle intersection • 주목할 사항 • 수직 라인 l과 l에 의해 잘려진 모든 rectangle들의 집합 Sl, Sl내에서 교차되는 쌍에 대해서 그 rectangle들이 y축에 대해 교차되는지를 검사 • l은 event list의 모든 point를 경유 • 각 event point에서의 연산 • Rectangle r의 왼쪽 edge가 sweep-line에 도달하면 r은 L에 삽입 • L내에 있는 edge들은 서로 교차 : 2차원 문제 1차원 문제 • Rectangle r의 오른쪽 edge가 sweep-line에 도달하면 r은 L에서 삭제 • 복잡도 • 자료구조 L: O(log n) • 초기 정렬: O(nlog n) • Internal tree 내의 리스트 스캔: O(k), k는 rectangle intersection의 개수 • O(nlog n + k) Representation of Spatial Objects
Sweep-Line Method:The Rectangle Intersection 예제 RECTANGLEINTERSECTION(S:set of a rectangle) Begin Sort the 2n xmin and xmax values of S and place them in ε £ = 0 while(ε != 0) do begin p <- MIN(ε) //extract the next event from ε if(p is left edge of a rectangle r) then begin INSERT(r, £) Search and report the rectangles in £ interesting r end if if(p is right edge of a rectangle r) then DELETE(r, £) end while end Representation of Spatial Objects
Polygon 분할 • 중요성 • 2차원 응용에서 polygon은 가장 복잡한 객체 • Polygon을 더 단순한 객체로 분할하는 것은 알고리즘 설계와 구현을 단순화 • Polygon • Monotone polygon • Simple이고 δP가 두개의 monotonic chain으로 구성 • Simple monotone convex • 분할 방법 • 사다리꼴 분할(trapezoidalization) • 삼각분할(triangulation) Representation of Spatial Objects
사다리꼴 분할 • 사다리꼴 분할 알고리즘 • Sweep-line 기법에 기반 • 절차 • Polygon P의 정점들을 x 좌표에 따라 정렬 • 수직 라인 l이 정렬된 vertex들을 스캔 • 각 정점 v에 대해 v를 포함하고 P의 내부에 존재하는 가장 큰 수직 segment를 계산 • Polygon은 visibility segment에 의해 사다리꼴로 분할된다. • RECTANGLEINTERSECTION 알고리즘의 변형 • Event list : x 좌표에 따라 정렬된 정점들의 리스트 • Active list L: 현재 L에 의해 교차되는 P의 edge들의 리스트를 포함, y 좌표에 따라 정렬 • 각 event point • 정점 v에 대해 v에 인접하는 edge들이 L에 삽입 또는 삭제된다. • v의 above or below인 edge들을 L에서 검색 • P로부터 사다리꼴 추출 • 첫번째 수직 edge: v에서 e로의 visibility segment • 두번째 edge: i에서 왼쪽 정점까지의 edge • 두번째 수직 edge: 이전 event에서의 visibility segment • 복잡도 • Edge search in L: O(log n) • 전체 scan : O(nlog n) • O(nlog n) Representation of Spatial Objects
사다리꼴 분할 Representation of Spatial Objects
삼각 분할 • Diagonal • Polygon P의 두 정점 사이의 Segment vivj로 P의 boundary와 교차하지 않는 것 • vi와 vj는 서로에 대해 visible하다고 말한다. • N개의 정점으로 이루어진 polygon P • N-3개의 diagonals • N-2개의 삼각형 • 삼각 분할 알고리즘 • Simple polygon을 삼각 분할하는 알고리즘 느림 • Simple monotone으로 분할 후 삼각분할 • Monotone polygon의 삼각분할 알고리즘 • P의 정렬된 순서에 따라 스캔 • 이미 스캔 되었으나 삼각형을 형성하지 않은 점들의 리스트 L 유지 • L 의 원소 중 삼각형을 형성하면 L에서 제거 • 복잡도 • P의 정점 정렬 : O(n) • 삼각형 생성 : O(n) • Θ(n) Representation of Spatial Objects
삼각 분할 MONOTONETRIANGULATION(P:monotone polygon):set(triangles) begin Sort the n vertices of P by x coordinate and store them into ν £ = a list with the first two points of ν while(ν != 0) do begin p <- MIN(ν) //Extract the next vertex from ν if(p is opposite to points in £) then begin while((Card(£) > 1) do output triangle {First(£), Second(£),p} REMOVE(Firtst(£)) end while Add p to £ end else begin while(angle(Last(£), Previous(Last(£)), p) is convex and Card(£) > 1) do Output triangle {Last(£), Previous(Last(£)),p} REMOVE Last(£) end while //The angle is reflex, or Card(£) = 1 Add p to £ end end while end Representation of Spatial Objects
삼각 분할 • Simple polygon에 대한 삼각분할 • P를 monotone polygon으로 분할 • 위 단계에서 생성된 monotone polygon에 대해 삼각 분할 • Simple polygon을 monotone polygon으로 분할 • Notch(return) : 두개의 인접 edge가 수직 라인의 동일한 편에 존재 • Return point에서polygon을 monotone polygon으로 분할 • 가상 사다리꼴 만들기 • 가상 사다리꼴 만들고(r1의 왼편과 r2의 오른편) • 각 사다리꼴에서 diagonal을 생성해서 monotone component를 획득 • 복잡도 • Monotone partitioning: O(nlog n) • Triangulation of the monotone polygon: O(n) • O(nlog n) Representation of Spatial Objects
삼각 분할 Representation of Spatial Objects
삼각 분할 • Convex 분할 • polygon을 삼각형이나 사다리꼴로 분할했을 경우 중간 분할 요소가 너무 많아질 수 있으므로 polygon을 convex로 분할. • Convex 요소의 수: • r/2 + 1 ≤ ≤ r+1, r: simple polygon에서 notch 수 • 요소의 수를 최소로 만드는 알고리즘이 존재하나 복잡도가 크다. • Suboptimal 알고리즘 • 삼각분할 단계에서 분할된 삼각형 사이의 인접 관계를 전달 • 자료구조: dual graph • 초기 삼각형 집합과 dual graph를 가지고 인접한 삼각형들을 convex를 유지하는 동안 합쳐 나간다. O(n) Representation of Spatial Objects
삼각 분할 Representation of Spatial Objects
공간 데이터베이스를 위한 알고리즘 • 기하학 알고리즘의 설계 및 분석 • 전통적인 기하학적 요소 • 포인트 • 좌표의 쌍 • 라인 • 폴리라인 ( 쌍으로 연결된 세그먼트들의 리스트 ) • 폴리곤 • 단순 다각형, 닫혀진 폴리라인으로 표현. • 제외대상 • 홀이 있는 폴리곤, 리전(region) Representation of Spatial Objects
다각형 영역의 크기와 관련 연산 • 삼각형의 넓이 계산 • T(P1, P2, P3)의 영역 계산 • 시계역방향 : 양의 값 • 시계방향 : 음의 값 ( × (-1)) • 다각형의 영역 계산 • area(P) = areaT(P1, P2, P3) + areaT(P1, P3, P4) • 각 정점들이 시계역방향으로 정렬되었을때 • 단, xn+1=x1이고 yn+1=y1 Representation of Spatial Objects
C B B + - A C A 다각형 영역의 크기와 관련 연산 • 함수의 사용 • areaT(ABC)의 값에 따라 • AB : 선분 • 양수 : 포인트 C는 왼쪽에 위치 • 음수 : 포인트 C는 오른쪽에 위치 • 0(영) : 포인트 C는 동일선상에 위치 • 선분 AB와 CD의 교차 • AB의 관점에서 C와 D를 동등하게 점유 • A가 CD의 한 쪽에 있고, B가 다른 쪽에 있다 Representation of Spatial Objects
다각형 내의 포인트 • 포인트가 다각형 내에 있는지 검사 • p : 포인트, l: 단방향 직선, P : 다각형 • l과 교차하는 P의 선분들의 수에 따라 • 짝수 : 포인트 p는 P의 외부에 위치 • 홀수 : 포인트 p는 P의 내부에 위치 • 복잡도 : O(n) • 각 경계를 한번씩만 조사하기 때문에 Representation of Spatial Objects
다각형 내의 포인트 • 특별한 경우 • 순수한 교차개수 : 9개 • 경계들을 반닫힌(half-closed)선분으로 간주 : 5개 Representation of Spatial Objects
다각형 내의 포인트 • 문제해결 • 규칙 • l과 동일선상의 경계는 세지 않는다 • l 위에 경계 e의 끝점이 하나라도 있다면, 하나의 교차하는 경계로 계산한다 • 규칙적용 • a, b, c가 모두 제외된다 • p3가 교차하는 개수 : 6개 • p3는 다각형 P의 외부에 위치 • 정점에서의 문제 • Boundary위에 있는 포인트의 경우 • Preliminary scan 필요 Representation of Spatial Objects
다각형 내의 포인트(알고리즘) Representation of Spatial Objects
폴리라인의 교차 • 검출 연산 • Boolean 연산 • 객체들 사이의 교차를 검출 • 계산 연산 • 두 객체가 교차되면서 생기는 새로운 기하학적 객체들을 계산하는 연산 Representation of Spatial Objects
라인 교차의 검출 • 두 선분 사이의 교차를 검출 • S : 라인의 집합 • Nested-loop 알고리즘 : O(n2) • 교차가 발견되는 즉시 멈춘다 • Plane-sweep 알고리즘 : O(nlogn) • 폴리라인 교차를 테스트 • 액티브 리스트 • 선분과 수직선의 교차를 저장 • y좌표를 기준으로 정렬된다 • l2 • S2 > l2 S3 > l2 s1 Representation of Spatial Objects
라인 교차의 검출 • 액티브 리스트의 연속성 • s1과 s2사이의 교차가 있다고 가정 • 수직선이 s1과 s2의 교차에 가까워지면 • s1과 s2는 액티브 리스트에서 연속하게 된다 • Plane-sweep 알고리즘 (2가지 경우 발생) • Active list 와 Event list를 유지. ( Event list는 라인의 끝점의 x좌표 저장 ) • 선이 선분 s의 최좌측 포인트와 만났을 때 • s를 L에 삽입 • L의 상위와 하위에 있는 이웃 선분과 교차되는지 테스트 • 선이 선분 s의 최우측 포인트와 만났을 때 • s를 L에서 제거 • 현재 리스트에서 인접한 두 선분이 교차하는지 테스트 Representation of Spatial Objects
라인 교차의 검출 Representation of Spatial Objects
라인 교차의 계산 • 라인 교차 계산 알고리즘 • 가장 나쁜 경우 • 중첩 반복 알고리즘 : O(n2) • 경우에 따라 가장 최적 • O(n2)만큼의 교차가 일어날 수도 있기 때문 • 단점 • 교차가 없어도 n2만큼의 테스트를 해야 한다 • 교차의 수가 적을 경우 • 산출크기 중심의 알고리즘이 필요 • 확장된 스윕-라인 알고리즘 • 레드-블루 알고리즘 Representation of Spatial Objects
라인 교차의 계산-첫번째 • 확장 스윕-라인 알고리즘 • 교차점을 이벤트로 간주 • L에서의 변화를 트리거한다 • 교차점이 생길때 마다 E에 추가 • 라인을 스윕할 때 사용 • 선이 s1과 s2의 교차점에서 만났을 경우 • L에서 s1과 s2의 위치를 바꾼다 • L에서 현재 s1 또는 s2과 이웃해 있는 선분들은 그 선분의 인접 선분과 교차되는지 테스트 Representation of Spatial Objects
라인 교차의 계산(첫번째) Representation of Spatial Objects
라인 교차의 계산-첫번째 • 알고리즘 분석 • 초기 단계(정렬과정) : O(nlogn) • 반복문 : 2n+k • k : 교차하는 수 • 반복문 내의 공정 : O(logn) • 전체 알고리즘의 비용 • O((n+k)logn) Representation of Spatial Objects
라인 교차의 계산-두번째 • 레드-블루 교차 알고리즘 • 레드집합, 블루집합 • 교차되지 않는 선분들을 두 개의 집합으로 구성 • 두 개의 액티브 리스트 • Lb, Lr • 선분의 오른쪽(왼쪽)의 끝점을 만났을 때 • 액티브 리스트가 변화한다 • 이벤트 리스트 • 2n의 일반적인 배열 • 복잡도 • O(nlogn+k) Representation of Spatial Objects
라인 교차의 계산-두번째 • 레드선분 r에 대해서 교차조사 • 스윕라인 l이 r의 오른쪽 끝점에 도달 • 선분 r과 다른 집합(블루집합) 사이의 교차를 계산 • r과 교차하는 블루선분을 Lb에서 검색 • Case 1 (그림 5.17a) • r과 교차하는 모든 선분 b1, b2, b3가 Lb에서 연속적 • 복잡도 : O(nlogn+k) • Case 2 (그림 5.17b) • r과 교차하는 선분들이 연속적이지 않을때 • b3와의 교차점을 숨긴다 • Case 2의 복잡도 : 2차의 복잡도 • 알고리즘 구현시 • Case 2가 나타나지 않도록 고려 Representation of Spatial Objects
라인 교차의 계산-두번째 Representation of Spatial Objects
라인 교차의 계산-두번째 • Cone • (p, u, v) • u의 왼쪽 끝점이 s의 아래에, v보다 위에 위치 • u, v : 선분 • 교차점 p의 오른쪽에 위치 • 선분이 액티브 리스트에서 삽입될 때 검출 • cone을 제거 • 선분 u, v 모두를 p를 왼쪽 끝점으로 하는 선분으로 자른다 • u, v의 왼쪽 선분은 제거 • p에서의 교차를 알린다 Representation of Spatial Objects
라인 교차의 계산-두번째 • 라인 교차 계산 방법 • 선분이 삽입될 때 • 왼쪽 끝점 • 각각의 cone을 제거, cone과 연관된 교차를 알린다 • 선분이 삭제될 때 • 오른쪽 끝점 • 액티브 리스트를 검색, 교차를 알린다 • 복잡도 : O(nlogn+k) • cone이 없기 때문에 • 복잡도의 계산 • 액티브 리스트를 검색 : O(logn) • 구조를 위나 아래로 움직인다 • 각 움직일때 교차를 알린다 • 전체 비용 : (nlogn+k) Representation of Spatial Objects