SlideShare une entreprise Scribd logo
1  sur  35
Line Segment Intersection 
TRÌNH BÀY: 
KIM Đ Ì NH S Ơ N , LÊ K H ẮC T U Ấ N 
KHOA H Ọ C MÁY T ÍNH , V I Ệ N CÔNG N G H Ệ T HÔNG T IN VÀ T R U Y Ề N T HÔNG , Đ H B Á C H KHOA HÀ N Ộ I
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 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 2
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,…. 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 3
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 their 
overlay in western Canada 
Map layers 
Tuan LK - Son KD LINE SEGMENT INTERSECTION
Đặ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
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 Tuan LK - Son KD SEGMENT INTERSECTION 6
Bài toán Line Segment Intersection 
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 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 7
Độ phức tạp thuật toán 
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 
LINE Tuan LK - Son KD SEGMENT INTERSECTION 8
Plane Sweep Algorithm 
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 , 
LINE Tuan LK - Son KD SEGMENT INTERSECTION 9
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
Plane Sweep Algorithm 
Sweep line 
Xóa 
Cập nhật 
Cập nhật 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 11
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
Các điểm Event Point 
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 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 13
Plane Sweep Algorithm 
Các trường hợp không xét tới (suy biến) 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 14
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
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠5 
푠7 
푠6 
푠8 
add 푠1 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 16
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
add 푠2 after 푠1 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 17
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
add 푠3 between 
푠1 and 푠2 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 18
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
add 푠4 before 푠1 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 19
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
report intersection (푠1; 푠3); 
swap 푠1 and 푠3 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 20
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
remove 푠2 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 21
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
remove 푠1 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 22
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠7 
푠6 
푠8 
add 푠5 
푠5 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 23
Plane Sweep Algorithm 
푠1 
푠4 
푠3 푠2 
푠5 
푠7 
푠6 
푠8 
report intersection 
(푠3; 푠4); 
swap 푠3 and 푠4 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 24
Tổ chức lưu trữ Event Point 
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? 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 25
Tổ chức lưu trữ Event Point 
Cấ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
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
Algorithm Find Intersections 
Algorithm 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
Hanle Event Point 
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 풬 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 29
Hanle Event Point 
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 풬 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 30
Hanle Event Point 
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 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 31
Algorithm Find New Event 
FINDNEWEVENT(푠푙 , 푠푟 , 푝) 
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
Bổ đề về giải thuật tìm các giao cắt 
Bổ đề 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
Câu hỏi 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 34
Xin cảm ơn! 
Tuan LK - Son KD LINE SEGMENT INTERSECTION 35

Contenu connexe

Similaire à Line segment intersection introduction

Cơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTTCơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTTbdkhoi296
 
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdf
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdfChương 3.7. Bài toán luồng cực đại trong mạng v2.pdf
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdfduybui207
 
GIAI TICH HE THONG DIEN NANG CAO - CHƯƠNG 1 MA TRẬN TỔNG DẪN
GIAI TICH HE THONG DIEN NANG CAO -  CHƯƠNG 1 MA TRẬN TỔNG DẪNGIAI TICH HE THONG DIEN NANG CAO -  CHƯƠNG 1 MA TRẬN TỔNG DẪN
GIAI TICH HE THONG DIEN NANG CAO - CHƯƠNG 1 MA TRẬN TỔNG DẪNĐinh Công Thiện Taydo University
 
Econometrics Lecture3 assumptions
Econometrics Lecture3 assumptionsEconometrics Lecture3 assumptions
Econometrics Lecture3 assumptionsPhuong Tran
 
12.ma trận và dịnh thức
12.ma trận và dịnh thức12.ma trận và dịnh thức
12.ma trận và dịnh thứcTrinh Yen
 
CHƯƠNG 1 ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI TÍCH MẠNG
CHƯƠNG 1  ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI  TÍCH MẠNGCHƯƠNG 1  ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI  TÍCH MẠNG
CHƯƠNG 1 ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI TÍCH MẠNGĐinh Công Thiện Taydo University
 
Giaitichmang
GiaitichmangGiaitichmang
GiaitichmangGara Mít
 
Dạng bài tập sóng cơ
Dạng bài tập sóng cơDạng bài tập sóng cơ
Dạng bài tập sóng cơtuituhoc
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếngTonH1
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toánHồ Lợi
 
Tcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanTcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanLong Tran Huy
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6kikihoho
 
TinHoc_tuyentapde_nk
TinHoc_tuyentapde_nkTinHoc_tuyentapde_nk
TinHoc_tuyentapde_nkQuyen Hong
 
3 baitoanthuonggapdothihamso-www.mathvn.com
3 baitoanthuonggapdothihamso-www.mathvn.com3 baitoanthuonggapdothihamso-www.mathvn.com
3 baitoanthuonggapdothihamso-www.mathvn.comHuynh ICT
 

Similaire à Line segment intersection introduction (20)

Cơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTTCơ sở dữ liệu - Luyện thi cao học CNTT
Cơ sở dữ liệu - Luyện thi cao học CNTT
 
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdf
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdfChương 3.7. Bài toán luồng cực đại trong mạng v2.pdf
Chương 3.7. Bài toán luồng cực đại trong mạng v2.pdf
 
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤTCHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
CHƯƠNG 6 TRÀO LƯU CÔNG SUẤT
 
GIAI TICH HE THONG DIEN NANG CAO - CHƯƠNG 1 MA TRẬN TỔNG DẪN
GIAI TICH HE THONG DIEN NANG CAO -  CHƯƠNG 1 MA TRẬN TỔNG DẪNGIAI TICH HE THONG DIEN NANG CAO -  CHƯƠNG 1 MA TRẬN TỔNG DẪN
GIAI TICH HE THONG DIEN NANG CAO - CHƯƠNG 1 MA TRẬN TỔNG DẪN
 
Econometrics Lecture3 assumptions
Econometrics Lecture3 assumptionsEconometrics Lecture3 assumptions
Econometrics Lecture3 assumptions
 
12.ma trận và dịnh thức
12.ma trận và dịnh thức12.ma trận và dịnh thức
12.ma trận và dịnh thức
 
CHƯƠNG 1 ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI TÍCH MẠNG
CHƯƠNG 1  ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI  TÍCH MẠNGCHƯƠNG 1  ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI  TÍCH MẠNG
CHƯƠNG 1 ĐẠI SỐ MA TRẬN ỨNG DỤNG TRONG GIẢI TÍCH MẠNG
 
Giaitichmang
GiaitichmangGiaitichmang
Giaitichmang
 
Dạng bài tập sóng cơ
Dạng bài tập sóng cơDạng bài tập sóng cơ
Dạng bài tập sóng cơ
 
Chap3 new
Chap3 newChap3 new
Chap3 new
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tế
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toán
 
So do tu duy
So do tu duySo do tu duy
So do tu duy
 
Tcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLanTcca2.TranThiTuyetLan
Tcca2.TranThiTuyetLan
 
Bai giang sap
Bai giang sapBai giang sap
Bai giang sap
 
csdl - buoi5-6
csdl - buoi5-6csdl - buoi5-6
csdl - buoi5-6
 
TinHoc_tuyentapde_nk
TinHoc_tuyentapde_nkTinHoc_tuyentapde_nk
TinHoc_tuyentapde_nk
 
Ch1.DSTT_Slides.pdf
Ch1.DSTT_Slides.pdfCh1.DSTT_Slides.pdf
Ch1.DSTT_Slides.pdf
 
3 baitoanthuonggapdothihamso-www.mathvn.com
3 baitoanthuonggapdothihamso-www.mathvn.com3 baitoanthuonggapdothihamso-www.mathvn.com
3 baitoanthuonggapdothihamso-www.mathvn.com
 
Luận văn: Một số tính chất của môđun đồng điều địa phương, HAY
Luận văn: Một số tính chất của môđun đồng điều địa phương, HAYLuận văn: Một số tính chất của môđun đồng điều địa phương, HAY
Luận văn: Một số tính chất của môđun đồng điều địa phương, HAY
 

Line segment intersection introduction

  • 1. Line Segment Intersection TRÌNH BÀY: KIM Đ Ì NH S Ơ N , LÊ K H ẮC T U Ấ N KHOA H Ọ C MÁY T ÍNH , V I Ệ N CÔNG N G H Ệ T HÔNG T IN VÀ T R U Y Ề N T HÔNG , Đ H B Á C H KHOA HÀ N Ộ I
  • 2. 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 Tuan LK - Son KD LINE SEGMENT INTERSECTION 2
  • 3. 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,…. Tuan LK - Son KD LINE SEGMENT INTERSECTION 3
  • 4. 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 their overlay in western Canada Map layers Tuan LK - Son KD LINE SEGMENT INTERSECTION
  • 5. Đặ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
  • 6. 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 Tuan LK - Son KD SEGMENT INTERSECTION 6
  • 7. Bài toán Line Segment Intersection 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 Tuan LK - Son KD LINE SEGMENT INTERSECTION 7
  • 8. Độ phức tạp thuật toán 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 LINE Tuan LK - Son KD SEGMENT INTERSECTION 8
  • 9. Plane Sweep Algorithm 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 , LINE Tuan LK - Son KD SEGMENT INTERSECTION 9
  • 10. 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
  • 11. Plane Sweep Algorithm Sweep line Xóa Cập nhật Cập nhật Tuan LK - Son KD LINE SEGMENT INTERSECTION 11
  • 12. 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
  • 13. Các điểm Event Point 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 Tuan LK - Son KD LINE SEGMENT INTERSECTION 13
  • 14. Plane Sweep Algorithm Các trường hợp không xét tới (suy biến) Tuan LK - Son KD LINE SEGMENT INTERSECTION 14
  • 15. 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
  • 16. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠5 푠7 푠6 푠8 add 푠1 Tuan LK - Son KD LINE SEGMENT INTERSECTION 16
  • 17. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 add 푠2 after 푠1 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 17
  • 18. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 add 푠3 between 푠1 and 푠2 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 18
  • 19. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 add 푠4 before 푠1 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 19
  • 20. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 report intersection (푠1; 푠3); swap 푠1 and 푠3 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 20
  • 21. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 remove 푠2 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 21
  • 22. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 remove 푠1 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 22
  • 23. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠7 푠6 푠8 add 푠5 푠5 Tuan LK - Son KD LINE SEGMENT INTERSECTION 23
  • 24. Plane Sweep Algorithm 푠1 푠4 푠3 푠2 푠5 푠7 푠6 푠8 report intersection (푠3; 푠4); swap 푠3 and 푠4 Tuan LK - Son KD LINE SEGMENT INTERSECTION 24
  • 25. Tổ chức lưu trữ Event Point 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? Tuan LK - Son KD LINE SEGMENT INTERSECTION 25
  • 26. Tổ chức lưu trữ Event Point Cấ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
  • 27. 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
  • 28. Algorithm Find Intersections Algorithm 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
  • 29. Hanle Event Point 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 풬 Tuan LK - Son KD LINE SEGMENT INTERSECTION 29
  • 30. Hanle Event Point 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 풬 Tuan LK - Son KD LINE SEGMENT INTERSECTION 30
  • 31. Hanle Event Point 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 Tuan LK - Son KD LINE SEGMENT INTERSECTION 31
  • 32. Algorithm Find New Event FINDNEWEVENT(푠푙 , 푠푟 , 푝) 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
  • 33. Bổ đề về giải thuật tìm các giao cắt Bổ đề 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
  • 34. Câu hỏi Tuan LK - Son KD LINE SEGMENT INTERSECTION 34
  • 35. Xin cảm ơn! Tuan LK - Son KD LINE SEGMENT INTERSECTION 35

Notes de l'éditeur

  1. Layers Overlay: che phủ -> tính trong suốt Thematic Map Overlay Intersection points
  2. Layers Overlay: che phủ -> tính trong suốt - Thematic Map Overlay: Map overlay is the combination of two (or more) map layers Intersection points
  3. - Roads in a road map and rivers in a river map are represented by chains of segments. the intersection point could happen to coincide with an endpoint of a segment of a chain Thực tế khi số hóa dữ liệu bản đồ, các vị trí sẽ được đánh dấu bằng từng điểm, với sai số cho phép, khi dựng lại các đối tượng (roads, rivers, …) sẽ nối các điểm này lại Để đơn giản, gộp tất cả các đoạn thẳng thành một tập, từ đó xác định các điểm giao. Bài toán thực tế: từ các điểm giao này, xác định lại tập các chuỗi đoạn thẳng ban đầu -> chỉ cần kiểm tra các điểm nối có thuộc cùng một tập hay không
  4. Yêu cầu một thuật toán không chỉ phụ thuộc vào n—số lượng các đoạn đầu vào mà còn dựa vào số điểm giao nhau Có nghĩa cho các loại bản đồ khác nhau Output-sensitive algorithm: http://en.wikipedia.org/wiki/Output-sensitive_algorithm Output-sensitive algorithm: the running time of the algorithm is sensitive to the size of the output. Intersection-sensitive,since the number of intersections is what determines the size of the output
  5. Plane Sweet Algorithm: plane sweep algorithm http://en.wikipedia.org/wiki/Sweep_line_algorithm
  6. Giới thiệu các điểm eventpoint: vì đường thẳng l di chuyển xuống sẽ cập nhật không liên tục Các event point có thể là các đầu mút của đoạn thẳng hoặc là các điểm giao được phát hiện Nói thểm về hai đoạn láng giềng trong slide Có 3 loại event point: đi
  7. Phụ thuộc chứng minh bổ đề Do chỉ xét các cặp đỉnh láng giềng nằm giảm chi phí tính toán. Tạm quên đi các trường hợp đặc biệt khác
  8. Xét các cặp đỉnh láng giềng dùng để xét Trường hợp 1: thêm 1 đoạn thẳng xét vào: kiểm tra để xác định láng giềng và tìm kiểm điểm cắt mới dùng để cập nhật vào các điểm event point. Trường hợp 2: event point là điểm giao đã được xác định. Trong trường hợp này có thể thay đổi các cặp láng giềng. Có thể xác định mới các điểm cắt làm event point. Trong hình ví dụ là (j,k) và (l,m) để xác định thêm các điểm cắt.Hay nói cách khác là đặt tên lại các cặp láng giềng Trường hợp 3: event point là điểm kêt thúc của đoạn thẳng. Xóa 2 cặp điểm láng giềng và thay vào đó là điểm láng giềng mới.
  9. Bỏ qua một số th ngoại lệ: giả thiết không đoạn nào ngang nhau (song song+trùng nhau), không có 3 đoạn nào đồng quy trở lên
  10. For example, if segments 𝑠 𝑖 and 𝑠 𝑘 are adjacent on the sweep line, anda new upper endpoint of a segment 𝑠 𝑗 appears in between, then we have to test 𝑠 𝑗 for intersection with 𝑠 𝑖 and 𝑠 𝑘 . Khi event point là điểm giao, hai đoạn giao nhau thay đổi thứ tự của chúng 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?
  11. implement the event queue: if 𝑝 and 𝑞 are two event points then we have 𝑝 ≺ 𝑞 if and only if 𝑝 𝑦 > 𝑞 𝑦 holds or 𝑝 𝑦 = 𝑞 𝑦 and 𝑝 𝑥 < 𝑞 𝑥 holds. Both operations—fetching the next event and inserting an event—take O(logm) time, where m is the number of events insert a new line segment (whose left endpoint coincides with x). delete an existing line segment (whose right endpoint coincides with x). swap two adjacent entries (whose intersection point coincides with x).
  12. - Là cấu trúc động, vì as segments start or stop to intersect the sweep line, they must be inserted into or deleted from the structure.
  13. HANDLEEVENTPOINT(𝑝): Xử lý điểm sự kiện
  14. Can it be that new horizontal neighbors already intersected above the sweep line? Can it be that we insert a newly detected intersection point event, but it already occurs in Q?
  15. HANDLEEVENTPOINT(𝑝): Xử lý điểm sự kiện Can it be that new horizontal neighbors already intersected above the sweep line? Can it be that we insert a newly detected intersection point event, but it already occurs in Q?