line segment intersection introduction

35
Line Segment Intersection TRÌNH BÀY: KIM ĐÌNH SƠN, LÊ KHẮC TUẤN KHOA HỌC MÁY TÍNH, VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG, ĐH BÁCH KHOA HÀ NỘI

Upload: vtc-intecom

Post on 21-Jul-2015

225 views

Category:

Science


2 download

TRANSCRIPT

Page 1: Line segment intersection introduction

Line Segment IntersectionT R Ì N H BÀY:

KIM ĐÌNH SƠN , LÊ KHẮC TUẤN

K H O A H Ọ C M ÁY T Í N H , V I Ệ N C Ô N G N G H Ệ T H Ô N G T I N VÀ T R U Y Ề N T H Ô N G , Đ H B Á C H K H O A H À N Ộ I

Page 2: Line segment intersection introduction

Nội dung trình bày Giới thiệu

Đặt vấn đề

Bài toán Line Segment Intersection

Giải thuật Plane Sweep

Đánh giá thuật toán

Kết luận

2LINE SEGMENT INTERSECTIONTuan LK - Son KD

Page 3: Line segment intersection introduction

Giới thiệu

Bản đồ quan trọng với các chuyến di chuyển, du lịch

Các loại bản đồ: bản đồ chứa thông tin các tuyến đường, bản đồ

chứa thông tin các thành phố, bản đồ chứa thông tin các con sông,….

3LINE SEGMENT INTERSECTIONTuan LK - Son KD

Page 4: Line segment intersection introduction

Map layers

Trong hệ thống thông

tin địa lý (GIS), dữ liệu

được lưu trữ dưới dạng

các lớp riêng biệt

4

Cities, rivers, railroads, and theiroverlay in western Canada

LINE SEGMENT INTERSECTIONTuan LK - Son KD

Map layers

Page 5: Line segment intersection introduction

Đặt vấn đềMap overlay: là tổ hợp 2 hoặc nhiều hơn 2 các Map layer với

nhau

Ta cần giải quyết các vấn đề như:

Tổng chiều dài các con đường cắt qua cánh rừng là bao nhiêu?

Tổng diện tích cánh đồng lúa trong phạm vi 1Km từ khúc sông là

bao nhiêu?

Để giải các bài toán về Map overlay, cần xét đến bài toán giao

cắt mà (ít nhất) từ 2 tập các đoạn thẳng (ranh giới các khu vực)

Tuan LK - Son KD LINE SEGMENT INTERSECTION 5

Page 6: Line segment intersection introduction

Giới thiệuĐường đi (trong road map), khúc sông (trong river map), …

được mô tả bởi một chuỗi các đoạn thẳng

Các đường cong được xấp xỉ bởi các phân đoạn nhỏ

Khi số hóa dữ liệu, các vị trí được đánh dấu bằng từng điểm

Sai số khi xây dựng các đối tượng

Xuất hiện các yêu cầu cần xử lý từ phương diện hình học đối

với các đoạn thẳng

LINE SEGMENT INTERSECTION 6Tuan LK - Son KD

Page 7: Line segment intersection introduction

Bài toán Line Segment Intersection

7LINE SEGMENT INTERSECTIONTuan LK - Son KD

Input:

•Một tập S bao gồm n đoạn thẳng

Output:

•Đưa ra tất cả các giao điểm của các cặp

đoạn thẳng trong tập S

Page 8: Line segment intersection introduction

Độ phức tạp thuật toán

LINE SEGMENT INTERSECTION 8Tuan LK - Son KD

Xét đơn thuần tìm giao điểm từng cặp cạnh 𝑂(𝑛2)

⟹Thời gian tính toán của một thuật toán tổng quát Ω(𝑛2)

Trong bài toán mô hình thực tế, số giao điểm bé hơn rất nhiều so với 𝑛2.

Thuật toán thời gian chạy không phụ thuộc vào số lượng đoạn

thẳng đầu vào mà phụ thuộc số lượng điểm giao

Output-sensitive algorithm

Intersection-sensitive

Page 9: Line segment intersection introduction

Plane Sweep Algorithm

LINE SEGMENT INTERSECTION 9Tuan LK - Son KD

Xét trong hệ tọa độ Descartes:

𝑃 𝑠𝑖 : hình chiếu của 𝑠𝑖 trên trục y (hoặc trục x)

Điều kiện cần 𝑠𝑖 giao với 𝑠𝑗, 𝑃 𝑠𝑖 chứa điểm chung 𝑃 𝑠𝑗

Cần kiểm tra các đoạn có hình chiểu đè lên nhau

Plane Sweet Algorithm: (Giải thuật đường truy quét)

Sử dụng một đường thẳng 𝑙 song song với trục x : sweep line

Giá trị khởi tạo đường thẳng 𝑙 nằm phía trên tất cả các đoạn thẳng

Di chuyển theo giảm dần theo giá trị của y

Biểu diễn các điểm cắt theo chiều 𝑂𝑥 từ trái sang phải

Hai đoạn được xét láng giềng khi điểm cắt với (𝑙) là liên tiếp𝑃 𝑠1 , 𝑃 𝑠2 , 𝑃 𝑠4 , 𝑃 𝑠6 , 𝑃 𝑠5 , 𝑃 𝑠6 ,

Page 10: Line segment intersection introduction

Plane Sweep Algorithm

Status:

Tập các đoạn giao cắt với đường sweepline

Trạng thái được cập nhật khi sweet line đi

qua cac evenpoint nhưng không liên tục

Event points: Tập hợp các điểm làm thay đổi

trạng thái của sweet line

Tuan LK - Son KD LINE SEGMENT INTERSECTION 10

Page 11: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 11

Sweep line

Cập nhật

Cập nhật

Xóa

Page 12: Line segment intersection introduction

Bổ đề 1

Cho hai đoạn thẳng 𝑠𝑖 và 𝑠𝑗 không song song với trục

𝑂𝑥, hai đoạn thẳng này cắt nhau tại một điểm 𝒑.

Không tồn tại một đoạn thẳng thứ ba nào đi qua điểm

𝒑. Khi đó tồn tại một đường sweetline nằm phía trên

điểm 𝒑 sẽ giao hai đường 𝑠𝑖 và 𝑠𝑗 là láng giềng để kiểm

tra điểm cắt.

Tuan LK - Son KD LINE SEGMENT INTERSECTION 12

Page 13: Line segment intersection introduction

Các điểm Event Point

Tuan LK - Son KD LINE SEGMENT INTERSECTION 13

Event pointĐầu mút bắt đầu đoạn

thẳng

Event pointĐiểm giao được xác định

Event pointĐầu mút kết thúc đoạn

thẳng

Page 14: Line segment intersection introduction

Plane Sweep AlgorithmCác trường hợp không xét tới (suy biến)

Tuan LK - Son KD LINE SEGMENT INTERSECTION 14

Page 15: Line segment intersection introduction

Plane Sweep Algorithm

Ví dụ: theo thứ tự từ trái sang phải,

𝑠𝑘 , 𝑠𝑙 giao nhau, khi đường truy

quét qua điểm giao, cần kiểm tra

cặp (𝑠𝑗 , 𝑠𝑙) và (𝑠𝑘 , 𝑠𝑚) có giao nhau

hay không?

Tuan LK - Son KD LINE SEGMENT INTERSECTION 15

𝑠𝑗 𝑠𝑘 𝑠𝑙 𝑠𝑚 ℓ

Page 16: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 16

𝑠1

𝑠4

𝑠3 𝑠2

𝑠5

𝑠7𝑠6

𝑠8

add 𝑠1

Page 17: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 17

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

add 𝑠2 after 𝑠1

𝑠5

Page 18: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 18

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

add 𝑠3 between 𝑠1 and 𝑠2

𝑠5

Page 19: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 19

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

add 𝑠4 before 𝑠1

𝑠5

Page 20: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 20

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

report intersection (𝑠1; 𝑠3);swap 𝑠1 and 𝑠3

𝑠5

Page 21: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 21

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

remove 𝑠2

𝑠5

Page 22: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 22

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

remove 𝑠1

𝑠5

Page 23: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 23

𝑠1

𝑠4

𝑠3 𝑠2

𝑠7𝑠6

𝑠8

add 𝑠5

𝑠5

Page 24: Line segment intersection introduction

Plane Sweep Algorithm

Tuan LK - Son KD LINE SEGMENT INTERSECTION 24

𝑠1

𝑠4

𝑠3 𝑠2

𝑠5

𝑠7𝑠6

𝑠8

report intersection(𝑠3; 𝑠4); swap 𝑠3 and 𝑠4

Page 25: Line segment intersection introduction

Tổ chức lưu trữ Event Point

Tuan LK - Son KD LINE SEGMENT INTERSECTION 25

Cấu trúc dữ liệu

event queue (𝒬): lưu trữ các sự kiện

Operation: removes, next event, returns, insertions

Nếu 2 điểm sự kiện cùng tọa độ y, khi đó trả về tọa độ x nhỏ hơn (đảm bảo việc sắp xếp theo

thứ tự từ trái qua phải)

Lưu ý: 2 điểm sự kiện có thể trùng nhau, do đó trong phép insertion phải khả năng kiểm tra

trước các sự kiện đã tồn tại trong 𝒬 hay chưa?

Page 26: Line segment intersection introduction

Tổ chức lưu trữ Event PointCấu trúc dữ liệu (tiếp)

Ký hiệu ≺ là phép so sánh trong thứ tự sắp xếp từ trái sang phải

𝒑, 𝒒 là 2 điểm sự kiện, khi đó: 𝒑 ≺ 𝒒⟺𝒑𝒚 > 𝒒𝒚 hoặc 𝒑𝒚 =𝒒𝒚, 𝒑𝒙 < 𝒒𝒙

Lưu trữ các đoạn thẳng trong một cây tìm kiếm nhị phân cân bằng, sắp xếp theo ≺

Với mỗi 𝑝 ∈ 𝒬, lưu trữ các đoạn bắt đầu từ 𝑝 (các đoạn có điểm mút nằm trên 𝑝)

Opetation: insert, delete, swap

Thời gian tính: 𝑂(log𝑚)

Tuan LK - Son KD LINE SEGMENT INTERSECTION 26

Page 27: Line segment intersection introduction

Cấu trúc Status Xác định bằng tập 𝒯, được dùng để truy cập vào lân cận của một đoạn 𝑠 nào đó, mà ta có thể kiểm tra phép giao với 𝑠.

Các đoạn cắt đường truy quét được sắp xếp ở lá của cây nhị phân tìm

kiếm cân bằng 𝒯.

𝒯 cây nhị phân cân bằng

Xét theo thứ tự thăm cây nhị phân: trái - giữa - phải : tương ứng với thứ tự

giao điểm của đường quét với các đoạn thẳng

Xác định đoạn láng giềng bên trái, láng giềng bên phải

Chi phí thời gian cho cập nhât, tìm kiếm cần 𝑂(log 𝑛)

Tuan LK - Son KD LINE SEGMENT INTERSECTION 27

Page 28: Line segment intersection introduction

Algorithm Find IntersectionsAlgorithm FINDINTERSECTIONS(S)

Input. S là tập các đoạn thẳng trong mặt phẳng.

Output. Tập các giao điểm giữa các đoạn thẳng thuộc S, with for each

intersection point the segments that contain it.

1. Khởi tạo hàng đợi 𝒬 = ∅ . Tiếp theo, insert vào các đầu mút đoạn thẳng (đầu mút trên và dưới) khi đầu mút trên đã được chèn vào, thông tin đoạn thẳng tương ứng sẽ được lưu trữ bằng 2 đầu mút này.

2. Khởi tạo cấu trúc status 𝒯 là ∅.

3. while 𝒬 ≠ ∅

4. do Xác định điểm sự kiện tiếp theo, đính vào 𝒬 and xóa.

5. HANDLEEVENTPOINT(𝑝)

Tuan LK - Son KD LINE SEGMENT INTERSECTION 28

Page 29: Line segment intersection introduction

Hanle Event Point

Tuan LK - Son KD LINE SEGMENT INTERSECTION 29

Nếu event là upper endpoint event, và 𝑠 là đoạn thẳng

bắt đầu tại 𝑝:

1. Tìm kiếm theo 𝑝 ∈ 𝒯, và insert 𝑠

2. Nếu 𝑠 giao với láng giềng trái của nó trong 𝒯, khi đó

xác định giao điểm này và insert vào 𝒬

3. Nếu 𝑠 giao với láng giềng phải trong 𝒯, khi đó xác

định giao điểm này và insert vào 𝒬

Page 30: Line segment intersection introduction

Hanle Event Point

Tuan LK - Son KD LINE SEGMENT INTERSECTION 30

Nếu event là lower endpoint event, và 𝑠 là đoạn thẳng ket

thúc tại 𝑝:

1. Tìm kiếm theo 𝑝 trong 𝒯, và xóa bỏ 𝑠

2. Gọi 𝑠𝑙 và 𝑠𝑟 theo thứ tự là láng giềng trái và phải của

𝑠 trong 𝒯. Nếu chúng giao nhau dưới đường truy

quét, khi đó thêm điểm giao này vào 𝒬

Page 31: Line segment intersection introduction

Hanle Event Point

Tuan LK - Son KD LINE SEGMENT INTERSECTION 31

Nếu event là intersection point event, và 𝑠 và 𝑠′ là 2 đoạn

thẳng giao nhau tại 𝑝:

1. Hoán đổi thứ tự 𝑠 và 𝑠′ trong 𝒯

2. Nếu 𝑠′ và láng giềng trái mới của nó trong 𝒯 giao nhau

dưới đường truy quét, khi đó chèn điểm giao này vào 𝒬

3. Nếu 𝑠 và láng giềng trái mới của nó trong 𝒯 giao nhau

dưới đường truy quét, khi đó chèn điểm giao này vào 𝒬

4. Đưa ra giao điểm

Page 32: Line segment intersection introduction

Algorithm Find New EventFINDNEWEVENT(𝑠𝑙 , 𝑠𝑟 , 𝑝)

1. if 𝑠𝑙 và 𝑠𝑟 giao nhau dưới đường truy quét (𝑙), hoặc nằm trên (𝑙) và nằm bên phải điểm sự kiện hiện tại tại 𝑝, và điểm giao này chưa xuất hiện trong 𝒬 như là một điểm sự kiện

2. then chèn điểm giao này vào 𝒬

Tuan LK - Son KD LINE SEGMENT INTERSECTION 32

Page 33: Line segment intersection introduction

Bổ đề về giải thuật tìm các giao cắtBổ đề 1: Thuật toán FINDINTERSECTIONS tính được chính xác tất cả các giao điểm và các đoạn

thẳng giao

Bổ đề 2: Thời gian chạy của thuật toán FINDINTERSECTIONS cho tập S với n đoạn thẳng trong

mặt phẳng là O(n log n + I log n), trong đó I là số các giao điểm của các đoạn thẳng thuộc S.

Định lý: Gọi 𝑆 là tập bao gồm 𝑛 đoạn thẳng trong mặt phẳng. Tất cả các giao điểm của các đoạn

thẳng thuộc 𝑆 cũng thuộc 𝑆, có thể đưa ra với thời gian chạy là 𝑂(𝑛 𝑙𝑜𝑔 𝑛 + 𝐼 𝑙𝑜𝑔 𝑛), và không

gian 𝑂 𝑛 , trong đó 𝐼 là số các giao điểm của các đoạn thẳng thuộc 𝑆.

Tuan LK - Son KD LINE SEGMENT INTERSECTION 33

Page 34: Line segment intersection introduction

Câu hỏi

Tuan LK - Son KD LINE SEGMENT INTERSECTION 34

Page 35: Line segment intersection introduction

Tuan LK - Son KD LINE SEGMENT INTERSECTION 35

Xin cảm ơn!