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 13 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

Cấu trúc

  • HÌNH HỌC TÍNH TỐN

  • 35.2 Xác đònh có cặp đoạn thẳng nào cắt nhau không

  • Giải thuật thô sơ

  • Kỹ thuật quét

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

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

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

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

  • Event-point schedule

  • Xác đònh có cặp đoạn thẳng nào cắt nhau không

  • Thực thi ANY-SEGMENTS-INTERSECT

  • Breaking ties

  • Tính đúng đắn

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

  • Slide 15

  • Slide 16

  • Phân tích ANY-SEGMENTS-INTERSECT

  • 35.4 Tìm bao lồi

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

Nội dung

HÌNH HỌC TÍNH TỐN 35.2 Xác định có cặp đoạn thẳng cắt không Bài toán: Cho tập đoạn thẳng mặt phẳng Xác định có cặp đoạn thẳng cắt hay không ª Để đơn giản, giả sử: – Không có đoạn thẳng thẳng đứng – Không có ba đoạn thẳng cắt điểm chung Giải thuật thô sơ ª Giải thuật thô sơ: Kiểm tra xem cặp đoạn thẳng có cắt hay không Thời gian chạy (n2), với n số đoạn thẳng Kỹ thuật quét ª Giải thuật hữu hiệu dùng kỷ thuật quét (sweeping): Dùng đưòng thẳng thẳng đứng quét từ trái sang phải xem xét thay đổi phần giao đường thẳng quét với đoạn thẳng – Đường thẳng quét (sweep line) ° Đường thẳng quét thẳng đứng, vị trí thời toạ độ x x Thứ tự đoạn thẳng ° Định nghóa thứ tự hoàn toàn đoạn thẳng cắt đường thẳng quét – Hai đoạn thẳng s1 s2 không cắt so sánh x đường thẳng quét vị trí x cắt hai đoạn thẳng s2 s1 – Nếu s1 s2 so sánh x giao điểm s1 với đường thẳng quét cao giao điểm s2 với đường thẳng quét đó, ta nói s1 s2 , ký hiệu s1 x s2 Thứ tự đoạn thẳng (tiếp) e d a g i b h c f r t u v w (b) (a) a rc a tb b tc a tc z b uc e đường v f f wquét e Mọi thẳng mà qua vùng xám có đoạn thẳng e f liên tiếp quan hệ Đoạn thẳng d không so sánh với đoạn thẳng khác hình (a) thứ tự Các cấu trúc liệu kỹ thuật quét – Đường thẳng quét ° Khi di chuyển đường thẳng quét, giải thuật trữ trì thông tin sau – Tình trạng đường thẳng quét (sweepline status): cho biết thứ tự đối tượng (đoạn thẳng) bị cắt đường thẳng quét với – Lịch biến cố (event-point schedule): dãy tọa độ x, từ trái sang phải, xác định vị trí dừng đường thẳng quét 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ữ trì thông tin sau – Tình trạng đường thẳng quét (sweepline status): Các thao tác lên T: ° INSERT(T, s): chèn đoạn thẳng s vào T ° DELETE(T, s): xoá đoạn thẳng s khỏi T ° ABOVE(T, s): trả đoạn thẳng s T ° BELOW(T, s): trả đoạn thẳng s T Event-point schedule – Lịch biến cố (event-point schedule): dãy tọa độ x, từ trái sang phải, xác định vị trí dừng đường thẳng quét ° Mỗi điểm đầu mút đoạn thẳng (của tập input S) điểm biến cố (event point), điểm mà thứ tự T thay đổi ° Lịch biến cố tónh xây dựng cách xếp điểm đầu mút đoạn thẳng theo thứ tự từ trái qua phải Xác định có cặp đoạn thẳng cắt ANY-SEGMENTS-INTERSECT(S) không T  Sắp điểm đầu mút đoạn thẳng S theo thứ tự từ trái sang phải, breaking ties for mổi điểm p danh sách xếp điểm đầu mút if p điểm đầu mút bên trái đoạn thẳng s then INSERT(T, s) if (ABOVE(T, s) toàn cắt s) hay (BELOW(T, s) tồn cắt s) then return TRUE if p điểm đầu mút bên phải đoạn thẳng s then if hai ABOVE(T, s) BELOW(T, s) tồn ABOVE(T, s) cắt BELOW(T, s) 10 then return TRUE 11 DELETE(T, s) 12 return FALSE Thực thi ANY-SEGMENTS-INTERSECT e d a c f b a a b a c b d a c b d c b e d c b e d b thời gian Breaking ties ª Nếu xếp điểm đầu mút đoạn thẳng S từ trái sang phải mà có nhiều điểm có tọa độ x breaking ties sau – Các điểm đầu mút bên trái xếp trước điểm đầu mút bên phải a q b p p xếp trước q xếp điểm đầu mút dòng ANY-SEGMENTS-INTERSECT Tính đắn ª Theorem 35.1 (Tính đắn) Giải thuật ANY-SEGMENTS-INTERSECT chạy tập S trả TRUE có cắt giửa đoạn thẳng ª Chứng minh “”: xem mã ta thấy ANY-SEGMENTS-INTERSECT trả TRUE tìm thấy hai đoạn thẳng cắt “”: Sẽ chứng minh tồn hai đoạn thẳng cắt ANY-SEGMENTS-INTERSECT trả TRUE Tính đắn (tiếp) Giả sử tồn giao điểm Gọi p giao điểm bên trái nhất, gọi a b đoạn thẳng cắt p Tồn đường quét z mà a b trở nên liên tiếp thứ tự toàn phần Tồn điểm đầu mút q mà event point a b trở nên liên tiếp thứ tự toàn phần p a b z Có trường hợp: A) giải thuật xử lý q B) giải thuật không xử lý q Tính đắn (tiếp) q A) Trường hợp 1: đoạn thẳng a hay b chèn vào T, đoạn thẳng hay Các dòng 4-7 tìm thấy trường hợp q p q p p z p q z z z p q p z q z Tính đắn (tiếp) Trường hợp 2: đoạn thẳng a b T, đoạn thẳng chúng xóa Các dòng 8-11 tìm thấy trường hợp q p z Trong hai trường hợp, giải thuật tìm thấy p trả TRUE B) Nếu q không giải thuật xử lý, có nghóa giải thuật quay trước xử lý xong tất event points Vậy giải thuật tìm thấy giao điểm trả TRUE Phân tích ANY-SEGMENTS-INTERSECT ª Thời gian chạy – Giả sử tập đoạn thẳng S gồm có n đoạn thẳng Dùng cấu trúc liệu thích hợp (ví dụ: dựa nhị phân cân bằng) để thực T cho thao tác lên T tốn O(lg n) thời gian – Thời gian chạy giải thuật ANY-SEGMENTSINTERSECT gồm ° 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 giải thuật O(n lg n) 35.4 ª Tự đọc Tìm bao lồi 35.4 ª Tự đọc Tìm cặp điểm gần ... thô sơ ª Giải thuật thô sơ: Kiểm tra xem cặp đoạn thẳng có cắt hay không Thời gian chạy (n2), với n số đoạn thẳng Kỹ thuật quét ª Giải thuật hữu hiệu dùng kỷ thuật quét (sweeping): Dùng đưòng... – Lịch biến cố (event-point schedule): dãy tọa độ x, từ trái sang phải, xác định vị trí dừng đường thẳng quét 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... mút dòng ANY-SEGMENTS-INTERSECT Tính đắn ª Theorem 35.1 (Tính đắn) Giải thuật ANY-SEGMENTS-INTERSECT chạy tập S trả TRUE có cắt giửa đoạn thẳng ª Chứng minh “”: xem mã ta thấy ANY-SEGMENTS-INTERSECT

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