line segment intersection introduction
TRANSCRIPT
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
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
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
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
Đặ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 SEGMENT INTERSECTION 6Tuan LK - Son KD
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
Độ 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
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 ,
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
Tuan LK - Son KD LINE SEGMENT INTERSECTION 11
Sweep line
Cập nhật
Cập nhật
Xóa
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
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
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
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
Tuan LK - Son KD LINE SEGMENT INTERSECTION 16
𝑠1
𝑠4
𝑠3 𝑠2
𝑠5
𝑠7𝑠6
𝑠8
add 𝑠1
Plane Sweep Algorithm
Tuan LK - Son KD LINE SEGMENT INTERSECTION 17
𝑠1
𝑠4
𝑠3 𝑠2
𝑠7𝑠6
𝑠8
add 𝑠2 after 𝑠1
𝑠5
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
Plane Sweep Algorithm
Tuan LK - Son KD LINE SEGMENT INTERSECTION 19
𝑠1
𝑠4
𝑠3 𝑠2
𝑠7𝑠6
𝑠8
add 𝑠4 before 𝑠1
𝑠5
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
Plane Sweep Algorithm
Tuan LK - Son KD LINE SEGMENT INTERSECTION 21
𝑠1
𝑠4
𝑠3 𝑠2
𝑠7𝑠6
𝑠8
remove 𝑠2
𝑠5
Plane Sweep Algorithm
Tuan LK - Son KD LINE SEGMENT INTERSECTION 22
𝑠1
𝑠4
𝑠3 𝑠2
𝑠7𝑠6
𝑠8
remove 𝑠1
𝑠5
Plane Sweep Algorithm
Tuan LK - Son KD LINE SEGMENT INTERSECTION 23
𝑠1
𝑠4
𝑠3 𝑠2
𝑠7𝑠6
𝑠8
add 𝑠5
𝑠5
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
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?
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
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 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
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 𝒬
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 𝒬
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
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
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
Câu hỏi
Tuan LK - Son KD LINE SEGMENT INTERSECTION 34
Tuan LK - Son KD LINE SEGMENT INTERSECTION 35
Xin cảm ơn!