1. Trang chủ
  2. » Giáo án - Bài giảng

Computational Geometry

32 276 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 2 Bài Toán Tìm Kiếm Hình Học
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Hình Học Tính Toán
Thể loại Giáo trình
Năm xuất bản N/A
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 485,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Xác định tất cả các giao điểm giữa các đoạn thẳng trong S..  Phương pháp đơn giản nhất • Kiểm tra sự giao nhau của từng cặp đoạn thẳng... • Nếu là điểm mút dưới thì loại đoạn thẳng khỏi

Trang 1

Bài toán Tìm kiếm hình học

Chương 2

Trang 2

Nội dung trình bày

 Xác định giao của các đoạn thẳng.

 Xác định vị trí điểm.

 Tìm kiếm theo khoảng.

Trang 3

Giao của các đoạn thẳng

 Bài toán:

• Cho tập S gồm n đoạn thẳng (đóng) trên mặt

phẳng Xác định tất cả các giao điểm giữa các đoạn thẳng trong S.

 Phương pháp đơn giản nhất

• Kiểm tra sự giao nhau của từng cặp đoạn thẳng.

Trang 5

Phương pháp dòng quét

• Khi đường thẳng quét gặp điểm sự kiện:

– Cập nhật trạng thái dòng quét

• Nếu là điểm mút trên thì thêm đoạn thẳng vào trạng thái

• Nếu là điểm mút dưới thì loại đoạn thẳng khỏi trạng thái.– Kiểm tra sự giao nhau

Trang 6

Phương pháp dòng quét

• Kiểm tra sự giao nhau

– Sắp xếp các đoạn thẳng cắt

dòng quét từ trái sang phải

theo các điểm mút trên

– Kiểm tra sự giao nhau của 2

đoạn kề nhau Cụ thể là giữa

đoạn mới với nhiều nhất 2

không song song với trục Ox

và giao nhau tại p Giả sử không có đoạn thẳng thứ ba qua p Khi đó tồn tại điểm sự

sự giao nhau

Trang 7

Xử lý điểm sự kiện

 Điểm sự kiện là điểm mút trên của đoạn thẳng

Phát hiện giao điểm

Trang 8

Xử lý điểm sự kiện

 Điểm sự kiện là giao của 2 đoạn thẳng

Trang 9

Xử lý điểm sự kiện

 Điểm sự kiện là điểm mút dưới của đoạn thẳng

Trang 10

Cấu trúc dữ liệu

 Lưu hàng đợi sự kiện

• Sử dụng cây nhị phân tìm kiếm cân bằng Q.

- Chuyển đến điểm sự kiện kế tiếp.

- Chèn điểm sự kiện mới vào.

Trang 11

Cấu trúc dữ liệu

 Lưu trạng thái dòng quét

• Sử dụng cây nhị phân tìm kiếm cân bằng T

• Thứ tự sắp xếp: r và s là 2 đoạn thẳng thì r < s nếu và chỉ nếu

- rx1 < sx1 hoặc

- r x1 = sx1 và rx2 < sx2

Trang 12

Thuật toán xác định giao các đoạn

 Input: Tập các đoạn thẳng S trong mặt phẳng

 Output: Tập các giao điểm và các cặp đoạn thẳng tương

ứng.

 B1: Khởi tạo Q Chèn các điểm mút của các đoạn thẳng vào

Q Khi gặp điểm mút trên lưu lại đoạn thẳng tương ứng.

 B2: Khởi tạo T là trạng thái rỗng.

 B3: while Q ≠ {}

• Xác định điểm sự kiện p kế tiếp trong Q và xóa p;

• XulySukien(p);

Trang 13

Thuật toán xử lý sự kiện

Trang 14

Thuật toán xử lý sự kiện

 B1: U(p) = {s ∈ S : đoạn thẳng có điểm mút trên là p}

 B2:

• L(p) = {s ∈ T : đoạn thẳng có điểm mút dưới là p};

• C(p) = {s ∈ T : đoạn thẳng chứa p bên trong};

 B3: if card(L(p) ∪ U(p) ∪ C(p)) > 1

• p là giao điểm của các đoạn L(p) ∪ U(p) ∪ C(p)

 B4: T = T - L(p) ∪ C(p)

 B5: T = T + U(p) ∪ C(p) Thứ tự các đoạn thẳng trong T ứng

với thứ tự các đoạn thẳng giao với dòng quét phía dưới p Nếu có đoạn song song với Ox thì có thứ tự là lớn nhất.

Trang 15

Thuật toán xử lý sự kiện

 B6: if U(p) ∪ C(p) = {}

 B7: else

• s’ là đoạn ngoài cùng bên trái của U(p) ∪ C(p) trong T

• s” là đoạn ngoài cùng bên phải của U(p) ∪ C(p) trong T

Trang 16

Tìm sự kiện cho s l , s r , p

 If sl và sr giao phía dưới dòng quét hoặc phía trên

và bên phải p và giao điểm chưa xuất hiện trong Q

• Chèn giao điểm vào Q

 Định lý (Độ phức tạp của thuật toán)

• Thời gian thực thi: O(nlogn + Ilogn), với I là số giao điểm.

• Không gian lưu trữ: O(n)

Trang 17

Xác định vị trí điểm

q

S

Trang 19

Tìm kiếm trên dãi

Trang 20

Độ phức tạp

 Với 2 lần tìm kiếm nhị phân:

• Tối đa 2n dãi cho đồ thị n cạnh.

• n cạnh của một dãi

thời gian thực thi là O(logn).

 Không gian gồm:

• O(n) cho phân hoạch đồ thị thành 2n dãi.

• O(n) cho các cạnh trong một dãi.

Trang 22

Phân hoạch dạng thang

– Gọi lề ngang trên và

dưới của mảnh ∆ của

T(S) là top(∆) và

bottom(∆).

Trang 23

Phân hoạch dạng thang

 Các trường hợp lề trái của mảnh ∆ của T(S)

 T(S) của tập S gồm n cạnh có tối đa 6n+4 đỉnh và 3n+1 mảnh hình thang.

Trang 24

Phân hoạch dạng thang

 Mảnh thang liền kề:

Trang 25

Cấu trúc dữ liệu

Phân hoạch dạng thang T(S)

Cấu trúc tìm kiếm D

Trang 27

Thuật toán xác định vị trí điểm

 Input: Tập các đoạn thẳng không giao nhau S và điểm q.

bởi si

với các mảnh thang mới

 B7: Nếu i < n thì i = i + 1 Quay lại B4.

 B8: Tìm vị trí của q thông qua D.

Trang 28

Hiệu chỉnh T và D

 Đặt Si = {s1, s2, …, si} T và D

• D ban đầu chỉ có 1 nốt lá là R

 T(Si) được xây dựng từ T(Si-1)

∈ T(Si-1) chứa p.

• Nếu p có trong D thì p nằm trên

đường thẳng dọc đi qua một

x-nốt Ta xem như p nằm bên

phải x-nốt.

p

Trang 29

Hiệu chỉnh T và D

 Input: T(Si-1), D, si

 Output: ∆0, ∆1, …, ∆k giao với si

 B3: j = 0

Ngược lại, chuyển sang B6.

 B5: j = j + 1 Quay lại B4.

 B6: Trả về các ∆0, ∆1, …, ∆j

Trang 30

Hiệu chỉnh T và D

Trang 31

Hiệu chỉnh T(S) và D

Trang 32

Hiệu chỉnh T và D

 Quy tắc hiệu chỉnh D

• Gắn các x-nốt và y-nốt mới với các nốt lá tương ứng

 Thuật toán xác định vị trí điểm bằng phân hoạch dạng thang T(S) của tập n đoạn thẳng không chéo nhau S có độ phức tạp:

• O(nlogn) thực thi để xây dựng T(S) và D

• O(n) không gian lưu trữ

• O(logn) thực thi xác định điểm

Ngày đăng: 17/07/2014, 03:00

TỪ KHÓA LIÊN QUAN