Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 175 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
175
Dung lượng
1,8 MB
Nội dung
Đại Học Quốc Gia Thành Phố Hồ Chí Minh Trường Đại Học Bách Khoa MAI THÁI SƠN THIẾT KẾ GIẢI THUẬT TÍNH GIẢN ĐỒ VORONOI TRONG MẶT PHẲNG Chuyên ngành: Khoa học máy tính LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng năm 2007 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học : TS Lê Ngọc Minh Cán chấm nhận xét : TS Phan Đạt Phúc Cán chấm nhận xét : TS Nguyễn Văn Minh Mẫn Luận văn thạc sĩ bảo vệ HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 07 tháng 09 năm 2007 Lời cảm ơn Tôi xin gởi lời cảm ơn chân thành sâu sắc đến TS Lê Ngọc Minh người tận tình hướng dẫn tơi suốt trình từ đại học tới cao học tạo điều kiện để tơi hồn thành luận văn Tơi xin cảm ơn gia đình động viên tạo điều kiện tốt để tơi tiếp tục theo đuổi việc học tập nghiên cứu Cuối cùng, xin gởi lời cảm ơn tới Prof Frank Aurenhammer, Takashi Ohyama, Ths Bùi Trọng Hiếu Ths Nguyễn Văn Diêu người nhiệt tình giúp đỡ cho tơi ý kiến q báu suốt trình học tập thực luận văn Tóm tắt Trong đề tài này, ta tiến hành nghiên cứu mở rộng giản đồ Voronoi dựa hàm khoảng cách convex theo hướng thêm trọng số vào cho site Giản đồ Voronoi kết ta gọi multiplicatively weighted convex distance function Voronoi diagram (MWCD) Đề tài tiến hành khảo sát tính chất đưa giải thuật tính MWCD mặt phẳng Ngoài ra, đề tài trọng tới việc giải số vấn đề liên quan vấn đề xác định vị trí điểm, Chương trình xây dựng có khả tương tác tốt với người sử dụng nhằm phục vụ cho công tác nghiên cứu giảng dạy Đồng thời framework tính giản đồ Voronoi xây dựng cho phép người dùng xây dựng loại giản đồ Voronoi khác cách dễ dàng Mục lục Chương 1: Giới thiệu vấn đề Chương 2: Cơ sở lý thuyết 2.1 Cơ sở toán học 2.1.1 Không gian Metric 2.1.2 Không gian định chuẩn 2.1.3 Không gian Topo 2.2 Hình học tính tốn Chương 3: Tổng quan giản đồ Voronoi mặt phẳng 3.1 Định nghĩa đặc điểm 3.2 Quan hệ với không gian chiều 3.3 Giải thuật tính giản đồ Voronoi phân tam giác Delaunay 3.3.1 Chận cho giải thuật tính giản đồ Voronoi 3.3.2 Giải thuật Straightforward 3.3.3 Giải thuật Incremental 3.3.4 Phương pháp Edge-flipping 3.3.5 Phương pháp Divide and Conquer 3.3.6 Phương pháp Sweep-Plane 3.3.7 Phương pháp Convex Hull 3.4 Giản đồ Voronoi tổng quát 3.4.1 Định nghĩa cho giản đồ Voronoi tổng quát 3.4.2 Các dạng giản đồ Voronoi Chương 4: Ứng dụng giản đồ Voronoi 10 Chương 5: Multiplicatively Weighted Convex Distance Function Voronoi Diagram mặt phẳng 13 5.1 Một số tính chất Convex distance 14 5.2 Một số định lý quan trọng 21 5.3 Định nghĩa cho MWCD 23 5.4 Convex distance function trường hợp tổng quát 26 5.4.1 Bisector hai site 26 5.4.2 Bisector ba site 48 5.4.3 Giản đồ Voronoi 70 5.5 Euclidean Weighted Distance 79 5.5.1 Bisector hai site 79 5.5.2 Bisector ba site 80 5.5.3 Giản đồ Voronoi 81 5.6 Polygonal Convex Distance function 82 5.6.1 Bisector hai site 82 5.6.2 Bisector ba site 87 5.6.3 Giản đồ Voronoi 89 5.6.5 Tính toán bisector hai site 90 5.6.6 Tính tốn bisector ba site 98 5.7 Các tập lồi nhẵn ngặt 99 5.7.1 Bisector hai site 99 5.7.2 Bisector ba site 99 5.7.3 Giản đồ Voronoi 100 Chương 6: Giải thuật tính giản đồ Voronoi 101 6.1 Cấu trúc liệu tổng quát 102 6.1.1 Cấu trúc liệu cho giản đồ tổng quát 102 6.1.2 Đồ thị Voronoi 103 6.1.3 Các cấu trúc liệu hỗ trợ 106 6.2 Giải thuật raster tính giản đồ Voronoi 109 6.3 Giải thuật Straight-Forward 115 6.4 Giải thuật Incremental 116 6.5 Multiplicatively Weighted Voronoi Diagram 119 6.6 MultiplicativelyWeighted Polygonal Convex Distance Voronoi Diagram 131 6.7 Point Location 138 6.7.1 Giải thuật Brute-Force 138 6.7.2 Đồ thị Voronoi 138 6.7.3 Slab 139 6.7.4 Point location MWVD 144 6.7.5 Point location MWCD 147 Chương 7: Chương trình 150 7.1 Giới thiệu chương trình 150 7.2 Thư viện LEDA 151 7.3 Framework tính giản đồ Voronoi 152 7.3.1 Các abstract class cho framework 153 7.3.2 Các handle class 157 7.4 Mở rộng nghiên cứu 158 Chương 8: Kết luận 159 Danh mục hình Hình 2.2.1: Star shaped Hình 3.1.1: Giản đồ Voronoi phân tam giác Delaunay Hình 3.4.2.1: Additively weighted Voronoi diagrams mặt phẳng khoảng cách Euclid Các đường tròn trọng số tương ứng site Hình 4.1: Định tuyến cho trường học giản đồ Voronoi thơng thường 10 Hình 4.2: Định tuyến cho trường học cách sử dụng multiplicatively weighted VD Trong trường học gán trọng số theo quy mô trường 10 Hình 4.3: Di chuyển robot từ s tới t qua vật cản sử dụng giản đồ Voronoi 11 Hình 5.1.1: Convex distance hai điểm p q với tập C cho trước .13 Hình 5.1.2: Tính chất metric convex distance function 14 Hình 5.1.3: Dịch chuyển p q vector v , dC(p, q) không đổi 14 Hình 5.1.4: D ảnh C qua phép đối xứng tâm 15 Hình 5.1.4: D ảnh C qua phép đối xứng tâm D C mở rộng với tỉ lệ dC(p, q) dC(p, q)C + p chứa q dC(p, q)D + q chứa p 15 Hình 5.1.5: Thay đổi C theo tỉ lệ k .16 Hình 5.1.6: Đường tròn ngoại convex distance function .17 Hình 5.1.7: Phép chiếu trung tâm foot point x’ 17 Hình 5.1.8: Tính chất ba điểm thẳng hàng 18 Hình 5.1.9: Đường giới hạn (U) (L) tập lồi 18 Hình 5.1.10: Điểm trái (Lm) phải (Rm) 19 Hình 5.1.9: Unit circle cho L1, L2 L∞ metric mặt phẳng R2 19 Hình 5.2.1: Định lý Desargue 20 Hình 5.2.2: Định lý Euler 21 Hình 5.3.1: Tịnh tiến C mở rộng theo tỉ lệ wp cho site p thuộc S 23 Hình 5.3.1: Giản đồ Voronoi với convex distance thơng thường có trọng số 24 Hình 5.4.1.1: Khảo sát hai site p q với tập lồi Cp Cq .25 Hình 5.4.1.2: Điểm x bisector hai site p q 26 Hình 5.4.1.3: Bisector p, q trường hợp trọng số .27 Hình 5.4.1.4: Bisector hai site p, q trường hợp suy biến (bên trái – bisector chứa vùng, bên phải – bisector chứa hai vùng) .28 Hình 5.4.1.5: Chosen bisector hai site p, q (trái – lấy độ ưu tiên theo tọa độ, phải – lấy theo đường phân giác) 29 Hình 5.4.1.6: Bisector hai site p, q với trọng số vài trường hợp khảo sát 30 Hình 5.4.1.7: Giao tia px p , py p với tia qyq , qxq 31 Hình 5.4.1.8: Đường thẳng pq chứa hai điểm thuộc bisector hai site p q 33 Hình 5.4.1.9: Tia px p khơng chứa điểm chứa hai điểm thuộc bisector chứa đoạn thẳng thuộc bisector 34 Hình 5.4.1.10: Bisector hai site p q nằm vùng FF FB giới hạn hai tia ppa ppb .34 Hình 5.4.1.11: Tia qxq chứa điểm thuộc bisector p q 35 Hình 5.4.1.12: Bisector hai site p, q đường cong kín dạng với ∂C bao quanh site có trọng số nhỏ site q 36 Hình 5.4.1.13: Bisector hai site p, q với trọng số khác vài trường hợp khảo sát 37 Hình 5.4.1.14: Vùng site q có dạng star-shaped 38 Hình 5.4.1.15: Trường hợp bisector cắt hay nằm ngồi bisector cũ 39 Hình 5.4.1.16: Khi tăng trọng số site p, bisector nằm bisector cũ Kết khảo sát convex set đường tròn 40 Hình 5.4.1.17: Dịch chuyển site q theo chiều vector E 40 Hình 5.4.1.18: Khi dịch chuyển site q theo phương pq .42 Hình 5.4.1.19: Khi dịch chuyển site q, bisector tỉ lệ với bisector cũ Các khảo sát thực số convex set cho kết phù hợp 43 Hình 5.4.1.20: Quay site q quanh site p Các khảo sát thực số convex set cho thấy dạng khác bisector .44 Hình 5.4.1.21: Bisector hai site p q không lồi 45 Hình 5.4.1.22: Các kết khảo sát số convex set cho thấy bisector biên tập khơng lồi 46 Hình 5.4.2.1: Khảo sát bisector ba site p, q, r .47 Hình 5.4.1.2: Các trường hợp xảy tính bisector ba điểm 48 Hình 5.4.2.2: Hai đường trịn ngoại tiếp giao tối đa hai điểm .49 Hình 5.4.2.3: Bisector ba site p, q, r mặt phẳng 50 Hình 5.4.2.4: Trong trường hợp tập lồi hình thoi tâm tâm hình thoi Ba site p, q, r không thẳng hàng BmC(p,q,r) rỗng .51 Hình 5.4.2.5: Bisector ba site số trường hợp khảo sát 51 Hình 5.4.2.6: Bisector site trường hợp suy biến khảo sát (màu đen – vùng bisector hai site, màu đỏ - bisector ba site) 52 Hình 5.4.2.7: Chosen bisector ba site thẳng hàng .53 Hình 5.4.2.8: Trường hợp suy biến chosen bisector tia 54 Hình 5.4.2.9: Khi chosen bisector tia phân giác góc suy biến 55 Hình 5.4.2.10: Chosen bisector (theo phân giác) ba site thẳng hàng 56 Hình 5.4.2.11: Khi chosen bisector tia phân giác góc suy biến Bisector ba site không chứa nhiều điểm 56 Hình 5.4.2.12: Bisector ba site trường hợp đường cong đường cong lấy theo chosen bisector vài trường hợp khảo sát 57 Hình 5.4.2.13: Bisector ba site khơng có có nhiều điểm 58 Hình 5.4.2.14: Bisector ba site chứa đoạn thẳng hay cung trường hợp xảy suy biến 59 Hình 5.4.2.15: Dù khơng xảy suy biến, bisector ba site p, q, r có khả chứa cung 60 Hình 5.4.2.16: Một ví dụ khác cho trường hợp dù không suy biến, bisector ba site p, q, r chứa cung, với p, q, r không thẳng hàng .61 Hình 5.4.2.17: Bisector ba site chứa điểm trường hợp xảy suy biến sử dụng chosen bisector 61 Hình 5.4.2.18: Khi không sử dụng chosen bisector, BmC(p,q,r) không rỗng sử dụng chosen bisector kết rỗng 61 Hình 5.4.2.19: Bisector ba site trường hợp đường cong cung kín khảo sát 62 Hình 5.4.2.20: Bisector ba site khơng có có nhiều điểm 63 Hình 5.4.2.21: Bisector ba site p, q, r chứa cung 64 Hình 5.4.2.22: Bisector ba điểm trường hợp cung kín giao cung kín khảo sát 64 Hình 5.4.2.23: Mâu thuẫn sử dụng chosen bisector? 65 Hình 5.4.2.24: Khi bisector ba site chứa cung .66 Hình 5.4.2.25: Trong trường hợp cung đoạn thẳng .66 Hình 5.4.2.26: Một số kết khảo sát bisector ba site trường hợp trọng số khác 68 Hình 5.4.3.1: Mọi điểm x mặt phẳng thuộc VmC(S) VRmC(p) 70 Hình 5.4.3.2: Vùng Voronoi hai site p, q có điểm chung? .70 Hình 5.4.3.3: Vùng site q r hai hole vùng site p 71 Hình 5.4.3.4: Vùng site p không liên thông 72 Hình 5.4.3.5: Giản đồ Voronoi khảo sát số tập lồi khác Kết cho thấy vùng Voronoi site chứa hole không liên thông 73 Hình 5.4.3.6: Các đỉnh cạnh Voronoi khảo sát vài trường hợp 74 Hình 5.4.3.7: Khơng tồn đường trịn ngoại tiếp cho ba site p, q, r .75 Hình 5.4.3.8: Trường hợp xấu xảy tính số đỉnh cạnh 76 Hình 5.4.3.9: Một vài kết khảo sát giản đồ Voronoi 77 Hình 5.5.1.1: Đường tròn Apollonius 79 Hình 5.5.2.1: Các trường hợp giao bisector ba site .79 Hình 5.5.3.1: Giản đồ Voronoi 80 Hình 5.6.1.1: Đoạn thẳng xy thuộc bisector hai site p, q 81 Hình 5.6.1.2: Bisector BmC(p,q) chia thành ba phần 82 Hình 5.6.1.3: Khảo sát bisector khoảng FF ngoại trừ hai support line 83 Hình 5.6.1.4: Bisector BmC(p,q) FF trọng số 84 Hình 5.6.1.5: Số đỉnh bisector trường hợp trọng số khác .84 Hình 5.6.1.6: Bisector hai site 85 Hình 5.6.1.1: Ví dụ cho trường hợp hai polygon giao O(k2) điểm 86 Hình 5.6.2.3: Bisector ba site, a b – đường cong cung kín giao hai đoạn thẳng chosen bisector, c d – đường cong đường cong giao tia chosen bisector, e f – hai cung kín giao hai đoạn thẳng chosen bisector, g h – giao không hay nhiều điểm 87 Hình 5.6.3.1: Giản đồ Voronoi 88 Hình 5.6.4.1: Sweep-line nằm đường thẳng pq 89 Hình 5.6.4.2: Sweep-line nằm đường giới hạn Cq .90 Hình 5.6.4.3: Sweep-line khơng trùng với pq không trùng với đường giới hạn 90 Hình 5.6.4.4: Bisector BmC(p,q) chia thành ba phần 90 Hình 5.6.4.5: Tính dmC(p,q) .90 Hình 5.6.4.6: Tính foot point vector x biên ∂C 96 Hình 5.7.1.1:Bisector với tập lồi đường tròn 98 Hình 5.7.2.1: Bisector ba site với tập lồi có biên đường trịn 98 Hình 5.7.3.1: Giản đồ Voronoi với tập lồi có biên đường trịn 99 Hình 6.4.1: Đồ thị Voronoi với MWCD .104 Hình 6.4.2: Đồ thị Voronoi với MWVD 104 Hình 6.2.1: Giải thuật raster 108 Hình 6.2.2: Một số ví dụ cho giải thuật raster 112 Hình 6.4.1: Giản đồ Voronoi S’ (hình a), chèn thêm site p (hình b) giản đồ Voronoi sau tính tốn lại (hình c) .115 Hình 6.5.1: Một số phần mềm vẽ MWVD (Gambini Voronoi) .118 Hình 6.5.2: Quy ước cho chiều bisector .119 Hình 6.5.3: Trường hợp đoạn thẳng đường thẳng 120 Hình 6.5.4: Trường hợp cung đường thẳng 121 Hình 6.5.5: Trường hợp đường trịn đường thẳng 121 Hình 6.5.6: Trường hợp đoạn thẳng đường tròn 122 Hình 6.5.7: Trường hợp cung đường tròn 123 Hình 6.5.8: Trường hợp đường trịn đường tròn 123 Hình 6.5.9: Kết phép clip xếp giao điểm theo thứ tự bisector 125 Hình 6.6.1: Phân vùng trường hợp site có trọng số 131 Hình 6.6.2: Giao hai polygon .133 Hình 6.7.2.1: Đồ thị Voronoi point site thông thường .138 Hình 6.7.3.1: Slab đồ thị G 138 Hình 6.7.4.1: Giản đồ Voronoi (hình a) đồ thị tìm kiếm sau tách cạnh thành good arc (hình b) .144 Hình 6.7.4.2: Cấu trúc slab vấn đề định vị trí cho điểm q 145 Hình 6.7.4.1: Giản đồ Voronoi (hình a) đồ thị tìm kiếm sau tách cạnh thành đoạn thẳng (hình b) 146 Hình 6.7.5.2: Cấu trúc slab vấn đề định vị trí cho điểm q 147 Hình 7.1.1: Giao diện chương trình 150 Hình 7.4.1: Giản đồ Voronoi với trọng số nhân trọng số cộng dựa convex distance function 157 Chương 7: Chương trình Trong phần ta giới thiệu số tính giao diện chương trình Đồng thời ta giới thiệu thư viện LEDA, thư viện sử dụng để viết chương trình Ở phần cuối ta giới thiệu framework tính giản đồ Voronoi 7.1 Giới thiệu chương trình Trong phần ta trình bày vài nét chức chương trình, cấu trúc file liệu giao diện chương trình Mục đích thiết kế Chương trình thiết kế với mục đích sau: • Cho phép biểu diễn nhiều loại giản đồ Voronoi với giải thuật khác • Cho phép thực animation q trình tính tốn giản đồ • Giải vấn đề point location giản đồ • Giải vấn đề khác đồ thị Voronoi, đồ thị Delaunay, đồ thị tìm kiếm, • Chế độ console cho phép thực đo đạc phép kiểm tra giản đồ xây dựng • Cho phép điều chỉnh thông số đồ họa cho giản đồ, site, cửa sổ thông qua menu trực quan • Cho phép nạp hình ảnh phục vụ cho mục đích đồ, • Cho phép xuất kết định dạng post-script • Hỗ trợ tương tác với người sử dụng bao gồm thao tác phóng to, thu nhỏ, dịch chuyển đồ, thao tác thêm, xóa, sửa nội dung site cho phép người dùng tự thao tác quan sát kết Định dạng file liệu DiagramCode NumberofSite: NumSites SiteName [SiteInfo] Color: R G B Info: Information Ghi chú: Các chữ in nghiêng liệu người dùng phải nhập Mỗi loại site có định dạng SiteInfo khác 150 Giao diện chương trình Hình 7.1.1: Giao diện chương trình 7.2 Thư viện LEDA Giới thiệu thư viện LEDA Leda (Library of Efficient Data Type and Algorithms) thư viện viết C++ cung cấp cho người sử dụng: • Các kiểu liệu như: stacks, queues, lists, arrays, dictionary arrays, sets, • Các kiểu số như: integers, big floats, rationals, algebraic numbers, and linear algebra • Đồ thị cấu trúc liệu hỗ trợ như: graphs, nodes, edges, node-arrays, edge-arrays, node- and edge- maps, node priority queues, node partitions, phát biểu lặp xử lý đỉnh cạnh graph, • Các giải thuật đồ thị như: tìm đường ngắn (shortest paths), xác định phủ tối tiểu (spanning trees), điều khiển dịng (flows), • Các đối tượng hình học như: điểm (points), đường thẳng (lines), đoạn thẳng (segments), mặt phẳng (planes), polygons, • Các giải thuật hình học như: bao lồi (convex hulls), phân tam giác (triangulations), giao đoạn thẳng (segment intersection), • Các giao diện đồ hoạ tương tác với người dùng như: windows, graphwins, geowins, panels, menus, Dự án Leda mùa thu năm 1988 Mục đích cung cấp thư viện cung cấp cấu trúc liệu giải thuật hiệu Leda phát triển nhanh chóng sử dụng rộng rãi nhiều lãnh vực 151 Thư viện Leda sử dụng cho hầu hết trình biên dịch C++ có hỗ trợ hệ điều hành Unix Windows Tài liệu Leda tham khảo tại: http://www.mpi-sb.mpg.de/LEDA/leda.html hay http://www.algorithmic-solutions.de/ Trong phần ta sử dụng phiên Leda 4.2 Cài đặt biên dịch thư viện LEDA với Visual C++ 6.0 Cài đặt thư viện Leda với Visual C++ 6.0 Thực theo bước sau: • Cài đặt Microsoft Visual C++ 6.0 (giả sử vị trí cài đặt C:\Program Files\Microsoft Visual Studio\VC98) • Cài thư viện Leda vào thư mục mong muốn (giả sử C:\Algorithmic Solutions\Leda-4.2) • Trong thư mục cài đặt Leda chép thư mục \incl\Leda vào thư mục cài đặt Visual C++ 6.0 \include\ • Trong thư mục cài đặt Leda chép tất file lib vào thư mục cài đặt Visual C++ 6.0 \lib\ Tạo biên dịch ứng dụng sử dụng Leda với Visual C++ 6.0 Thực theo bước sau: • Tạo project dạng Win32 console application Trong class wizard chọn empty project nhấn Finish Sau thêm mã nguồn viết ứng dụng • Thiết lập thuộc tính project sau: o Chọn Menu Project \ Setting o Chọn tab Link Trên mục Object\Library modules, nhập vào thư viện Leda sau: libD3_md.lib libG_md.lib libGeoW.lib libL_md.lib libP_md.lib libW_md.lib user32.lib gdi32.lib comdlg32.lib shell32.lib advapi32.lib wsock32.lib o Chọn tab C/C++ Trong mục Project Option, sửa /MLd thành /MD o Chọn Ok • Save Project, biên dịch 7.3 Framework tính giản đồ Voronoi Trong phần này, ta giới thiệu framework tính giản đồ Voronoi dựa giải thuật straight forward incremental nêu phần 6.3 6.4 Frame work xây dựng dựa khái niệm giản đồ Voronoi bao gồm site, bisector, vertex, edge, region, algorithm diagram Khi cần sử dụng framework để xây 152 dựng giản đồ Voronoi, ta cần xây dựng class kế thừa từ base class xây dựng sẵn sử dụng lại class sẵn có phù hợp 7.3.1 Các abstract class cho framework Phần ta giới thiệu abstract class cho site, bisector, vertex, edge, region, algorithm diagram để tính giản đồ Voronoi Với class ta giới thiệu vài tác vụ Abstract class cho site – class site_base Định nghĩa Class site_base mô tả loại site tổng quát mặt phẳng, loại site có tọa độ cách tính khoảng cách riêng tới điểm mặt phẳng Các tác vụ site xây dựng cho mục đích tính giản đồ Voronoi lẫn mục đích đồ họa tương tác cửa sổ giao diện Tác vụ virtual double distance(const point &q) const = hàm tính khoảng cách từ site tới điểm q mặt phẳng virtual void draw_site(window &w, const site_param &sp) const = hàm vẽ site lên sổ w với thông tin đồ họa site đặc tả cấu trúc site_param virtual bool create_site(const point &a, window &w, const site_param &sp) = tạo site cách sử dụng chuột bàn phím để vẽ cửa sổ hiển thị Hiện thực Tùy theo mục đích sử dụng, người dùng phải thực toàn phần tác vụ abstract nêu Abstract class cho bisector – class bsec_base Định nghĩa Class bisector_base, biểu diễn bisector hai site mặt phẳng Bisector đường thẳng point site thông thường, apollonius circle trường hợp MW, Mỗi bisector lưu giữ thông tin tới hai site trái phải tạo lên bisector Tác vụ virtual bool calculate_bisector(const site_base *x, const site_base *y) = tính tốn bisector hai site virtual void draw_bisector(window &w, const color &c = black) const = hàm vẽ bisector lên cửa sổ với màu c 153 Hiện thực Abstract class cho vertex – class vertex_base Định nghĩa Class vertex_base biểu diễn vertex tổng quát mặt phẳng Cần ý đây, ta không giới hạn vertex điểm mặt phẳng mà mở rộng hơn, vertex ta mơ tả đối tượng hình học Điều tạo thuận lợi cho việc phát triển sau cho phép khả xây dựng giản đồ Voronoi với trường hợp suy biến Tác vụ virtual void draw_vertex(window &w, const color &cb, const color &ci) const hàm vẽ vertex cửa sổ với màu biên cb màu ci Hiện thực Với vertex point, người sử dụng nên xây dựng lại hàm vẽ vertex hàm vẽ vertex mặc định với kiểu vertex point Đồng thời mặc định vertex real-vertex Abstract class cho edge – class edge_base Định nghĩa Class edge_base biểu diễn edge tổng quát giản đồ Voronoi Edge segment trường hợp point site thông thường, arc trường hợp MW, polyline trường hợp MWCD, Mỗi cạnh lưu trữ thông tin source target vertex, site mà cạnh thuộc phân vùng Tác vụ virtual void draw_edge(window &w, const color &cb, const color &ci) const = hàm vẽ cạnh với màu biên cb màu ci site_base* get_site() const lấy trỏ tới site có cạnh nằm biên phân vùng Hiện thực Trong trường hợp weighted site, phát sinh trường hợp phân vùng bao phân Khi ta phải sử dụng fake vertex để đảm bảo cạnh có source target vertex Abstract class cho region – class reg_base Định nghĩa 154 Class reg_base mô tả region site mặt phẳng, tương tự edge, region có dạng Mỗi region lưu giữ thông tin site mà region thuộc site Tác vụ virtual bool calculate_region(const bsec_base *bs) = hàm tính giao region bisector bs virtual void draw_region_bd(window &w, const color &c = black) const = hàm vẽ biên region virtual void draw_region_int(window &w, const color &c = white) const = hàm vẽ vùng bên region Hiện thực Tùy theo nhu cầu sử dụng mà người dùng thực tồn hay nhóm tác vụ cần thiết Abstract class cho giải thuật Định nghĩa Các abstract class cho giải thuật thực giải thuật tính giản đồ Voronoi, đồ thị Delaunay, giải vấn đề khác point location, với giải thuật khác straight-forward, incremental Tác vụ virtual void clear_diagram() xóa bỏ tồn thơng tin giản đồ virtual bool call_properties_panel(panel &p, window &w) gọi panel thiết lập thuộc tính giải thuật virtual void calculate_voronoi(window &w, const vd_param &vp) tính tốn giản đồ Voronoi virtual void draw_voronoi(window &w, const vd_param &vp) const vẽ giản đồ Voronoi lên cửa sổ với thông số đồ họa đặc tả cấu trúc vd_param virtual void calculate_delaunay(window &w, const vd_param &vp) tính tốn đồ thị Delaunay virtual void draw_delaunay(window &w, const vd_param &vp) const vẽ đồ thị Delaunay với thông số đồ họa đặc tả cấu trúc vd_param virtual void construct_space() xây dựng cấu trúc tìm kiếm cho point location virtual void draw_space(window &w, const color &cb, const color &ci) const vẽ cấu trúc tìm kiếm lên cửa sổ virtual void construct_voronoi_graph() xây dựng đồ thị có hướng biểu diễn giản đồ Voronoi virtual void draw_voronoi_graph(window &w, const color &cb, const color &ci) const 155 vẽ đồ thị Voronoi lên hình với màu biên cb màu ci virtual void construct_delaunay_graph() xây dựng đồ thị có hướng biểu diễn đồ thị Delaunay virtual void draw_delaunay_graph(window &w, const color &cb, const color &ci) const vẽ đồ thị Delaunay lên hình với màu biên cb màu ci virtual void point_location(const point &p, list &l) const xác định danh sách l site gần point p virtual vd_site* create_site() = tạo handle tới đối tượng site virtual vd_reg* create_region() = tạo handle tới đối tượng region virtual vd_bsec* create_bisector() = tạo handle tới đối tượng bisector virtual vd_vertex* create_vertex() = tạo handle tới đối tượng vertex virtual vd_edge* create_edge() = tạo handle tới đối tượng edge Hiện thực Với loại giản đồ Voronoi ta có kiểu site, bisector, vertex, edge, region khác Khi xây dựng giải thuật cho kiểu giản đồ Voronoi hàm abstract tạo đối tượng site, bisector, vertex, edge, region tương ứng với kiểu giản đồ giao cho đối tượng handle quản lý Các đối tượng framework sử dụng q trình tính tốn Ngồi tác vụ nêu trên, algorithm base class nhiều tác vụ khác, để tránh phức tạp, ta không liệt kê Abstract class cho diagram – class vd_base Định nghĩa Class vd_base, base class cho việc tính giản đồ Voronoi, đồ thị Delaunay, point location tác vụ tương tác khác chương trình Class vd_base quản lý danh sách site, thao tác thêm, xóa, thay đổi site, quản lý vấn đề nhập xuất, tương tác với người sử dụng, lựa chọn giải thuật khác để tính tốn giản đồ Tác vụ virtual string get_algorithm() const = hàm lấy tên giải thuật sử dụng virtual bool set_algorithm(int alg) = hàm thiết lập giải thuật tính giản đồ Hiện thực 156 Class vd_base chứa danh sách site trỏ tới loại giải thuật sử dụng Tùy theo kiểu giải thuật thiết lập hàm set_algorithm() mà giải thuật tương ứng gọi thực thi Class chứa nhiều hàm phục vụ cho nhập xuất, tương tác với người dùng, để tránh phức tạp hóa vấn đề ta khơng trình bày 7.3.2 Các handle class Các handle class xây dựng nhằm mục đích tạo điểm quản lý tập trung cho loại site, bisector, vertex, edge, region, khác để sử dụng thống giải thuật Với base class site, bisector, vertex, edge, region có base class tương ứng vd_site, vd_bsec, vd_vertex, vd_edge, vd_region Mỗi handle class tương ứng với site, bisector, vertex, edge, region tổng quát, chứa trỏ tới site_base, bsec_base, vertex_base, edge_base, reg_base tương ứng ngồi cịn chứa thông tin bổ trợ khác Bên cạnh tác vụ giống với base class, handle class cịn có tác vụ riêng xây dựng sẵn Các handle class sử dụng abstract class cho giải thuật Class vd_site Handle class cho loại site Chứa thông tin khác cho site màu sắc, nội dung, vd_site(stype) tạo handle tới site có id stype void set_site_ref(site_base *site) thiết lập handle tới đối tượng site_base Class vd_bsec Handle class cho loại bisector vd_bsec(btype) tạo handle tới bisector có id btype void set_bsec_ref(bsec_base *bs) thiết lập handle tới đối tượng bsec_base Class vd_vertex Handle class cho loại vertex vd_vertex(vtype) tạo handle tới vertex có id vtype void set_vertex_ref(vertex_base *vert) thiết lập handle tới đối tượng vertex_base Class vd_edge Handle class cho loại edge vd_edge(etype) tạo handle tới edge có id etype 157 void set_edge_ref(edge_base *edge) thiết lập handle tới đối tượng edge_base Class vd_reg Handle class cho loại region vd_reg(rtype) tạo handle tới region có id rtype void set_reg_ref(reg_base *reg) thiết lập handle tới đối tượng reg_base Ghi chú: Các tác vụ khác không liệt kê 7.4 Mở rộng nghiên cứu Giản đồ Voronoi với trọng số ta biết với point site thơng thường có nhiều dạng trọng số cộng, nhân, Trong phần ta thử xem xét số kết dạng trọng số khác Hình 7.4.1: Giản đồ Voronoi với trọng số nhân trọng số cộng dựa convex distance function 158 Chương 8: Kết luận Trong đề tài ta xây dựng lý thuyết khảo sát tính chất giản đồ Voronoi với hàm khoảng cách hàm convex distance site có thêm trọng số, đưa giải thuật để tính giản đồ Voronoi trường hợp Đồng thời ta xây dựng framework tổng quát cho phép xây dựng loại giản đồ Voronoi Bên cạnh kết đạt với giản đồ Voronoi dựa convex distance function với trọng số, ta thu kết cho việc xây dựng giản đồ Voronoi trường hợp trọng số nhân thơng thường Chương trình giải thuật xây dựng mang tính tương tác cao với người sử dụng Cho phép người sử dụng dễ dàng thao tác tìm hiểu tính chất loại giản đồ Voronoi khác Hiện thời, đề tài đề cập đến việc xây dựng giản đồ Voronoi dựa convex distance function với trọng số mặt phẳng Các nghiên cứu không gian ba chiều chưa thực Giản đồ Voronoi dựa convex distance function không gian ba chiều số tác giả nghiên cứu, kết thu phức tạp Độ phức tạp tăng thêm nhiều khảo sát với trọng số ta thực mặt phẳng Do vậy, ta không đề cập đến phạm vi đề tài 159 Tài liệu tham khảo [1] F Aurenhammer and R Klein Voronoi Diagrams In J.-R Sack and J Urrutia, editors, Handbook of Computational Geometry Elservier Science Publishers B.V North-Holland, Amsterdam, 1999 [2] F Aurenhammer Voronoi diagrams: A survey of a fundamental geometric data structure ACM Comput Surv., 23(3):345-405, 1991 [3] F Aurenhammer and H Edelsbrunner An optimal algorithm for constructing the weighted Voronoi diagram in the plane Pattern Recogn., 17:251-257, 1984 [4] C Borgan Coverage problem in wireless sensor and RFID systems Ph.D Thesis, Purdue University, 2005 [5] T H Cormen, C E Leiserson, and R L Rivest Algorithms The MIT Press Cambride, Massachusetts, London, England, 1997 [6] D T Cap Giai tich ham Nha Xuat Ban Giao Duc, 2003 [7] R Descartes Principia Philoshophiae Ludovicus Elzevirius, Amsterdam, 1644 [8] G L Dirichlet Über die Reduktion der positiven quadratischen Formen mit drei unbestimmten ganzen Zahlen J Reine Angew Math., 40:209-227, 1850 [9] S Drysdale Voronoi diagrams: Application from Archaology to Zoology Regional Geometry Institute, Smith College, July 19, 1993 [10] R Dwyer Higher-dimensional Voronoi diagram in linear expected time Dicrete and Computational Geometry, 6:343-367, 1991 [11] A Forrest Computational Geometry In proceedings of Royal Society of London, vol.321, serie A, pp 185-195, 1971 [12] S J Fortune A sweepline algorithm for Voronoi diagrams Algorithmica, 2:153174, 1987 [13] O Foster Analysis I Überarbeitete Auflage, Vieweg 1999 [14] M.Gahegan and I Lee Data structures and algorithms to support interactive spatial analysis using dynamic Voronoi diagrams Computers, Environment and Urban Systems, Vol 24, No 6, pp 509-537, 2000 [15] C M Gold and L Hugo Modeling Oceanographic Data with the ThreeDimensional Voronoi Diagram International Congress, ISPRS Istanbul, July 2004 [16] P J Green and R R Sibson Computing Dirichlet tessellations in the plane Comput J., 21:168-173, 1978 [17] L Guibas, D Knuth, and M Sharir Randomized incremental construction of Delaunay and Voronoi Diagram Algorithmica, 7:381-413, 1992 [18] L J Guibas and J Stolfi Primitives for the manipulation of general subdivisions and the computation of Voronoi diagrams ACM Trans Graph., 4(2):74-123, Apr 1985 [19] C Icking, R Klein, P Köllner, and L Ma Java Applets for the dynamic visualization of Voronoi diagrams In Abstracts 13th European Workshop Comput Geom., pages 46-47, 1997 [20] C Icking, R Klein, N M Lê, and L Ma Convex Distance Functions in 3-Space are Different Fundam Inform 22, pp 331-352, 1995 [21] C Icking, R Klein, N M Lê, and L Ma On Bisectors for Convex Distance Function in 3-Space Proc 11th Canad Conf Comput Geom., Vancouver, Canada, 1999 [22] C Icking, R Klein, L Ma, S Nickel, and A Weißler On Bisector for Different Distance Functions In Proc 15th Annu ACM Sympos Comput Geom., pages 291299, 1999 [23] C Jones, S V Raković, and P Grieder Computation of Voronoi Diagrams and Delaunay Triangulation via Parametric Linear Programming Technical Report AUT04-03 2004 [24] R Klein and F Dehne “The Big Sweep”: On the Power of the Wavefront Approach to Voronoi Diagrams Algorithmica, 17(1):19-32, 1997 [25] R Klein, K Mehlhorn, and S Meiser Randomized incremental construction of abstract Voronoi diagrams Technical Report MPI-I-93-105, Max-Planck-Institut Inform., Saarbrücken, Germany, 1993 [26] C Lawson Properties of the n-dimensional triangulations Computer Aided geometric design, vol.3, pp 231-246, 1986 [27] D T Lee Computational Geometry CRC Handbook of Computer Science & Engineering, 1996 [28] D T Lee Two-Dimensitional Voronoi Diagrams in the Lp-Metric J ACM, 27(4):604-618, 1980 [29] I Lee and M.Gahegan Interactive analysis using Voronoi diagrams: algorithms to support dynamic update from a generic triangle-based data structure Transactions in GIS, Vol 6, No 2, pp 89-114, 2002 [30] N M Lê Abstract Voronoi Diagram in space J Comput Syst Sci 68(1): 41-79 (2004) 1999 [31] L Ma and C Icking A Tight Bound for the Complexity of Voronoi Diagrams under Polyhedral Covex Distance Function in 3D Proc 33rd Annu ACM Sympos Theory Comput., Crete, Greece, pp 316-321, 2001 [32] L Ma Bisectors and Voronoi Diagrams for Convex Distance Functions Dissertation, Department of Computer Science, FernUniversität Hagen, Technical Report 267, 2000 [33] G Marina Proximity and Applications in General Metrics Ph.D Thesis, Calgary, Alberta, 1998 [34] K Mehlhorn and St Näher The LEDA Platform of Combinatorial and Geometric Computing Cambridge University Press, 1999 [35] A Okabe, B Boots, and K Sugihara Spatial tesselations: Concepts and Applications of Voronoi Diagrams John Wiley & Sons, UK, 1992 [36] J O’rourke Computational Geometry in C Cambridge University Press, second edition, 1998 [37] J Pearce Techniques for defining school catchment areas for comparison with census data Computers, Environment and Urban Systems, Volume 24, Number 4, July 2000, pp 283-303(21) [38] K H Rosen Toan hoc roi rac ung dung tin hoc Nha Xuat Ban Thong Ke, 2002 [39] M Shamos Computational Geometry Ph.D Thesis, Yale University, 1977 [40] M Shamos and F Preparata Computational Geometry: An Introduction SpringerVerlag, USA, 1985 [41] M I Shamos and D Hoey Closest-point problems In Proc 16th Annu IEEE Sympos Found Comput Sci., pages 151-162, 1975 [42] S I Trubin Information Space Mapping with Adaptive Multiplicatively Weighted Voronoi Diagrams Msc Thesis, Oregon State University, 2006 [43] H Tuy Giai tich hien dai - Tap I, II, III Nha Xuat Ban Giao Duc, 1978 [44] D Watson Computing the n-dimensional Delaunay tesselation with application to Voronoi polytopes Computer journal, 24:167-172, 1981 [45] K Wong and H A Müller An Efficient Implementation of Fortune’s Plane-Sweep Algorithm for Voronoi Diagrams Technical report, Department of Computer Science, University of Victoria, Victoria, B.C., October 1991 [46] M Yvinec Algorithmic Geometry Cambridge University Press, Cambridge, UK, 1998 [47] P Kelly and M Weiss Geometry and Convexity: A Study in Mathematical Methods John Wiley & Sons, New York, NY, 1979 Web Resource: [48] http://www.nirarebakun.com/voro/emwvoro.html [49] http://www.voronoi.com/ [50] http://netlib.bell-labs.com/ [51] http://www.pi6.fernuni-hagen.de/ [52] http://mathworld.wolfram.com/ Chỉ mục B U bisector 5, 26, 48 bisector separating point 38 bisector special point 38 unit circle 14 upper support line 19 V C central projection 18 chosen bisector 30 convex distance function 14 D Delaunay Desargue 21 E Euler 22 F foot-point 18 I incremental 6, 116 L lower support line 19 M MWVD 78 MWCD 1, 23 S star-shaped sweep-plane sweep-line 90 strictly convex 14 smooth convex 14 Voronoi Voronoi diagram 5, 23 Voronoi edge 5, 75 Voronoi region 5, 75 Voronoi vertex 5, 75 ... Straightforward Giải thuật dựa định nghĩa giản đồ Voronoi (Định nghĩa 3.1.1) Với site p, vùng Voronoi tính cách tính giao n–1 nửa mặt phẳng Kết thu giản đồ Voronoi tập S Giải thuật có độ phức tạp... giải thuật chậm số giải thuật để tính giản đồ Voronoi biết 3.3.3 Giải thuật Incremental Giải thuật tăng dần (incremental) đơn giản lại phương pháp thông dụng nghiên cứu lẫn thực nghiệm giản đồ. .. tưởng giải thuật sau, tập site S phân chia đệ quy thành tập site nhỏ sau giản đồ Voronoi cho tập site tính tốn sau giản đồ Voronoi trộn (merge) với để tạo giản đồ Voronoi kết Do bước merge hai đồ