Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 35
lượt xem 1
download
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 35 có nội dung trình bày về hình học tính toán, giải thuật thô sơ, kỹ thuật quét, cấu trúc dữ liệu trong kỹ thuật quét, các thao tác lên sweep-line status, tính đúng đắn,... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 35
- Hình Hoïc Tính Toaùn 13.11.2004 1
- 35.2 Xaùc ñònh coù caëp ñoaïn thaúng naøo caét nhau khoâng Baøi toaùn: Cho taäp caùc ñoaïn thaúng trong maët phaúng. Xaùc ñònh coù caëp ñoaïn thaúng naøo caét nhau hay khoâng. ª Ñeå ñôn giaûn, giaû söû: – Khoâng coù ñoaïn thaúng naøo laø thaúng ñöùng – Khoâng coù ba ñoaïn thaúng naøo caét nhau taïi moät ñieåm chung. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 2
- Giaûi thuaät thoâ sô ª Giaûi thuaät thoâ sô: Kieåm tra xem moãi caëp ñoaïn thaúng coù caét nhau hay khoâng. Thôøi gian chaïy laø (n2), vôùi n laø soá caùc ñoaïn thaúng. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 3
- Kyõ thuaät queùt ª Giaûi thuaät höõu hieäu duøng kyû thuaät queùt (sweeping): Duøng moät ñöoøng thaúng thaúng ñöùng queùt töø traùi sang phaûi vaø xem xeùt caùc thay ñoåi cuûa phaàn giao cuûa ñöôøng thaúng queùt vôùi caùc ñoaïn thaúng. – Ñöôøng thaúng queùt (sweep line) ° Ñöôøng thaúng queùt thaúng ñöùng, vò trí hieän thôøi laø toaï ñoä x x 13.11.2004 Chöông 35: Hình hoïc tính toaùn 4
- Thöù töï caùc ñoaïn thaúng ° Ñònh nghóa moät thöù töï hoaøn toaøn treân caùc ñoaïn thaúng caét bôûi ñöôøng thaúng queùt. – Hai ñoaïn thaúng s1 vaø s2 khoâng caét nhau laø coù theå so saùnh ñöôïc taïi x neáu ñöôøng thaúng queùt taïi vò trí x caét caû hai ñoaïn thaúng ñoù. s2 s1 – Neáu s1 vaø s2 laø coù theå so saùnh ñöôïc taïi x vaø giao ñieåm cuûa s1 vôùi ñöôøng thaúng queùt ôû cao hôn giao ñieåm cuûa s2 vôùi cuøng ñöôøng thaúng queùt ñoù, thì ta noùi s1 ôû treân s2 , kyù hieäu s1 > x s2 . 13.11.2004 Chöông 35: Hình hoïc tính toaùn 5
- Thöù töï caùc ñoaïn thaúng (tieáp) e d g a i b h c f r t u v z w (a) (b) a >r c a >t b b >u c e >v f nhöng f >w e b >t c Moïi ñöôøng thaúng queùt maø ñi qua vuøng a >t c xaùm ñeàu coù caùc ñoaïn thaúng e vaø f ôû lieân tieáp nhau trong quan heä thöù töï cuûa Ñoaïn thaúng d khoâng so saùnh ñöôïc vôùi noù caùc ñoaïn thaúng khaùc trong hình (a). 13.11.2004 Chöông 35: Hình hoïc tính toaùn 6
- Caùc caáu truùc döõ lieäu trong kyõ thuaät queùt – Ñöôøng thaúng queùt ° Khi di chuyeån ñöôøng thaúng queùt, giaûi thuaät tröõ vaø duy trì caùc thoâng tin sau – Tình traïng cuûa ñöôøng thaúng queùt (sweep-line status): cho bieát thöù töï giöõa caùc ñoái töôïng (ñoaïn thaúng) bò caét bôûi ñöôøng thaúng queùt vôùi nhau – Lòch cuûa caùc bieán coá (event-point schedule): daõy caùc toïa ñoä x, saép töø traùi sang phaûi, xaùc ñònh caùc vò trí döøng cuûa ñöôøng thaúng queùt. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 7
- Caùc thao taùc leân sweep-line status ª Chi tieát giaûi thuaät höõu hieäu duøng kyû thuaät queùt – Ñöôøng thaúng queùt ° Khi di chuyeån ñöôøng thaúng queùt, giaûi thuaät tröõ vaø duy trì caùc thoâng tin sau – Tình traïng cuûa ñöôøng thaúng queùt (sweep-line status): Caùc thao taùc leân T: ° INSERT(T, s): cheøn ñoaïn thaúng s vaøo T ° DELETE(T, s): xoaù ñoaïn thaúng s khoûi T ° ABOVE(T, s): traû veà ñoaïn thaúng ôû ngay treân s trong T ° BELOW(T, s): traû veà ñoaïn thaúng ôû ngay döôùi s trong T. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 8
- Event-point schedule – Lòch cuûa caùc bieán coá (event-point schedule): daõy caùc toïa ñoä x, saép töø traùi sang phaûi, xaùc ñònh caùc vò trí döøng cuûa ñöôøng thaúng queùt. ° Moãi ñieåm ñaàu muùt cuûa caùc ñoaïn thaúng (cuûa taäp input S) laø moät ñieåm bieán coá (event point), laø ñieåm maø thöù töï T thay ñoåi. ° Lòch cuûa caùc bieán coá laø tónh vaø ñöôïc xaây döïng baèng caùch saép xeáp caùc ñieåm ñaàu muùt cuûa caùc ñoaïn thaúng theo thöù töï töø traùi qua phaûi. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 9
- Xaùc ñònh coù caëp ñoaïn thaúng naøo caét nhau khoâng ANY-SEGMENTS-INTERSECT(S) 1 T 2 Saép caùc ñieåm ñaàu muùt cuûa caùc ñoaïn thaúng trong S theo thöù töï töø traùi sang phaûi, breaking ties... 3 for moåi ñieåm p trong danh saùch saép xeáp cuûa caùc ñieåm ñaàu muùt 4 do if p laø ñieåm ñaàu muùt beân traùi cuûa ñoaïn thaúng s 5 then INSERT(T, s) 6 if (ABOVE(T, s) toàn taïi vaø caét s) hay (BELOW(T, s) toàn taïi vaø caét s) 7 then return TRUE 8 if p laø ñieåm ñaàu muùt beân phaûi cuûa ñoaïn thaúng s 9 then if caû hai ABOVE(T, s) vaø BELOW(T, s) ñeàu toàn taïi vaø ABOVE(T, s) caét BELOW(T, s) 10 then return TRUE 11 DELETE(T, s) 12 return FALSE 13.11.2004 Chöông 35: Hình hoïc tính toaùn 10
- Thöïc thi ANY-SEGMENTS-INTERSECT e a d c f b a a a d d e e b c a c d d b c b c b b b thôøi gian 13.11.2004 Chöông 35: Hình hoïc tính toaùn 11
- Breaking ties ª Neáu khi saép xeáp caùc ñieåm ñaàu muùt cuûa caùc ñoaïn thaúng trong S töø traùi sang phaûi maø coù nhieàu ñieåm coù cuøng toïa ñoä x thì breaking ties nhö sau – Caùc ñieåm ñaàu muùt beân traùi ñöôïc xeáp tröôùc caùc ñieåm ñaàu muùt beân phaûi. a q b p p ñöôïc xeáp tröôùc q khi saép xeáp caùc ñieåm ñaàu muùt ôû doøng 2 cuûa ANY-SEGMENTS-INTERSECT 13.11.2004 Chöông 35: Hình hoïc tính toaùn 12
- Tính ñuùng ñaén ª Theorem 35.1 (Tính ñuùng ñaén) Giaûi thuaät ANY-SEGMENTS-INTERSECT chaïy treân taäp S traû veà TRUE neáu vaø chæ neáu coù caét nhau giöûa caùc ñoaïn thaúng. ª Chöùng minh “”: xem maõ ta thaáy ANY-SEGMENTS-INTERSECT traû veà TRUE chæ khi naøo noù tìm thaáy hai ñoaïn thaúng caét nhau. “”: Seõ chöùng minh raèng neáu toàn taïi hai ñoaïn thaúng caét nhau thì ANY-SEGMENTS-INTERSECT traû veà TRUE. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 13
- Tính ñuùng ñaén (tieáp) Giaû söû toàn taïi moät giao ñieåm. Goïi p laø giao ñieåm beân traùi nhaát, goïi a vaø b laø caùc ñoaïn thaúng caét nhau taïi p. Toàn taïi ñöôøng queùt z maø taïi ñoù a vaø b trôû neân lieân tieáp nhau trong thöù töï toaøn phaàn. Toàn taïi ñieåm ñaàu muùt q maø laø event point ñeå cho a vaø b trôû neân lieân tieáp nhau trong thöù töï toaøn phaàn. a p b z Coù 2 tröôøng hôïp: A) giaûi thuaät xöû lyù q vaø B) giaûi thuaät khoâng xöû lyù q. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 14
- Tính ñuùng ñaén (tieáp) A) Tröôøng hôïp 1: ñoaïn thaúng a hay b ñöôïc cheøn vaøo T, vaø ñoaïn thaúng kia ôû treân hay döôùi noù. Caùc doøng 4-7 tìm thaáy tröôøng hôïp naøy. q q p q p p z z z p p p q q q z z z 13.11.2004 Chöông 35: Hình hoïc tính toaùn 15
- Tính ñuùng ñaén (tieáp) Tröôøng hôïp 2: caùc ñoaïn thaúng a vaø b ñang trong T, vaø moät ñoaïn thaúng ôû giöõa chuùng ñöôïc xoùa. Caùc doøng 8-11 tìm thaáy tröôøng hôïp naøy. q p z Trong caû hai tröôøng hôïp, giaûi thuaät tìm thaáy p vaø traû veà TRUE. B) Neáu q khoâng ñöôïc giaûi thuaät xöû lyù, thì coù nghóa laø giaûi thuaät ñaõ quay veà tröôùc khi xöû lyù xong taát caû caùc event points. Vaäy giaûi thuaät ñaõ tìm thaáy moät giao ñieåm vaø traû veà TRUE. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 16
- Phaân tích ANY-SEGMENTS-INTERSECT ª Thôøi gian chaïy – Giaû söû taäp ñoaïn thaúng S goàm coù n ñoaïn thaúng. Duøng caáu truùc döõ lieäu thích hôïp (ví duï: döïa treân caây nhò phaân caân baèng) ñeå hieän thöïc T sao cho caùc thao taùc leân T ñeàu toán O(lg n) thôøi gian. – Thôøi gian chaïy cuûa giaûi thuaät ANY-SEGMENTS-INTERSECT goàm ° Doøng 1: O(1) thôøi gian ° Doøng 2: O(n lg n) thôøi gian ° Voøng laëp for: O(n lg n) thôøi gian Vaäy thôøi gian chaïy toång coäng cuûa giaûi thuaät laø O(n lg n). 13.11.2004 Chöông 35: Hình hoïc tính toaùn 17
- 35.4 Tìm bao loài ª Töï ñoïc. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 18
- 35.4 Tìm caëp ñieåm gaàn nhau nhaát ª Töï ñoïc. 13.11.2004 Chöông 35: Hình hoïc tính toaùn 19
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu mảng với danh sách liên kết - Bùi Tiến Lên
36 p | 41 | 5
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 105 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 7 - Châu Thị Bảo Hà
133 p | 113 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 46 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn