1. Trang chủ
  2. » Giáo Dục - Đào Tạo

HÌNH học TÍNH TOÁN (p1) (GIẢI THUẬT SLIDE) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

19 14 0

Đ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

Định dạng
Số trang 19
Dung lượng 203,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

35.2 Xác định có cặp đoạn thẳng nào cắt nhau không Bài toán: Cho tập các đoạn thẳng trong mặt phẳng.. ª Để đơn giản, giả sử: – Không có đoạn thẳng nào là thẳng đứng – Không có ba đoạn t

Trang 1

HÌNH HỌC TÍNH TOÁN

Trang 2

35.2 Xác định có cặp đoạn thẳng nào

cắt nhau không

Bài toán: Cho tập các đoạn thẳng trong mặt

phẳng Xác định có cặp đoạn thẳng nào cắt nhau hay không.

ª Để đơn giản, giả sử:

– Không có đoạn thẳng nào là thẳng đứng

– Không có ba đoạn thẳng nào cắt nhau tại một điểm chung.

Trang 3

Giải thuật thô sơ

ª Giải thuật thô sơ: Kiểm tra xem mỗi cặp đoạn thẳng có cắt nhau hay không Thời gian chạy là

(n2), với n là số các đoạn thẳng.

Trang 4

Kỹ thuật quét

ª Giải thuật hữu hiệu dùng kỷ thuật quét

(sweeping):

Dùng một đưòng thẳng thẳng đứng quét từ trái sang phải và xem xét các thay đổi của

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

thẳng

Đường thẳng quét (sweep line)

° Đường thẳng quét thẳng đứng, vị trí hiện

thời là toạ độ x

x

Trang 5

Thứ tự các đoạn thẳng

° Định nghĩa một thứ tự hoàn toàn trên các đoạn thẳng cắt bởi đường thẳng quét.

– Hai đoạn thẳng s1 và s2 không cắt nhau là có thể so sánh được tại x nếu đường thẳng quét tại vị trí x cắt cả hai đoạn thẳng đó.

– Nếu s1 và s2 là có thể so sánh được tại x và giao điểm của s1 với đường thẳng quét ở cao

hơn giao điểm của s2 với cùng đường thẳng

quét đó, thì ta nói s1 ở trên s2 , ký hiệu s1 x s2 .

Trang 6

a b

c

g

h

f

i

a  rc a  tb

b  tc

a  tc

b  uc

Đoạn thẳng d không so sánh được với

các đoạn thẳng khác trong hình (a).

e  v f nhưng f  w e

Mọi đường thẳng quét mà

đi qua vùng xám đều có

các đoạn thẳng e và f ở

liên tiếp nhau trong quan hệ thứ tự của nó

Thứ tự các đoạn thẳng (tiếp)

Trang 7

Các cấu trúc dữ liệu trong kỹ thuật

quét

– Đường thẳng quét

° Khi di chuyển đường thẳng quét, giải thuật trữ và duy trì các thông tin sau

– Tình trạng của đường thẳng quét (sweep-line status): cho biết thứ tự giữa các đối tượng (đoạn thẳng) bị cắt bởi đường

thẳng quét với nhau

– Lịch của các biến cố (event-point

schedule): dãy các tọa độ x, sắp từ trái

sang phải, xác định các vị trí dừng của đường thẳng quét

Trang 8

Các thao tác lên sweep-line status

ª Chi tiết giải thuật hữu hiệu dùng kỷ thuật quét – Đường thẳng quét

° Khi di chuyển đường thẳng quét, giải thuật trữ và duy trì các thông tin sau

– Tình trạng của đường thẳng quét (sweep-line status): Các thao tác lên T:

° ABOVE(T, s): trả về đoạn thẳng ở ngay

trên s trong T

° BELOW(T, s): trả về đoạn thẳng ở ngay

dưới s trong T.

Trang 9

Event-point schedule

– Lịch của các biến cố (event-point

schedule): dãy các tọa độ x, sắp từ trái

sang phải, xác định các vị trí dừng của đường thẳng quét

° Mỗi điểm đầu mút của các đoạn

thẳng (của tập input S) là một điểm biến cố (event point), là điểm mà thứ

tự T thay đổi.

° Lịch của các biến cố là tĩnh và được xây dựng bằng cách sắp xếp các

điểm đầu mút của các đoạn thẳng theo thứ tự từ trái qua phải

Trang 10

Xác định có cặp đoạn thẳng nào cắt

nhau không

A NY -S EGMENTS -I NTERSECT(S)

1 T 

2 Sắp các điểm đầu mút của các đoạn thẳng

trong S theo

thứ tự từ trái sang phải, breaking ties

3 for mổi điểm p trong danh sách sắp xếp của

các điểm đầu mút

4 do if p là điểm đầu mút bên trái của

đoạn thẳng s

cắt s)

8 if p là điểm đầu mút bên phải của

đoạn thẳng s

đều tồn tại

Trang 11

Thực thi ANY-SEGMENTS-INTERSECT

a

b

c

f

Trang 12

Breaking ties

ª Nếu khi sắp xếp các điểm đầu mút của các

đoạn thẳng trong S từ trái sang phải mà có

nhiều điểm có cùng tọa độ x thì breaking ties như

sau

– Các điểm đầu mút bên trái được xếp trước các điểm đầu mút bên phải

a

b p

q

p được xếp trước q khi sắp xếp các điểm đầu mút

Trang 13

Tính đúng đắn

Giải thuật ANY-SEGMENTS-INTERSECT chạy trên tập S

trả về TRUE nếu và chỉ nếu có cắt nhau giửa các đoạn thẳng

“”: xem mã ta thấy ANY-SEGMENTS-INTERSECT trả về

TRUE chỉ khi nào nó tìm thấy hai đoạn thẳng cắt nhau

“”: Sẽ chứng minh rằng nếu tồn tại hai đoạn thẳng cắt nhau thì ANY-SEGMENTS-INTERSECT trả về

Trang 14

Tính đúng đắn (tiếp)

Giả sử tồn tại một giao điểm.

Gọi p là giao điểm bên trái nhất, gọi a và b là các đoạn thẳng cắt nhau tại p.

Tồn tại đường quét z mà tại đó a và b trở nên liên

tiếp nhau trong thứ tự toàn phần.

Tồn tại điểm đầu mút q mà là event point để cho a và b trở nên liên tiếp nhau trong thứ tự toàn phần.

Có 2 trường hợp: A) giải thuật xử lý q và B) giải

thuật không xử lý q.

p

z

a b

Trang 15

Tính đúng đắn (tiếp)

A)

Trường hợp 1: đoạn thẳng a hay b được chèn vào

T, và đoạn thẳng kia ở trên hay dưới nó Các

dòng 4-7 tìm thấy trường hợp này

p

p

p

q

q

q

p z

q

p

z

q

z

z

Trang 16

Tính đúng đắn (tiếp)

Trường hợp 2: các đoạn thẳng a và b đang trong T, và

một đoạn thẳng ở giữa chúng được xóa Các dòng 8-11 tìm thấy trường hợp này.

Trong cả hai trường hợp, giải thuật tìm thấy p và trả về

B)

Nếu q không được giải thuật xử lý, thì có nghĩa là giải

thuật đã quay về trước khi xử lý xong tất cả các event points Vậy giải thuật đã tìm thấy một giao điểm và trả về TRUE

p

z

q

Trang 17

Phân tích ANY-SEGMENTS-INTERSECT

– Giả sử tập đoạn thẳng S gồm có n đoạn

thẳng Dùng cấu trúc dữ liệu thích hợp (ví dụ: dựa trên cây nhị phân cân bằng) để hiện

thực T sao cho các thao tác lên T đều tốn O(lg

n) thời gian.

– Thời gian chạy của giải thuật ANY-SEGMENTS

° Dòng 1: O(1) thời gian

° Dòng 2: O(n lg n) thời gian

° Vòng lặp for: O(n lg n) thời gian

Vậy thời gian chạy tổng cộng của giải thuật là

O(n lg n).

Trang 18

35.4 Tìm bao lồi

ª Tự đọc

Trang 19

35.4 Tìm cặp điểm gần nhau nhất

ª Tự đọc

Ngày đăng: 29/03/2021, 08:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm