Về thuật toán tìm đường đi ngắn nhất giữa hai điểm trong một đa giác đơn của LEE và PREPARATA

55 816 1
Về thuật toán tìm đường đi ngắn nhất giữa hai điểm trong một đa giác đơn của LEE và PREPARATA

Đ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

Mục lục Mở đầu Kiến thức sở 1.1 1.2 1.3 1.4 Lý thuyết đồ thị 1.1.1 Định nghĩa đồ thị 6 1.1.2 Đường đồ thị 1.1.3 Một số tính chất đường đồ thị Tam giác phân đa giác 10 1.2.1 Đường gấp khúc đơn điệu đa giác đơn điệu 10 1.2.2 Các tính chất Độ phức tạp thuật toán 12 15 1.3.1 Khái niệm độ phức tạp thuật toán 15 1.3.2 1.3.3 1.3.4 Các định nghĩa Các tính chất Cách tính độ phức tạp thuật toán 16 17 19 1.3.5 Phép tính sở 1.3.6 Dãy phép tính Thuật toán tìm tiếp tuyến O’Rourke 19 19 22 Thuật toán Dijkstra thuật toán tam giác phân 24 2.1 Thuật toán Dijstra 24 2.1.1 Thuật toán Dijkstra 24 2.1.2 2.1.3 Chứng minh tính đắn thuật toán Độ phức tạp thuật toán Dijkstra 27 27 2.2 Thuật toán tam giác phân đa giác đơn 30 2.2.1 Phân chia đa giác đơn thành đa giác đơn điệu 31 2.2.2 Thuật toán tam giác phân đa giác đơn điệu 31 2.2.3 Thuật toán tam giác phân đa giác đơn 36 Thuật toán tìm đường ngắn hai điểm 37 3.1 Thuật toán Lee Preparata 37 3.2 3.1.1 Các định nghĩa 37 3.1.2 3.1.3 Các tính chất Thuật toán tạo hình ống tay (sleeve) 40 40 3.1.4 3.1.5 Độ phức tạp thuật toán SLEEVE(P) 41 Thuật toán Phễu (Funnel) Lee Preparata 42 3.1.6 Chứng minh tính đắn thuật toán 43 3.1.7 Độ phức tạp thuật toán Phễu Thuật toán tìm đường ngắn 3.2.1 Thuật toán thuật toán 44 47 48 3.2.2 3.2.3 48 48 Độ phức tạp thuật toán Chứng minh tính đắn thuật toán Kết luận 52 Tài liệu tham khảo 53 Danh sách hình vẽ 1.1 1.2 Đồ thị hữu hạn Minh hoạ điểm nằm bên trái, bên phải đường thẳng 11 1.3 1.4 Minh hoạ đa giác Minh hoạ tồn đỉnh lồi 12 13 1.5 Minh hoạ tính chất đường chéo 13 1.6 1.7 Minh hoạ đường gấp khúc đơn điệu đa giác đơn điệu 15 Mô tả quan hệ hai hàm cg(n) f (n) 16 1.8 Minh hoạ thuật toán tìm tiếp tuyến 23 2.1 2.2 2.3 Mô tả đồ thị có trọng số Quá trình tìm đường ngắn theo thuật toán Minh hoạ đa giác Y - đơn điệu 28 29 33 2.4 Minh hoạ trình tam giác hoá đa giác Y- đơn điệu 35 3.1 3.2 Minh hoạ đối ngẫu Minh hoạ hình ống tay (Sleeve) 38 38 3.3 3.4 3.5 Minh hoạ Phễu (Funnel) Minh hoạ hai trường hợp xác định Phễu Minh hoạ tính chất đường ống tay 39 39 40 3.6 3.7 3.8 Minh hoạ tính chất Phễu Minh hoạ hình ống tay(Sleeve) Quá trình tìm đường ngắn theo thuật toán Phễu 41 44 47 3.9 Minh họa trình tìm đường ngắn từ a đến b 51 Mở đầu Hình học tính toán lĩnh vực nghiên cứu để tìm thuật toán hiệu thực thi máy tính cho toán hình học Trong hình học tính toán thường giải toán kinh tế, như: Tìm địa điểm để đặt nhà máy, đặt trạm điện, đặt bến xe, tìm đường ngắn cho tàu biển, Tìm đường ngắn hai điểm miền hình học vấn đề hình học tính toán Điều có nhiều ứng dụng kỹ thuật rôbốt, kỹ thuật tự động, công nghiệp, thông tin địa lý Thực tế thu hút nhiều nhà toán học quan tâm nghiên cứu như: O’Rourke, Dijkstra, Preparata, Lee, Berg, Kreveld, Guibas, Hershberger, Leven Bài toán "Tìm đường ngắn hai điểm đa giác đơn"(với khoảng cách theo chuẩn Euclidean) mặt phẳng nhiều nhà toán học đưa thuật toán khác để giải Năm 1984, Lee Preparata đưa thuật toán để giải toán thông qua việc tam giác phân đa giác (xem [13]) năm 1987, Guibas, Hershberger, Leven, Sharir Tarjan có cải tiến thuật toán (xem [12]) Trong luận văn nghiên cứu thuật toán Lee Preparata (đã có cải tiến) để giải toán Với lý chọn đề tài luận văn là:"Về thuật toán tìm đường ngắn hai điểm đa giác đơn Lee Preparata" Luận văn trình bày ba chương: Chương Kiến thức sở Với quan điểm chương sở, chương trình bày hệ thống kiến thức lý thuyết đồ thị, tam giác phân đa giác, độ phức tạp thuật toán, thuật toán tìm tiếp tuyến O’Rourke nhằm giúp làm sở cho việc nghiên cứu thuật toán Lee Preparata Chương Thuật toán Dijkstra thuật toán tam giác phân đa giác Trong chương trình bày thuật toán Dijkstra, thuật toán phân chia đa giác đơn thành đa giác y - đơn điệu, thuật toán tam giác phân đa giác y - đơn điệu, thuật toán tam giác phân đa giác đơn Chương Thuật toán tìm đường ngắn hai điểm đa giác đơn Lee Preparata Trong chương trình bày thuật toán tạo hình ống tay, thuật toán Phễu Lee Preparata có cải tiến Guibas, Hershberger, Sharir Tarjan (xem [12]) Trình bày chi tiết thuật toán để giải toán "tìm đuờng ngắn hai điểm đa giác đơn" Luận văn hoàn thành hướng dẫn tận tình thầy giáo TS Phan Thành An Tác giả xin bày tỏ lòng biết ơn sâu sắc tới thầy xin chân thành cảm ơn thầy giáo trực tiếp giảng dạy chuyên ngành với ý kiến đóng góp học tập làm luận văn Cũng tác giả xin gửi lời cảm ơn thầy cô giáo khoa Toán khoa Đào tạo sau đại học, anh Lê Đình Hậu cao học 13 Hình học - Tôpô, bạn Dương Quốc Nam, bạn học viên lớp cao học 14 Hình học - Tôpô, cán giáo viên trường THPT Anh Sơn 3, gia đình bạn bè động viên, giúp đỡ trình học tập nghiên cứu suốt khóa học Chương Kiến thức sở Trong chương trình bày số kiến thức lý thuyết đồ thị, đa giác đơn điệu, phép tam giác phân đa giác, độ phức tạp thuật toán thuật toán tìm tiếp tuyến O’Rourke Đây kiến thức sở cho chương chương 1.1 Lý thuyết đồ thị 1.1.1 Định nghĩa đồ thị Chúng ta nhìn thấy sử dụng đồ tuyến đường giao thông thành phố, sơ đồ tổ chức quan, sơ đồ khối tính toán thuật toán, sơ đồ mạng máy tính Đó ví dụ cụ thể đồ thị Đồ thị (graph) mô hình toán học ứng dụng nhiều lĩnh vực khoa học, kỹ thuật định nghĩa sau Định nghĩa 1.1.1 (xem [5]) Đồ thị cặp G = (V, E) đó: • V tập đỉnh (vertex) • E ⊆ V × V tập cạnh (edge) Ví dụ 1.1.1 Đồ thị G cho hình 1.1 với tập đỉnh V = {a, b, c, d, e} tập cạnh E = {(a, b), (a, c), (b, c), (d, b), (d, c), (e, a), (e, b), (e, d)} b c a e d Hình 1.1: Đồ thị hữu hạn Nếu (a, b) cạnh đồ thị ta nói đỉnh b kề với đỉnh a hai đỉnh a b kề với cạnh (a, b) Trong đồ thị ví dụ 1.1.1 hai đỉnh b c kề với đỉnh a, ba đỉnh a, b d kề với đỉnh e Do vậy, ta định nghĩa đồ thị ánh xạ kề sau: Định nghĩa 1.1.2 (xem [5]) Đồ thị G cặp G = (V, F ), đó: • V tập đỉnh • F : V −→ Z, F ánh xạ cho ta liên hệ đỉnh với tập đỉnh kề với (ánh xạ kề) Sự tương đương hai định nghĩa thể mệnh đề sau ∀x, y ∈ V : (x, y) ∈ E ⇐⇒ y ∈ F (x) Về chất, đồ thị tập hợp đối tượng biểu diễn đỉnh đối tượng có quan hệ nhị nguyên biểu diễn cạnh Cặp đỉnh (x, y) ∈ E không thứ tự gọi cạnh vô hướng, có thứ tự gọi cạnh có hướng Vì thế, thường phân đồ thị thành hai lớp Định nghĩa 1.1.3 (xem [5]) Đồ thị chứa cạnh vô hướng gọi đồ thị vô hướng, đồ thị chứa cạnh có hướng gọi đồ thị có hướng Hiển nhiên, đồ thị vô hướng biểu thị đồ thị có hướng cách thay cạnh vô hướng hai cạnh có hướng tương ứng Định nghĩa 1.1.4 (xem [5]) Đồ thị G = (V, E) gọi đối xứng nếu: ∀x, y ∈ V : (x, y) ∈ E ⇔ (y, x) ∈ E Các đồ thị vô hướng đối xứng Định nghĩa 1.1.5 (xem [5]) Đồ thị G = (V, E) mà cặp đỉnh nối không cạnh gọi đơn đồ thị (thường gọi tắt đồ thị) đồ thị có cặp đỉnh nối với nhiều cạnh gọi đa đồ thị Ta biễu diễn hình học cho đồ thị sau: Trên mặt phẳng biễu diễn đỉnh vòng tròn nhỏ, biểu diễn cạnh vô hướng đoạn thẳng, biểu diễn cạnh có hướng mũi tên nối hai đỉnh đồ thị Định nghĩa 1.1.6 (xem [5]) Hai đỉnh đồ thị G gọi liên thông, đồ thị có đường vô hướng nối chúng với Đồ thị gọi liên thông cặp đỉnh đồ thị liên thông với Định nghĩa 1.1.7 (xem [5]) Bậc đỉnh đồ thị số cạnh kề với đỉnh 1.1.2 Đường đồ thị Giả sử G = (V, E) đồ thị Định nghĩa 1.1.8 (xem [5]) Đường đồ thị dãy đỉnh: x1 , x2 , , xi , xi+1 , , xk−1 , xk cho đỉnh dãy (không kể đỉnh đầu tiên) kề với đỉnh trước cạnh đó, nghĩa là: ∀i = 2, 3, , k − 1, k : (xi−1 , xi ) ∈ E Ta nói đường từ đỉnh đầu xi đến đỉnh cuối xk Số cạnh đường gọi độ dài đường Đường đơn đường mà đỉnh khác đôi Trong đồ thị, đỉnh nút đỉnh kề với Hai cạnh có đỉnh chung gọi hai cạnh kề Định nghĩa 1.1.9 (xem [5]) Đồ thị G gọi đồ thị có trọng số cạnh (i, j) đồ thị gán số nguyên không âm C(i, j) • Nhãn C(i, j) cạnh (i, j) đồ thị thường biễu diễn "chi phí" thực tế qua cạnh • Đường có trọng số bé nhất: – Độ dài đường đồ thị có trọng số tổng trọng số cạnh đường – Độ dài đường có trọng số bé từ đỉnh a đến đỉnh b gọi khoảng cách từ đỉnh a đến đỉnh b – Nếu đường từ a đến b ta đặt khoảng cách ∞ 1.1.3 Một số tính chất đường đồ thị Định lý 1.1.1 (xem [5]) Giả sử đồ thị G có n đỉnh Tồn đường từ đỉnh a đến đỉnh b đồ thị G tồn đường từ a đến b đồ thị với độ dài không vượt n − Chứng minh Giả sử có đường từ đỉnh a tới đỉnh b Ta chọn: 10 < a = x1 , x2 , , xk = b, x1 = xk > đường có độ dài ngắn Độ dài đướng k − Nếu k − ≤ n − định lý chứng minh Nếu ngượcc lại k > n − 1, nghĩa k > n, dãy đỉnh đường có hai đỉnh trùng nhau, chẳng hạn xi = xj Khi thì: < a = x1 , x2 , , xi , xi+1 , , xk−1 , xk = b > đường từ a đến b với độ dài ngắn Suy mâu thuẫn với giả thiết đường ngắn Định lý 1.1.2 (xem [5]) Tổng tất bậc đỉnh đồ thị hai lần số cạnh đồ thị Chứng minh Ta tính bậc đỉnh Mỗi đỉnh thuộc cạnh bậc tăng thêm 1, mà cạnh có hai đỉnh ✷ 1.2 1.2.1 Tam giác phân đa giác Đường gấp khúc đơn điệu đa giác đơn điệu Trước hết ta quy ước đường thẳng ab đường thẳng qua hai − → điểm phân biệt a b theo hướng ab Định nghĩa 1.2.1 (xem [14]) Trong mặt phẳng R2 , cho điểm a(x1 ; y1) ; b(x2 ; y2 ); c(x3 ; y3 ) Ký hiệu S(a, b, c) diện tích đại số abc, : S(a, b, c) = (x2 − x1 )(y3 − y1 ) − (x3 − x1 )(y2 − y1 ) 41 x u v s a w Hình 3.6: Minh hoạ tính chất Phễu Thuật toán 3.1.1 (SLEEVE(P)) Input: Một phép tam giác phân T đa giác đơn P Output: Một đa giác đơn P đường ống tay (Sleeve) Step Tạo đối ngẫu G = (V, E) phép tam giác phân đa giác đơn P, s ∈ ∆(s), t ∈ ∆(t) với ∆(s), ∆(t) ∈ V Step Thực DIJKSTRA(G, ∆(s), ∆(t)) Đặt P = k i=1 ∆i , ∆i đỉnh đường ngắn từ ∆(s) đến ∆(t)(i = 1, k) 3.1.4 Độ phức tạp thuật toán SLEEVE(P) (Xem[12]) - Step có độ phức tạp O(n) - Step có độ phức tạp O(n2 ) (theo mục 2.1.3 chương 2) Vậy độ phức tạp thuật toán là: O(n2 ) 42 3.1.5 Thuật toán Phễu (Funnel) Lee Preparata Bài toán 3.1.2 Cho hình ống tay P , xác định s t Hãy tìm thuật toán xác định đường ngắn từ s đến t Dưới trình bày thuật toán Phễu Lee Preparata có cải tiến Guibas, Hershberger, Sharir Tarjan (xem [12]) để giải Giả sử d = uw đường chéo P , với phễu thời F = Fuw danh sách phân loại [ul , ul−1 , , u1 , a, w1 , , wk ], a = u0 = w0 đỉnh F , Π(a, u) = [u0 , , ul ], Π(a, w) = [w0 , , wk ] ul = u, wk = w Chúng ta kí hiệu thuật toán đỉnh phễu CU SP (F ) Thuật toán s với CU SP (F ) = s tiếp tục cách đệ quy sau 43 Thuật toán 3.1.2 (FUNNEL(F )) (Xem[12], trang 212) Input: Đa giác P hình ống tay Output: Các đỉnh v = CU SP (F ) Giả sử u, v điểm điểm cuối F , a = CU SP (F ) (như F = Π(a, u) ∪ Π(a, w)) Giả sử ∆uwx tam giác phép tam giác phân T đa giác P với đường chéo uw cạnh tam giác (a) Tìm kiếm phần tử v F , cho vx tiếp F v (nếu đường thẳng ax không cắt F v = a) Việc tìm kiếm hoàn toàn tương tự việc tìm kiếm tiếp tuyến đa giác lồi từ điểm bên (theo thuật toán 1.4.1) Chia F ∪ x thành hai phễu F1 = [u, , v, x] F2 = [x, v, , w] Nếu v ∈ Π(a, u) đặt CU SP (F1 ) := v, CU SP (F2 ) := a Mặt khác, v ∈ Π(a, w) CU SP (F1 ) := a, CU SP (F2 ) := v (b) Đặt Π(s, x) := Π(s, v) ∪ vx (c) Nếu ux đường chéo P gọi FUNNEL(F1 ) cách đệ quy (d) Nếu wx đường chéo P gọi FUNNEL(F2 ) cách đệ quy (e) Nếu t nằm tam giác ∆uwx ta chọn t := x Kết thuật toán cho ta đường ngắn Z từ s đến t với Z = [s = v1 , v2 , , vm , t] Trong vi , i = 1, , m đỉnh Phễu F 3.1.6 Chứng minh tính đắn thuật toán Ta kí hiệu đoạn thẳng ab ab • Thuật toán dừng sau hữu hạn bước đa giác P hình ống 44 tay với hữu hạn đỉnh • Thuật toán kết thúc tìm đường ngắn từ s đến t thật vậy: Ta cần chứng minh Z = [s = v1 , v2 , , vm , t] đường ngắn từ s đến t Thật vậy, theo mệnh đề 3.1.1 phương pháp quy nạp, ta có: - Đường ngắn từ s đến v2 Π(s, v2 ) đoạn sv2 - Đường ngắn từ s đến v3 Π(s, v3 ) = Π(s, v2 ) ∪ v2 v3 - Đường ngắn từ s đến t Π(s, t) = Π(s, vm ) ∪ vm t Do Z = [s = v1 , v2 , , vm , t] đường ngắn từ s đến t Mặt khác, đa giác P đa giác đơn (theo nhận xét 3.1.1) nên đường ngắn từ s đến t (theo định lý 3.1.1) 3.1.7 ✷ Độ phức tạp thuật toán Phễu (Xem[12]) Độ phức tạp thuật toán O(n) Ví dụ 3.1.1 Cho đa giác P = s, a1 , a2 , , a14 hình ống tay hình 3.7 Hãy dựa vào thuật toán Phễu xác định đường ngắn từ s tới t (t nằm P ) a6 s a1 a5 a3 d1 d10 a2 a14 d2 d3 a13 a12 a4 d4 d5 d6 d9 d11 d13 d12 t a7 a9 a8 d8 d7 a10 a11 Hình 3.7: Minh hoạ hình ống tay(Sleeve) 45 Bước 1: (Minh hoạ hình 3.8(P1 )) Đối với đường chéo d1 , ta có: F = [a1 , s, a14 ]; CUSP(F): = s; với x = a2 , Π(s, a2 ) := sa2 v: = s Khi đó: F1 = [a1 , s, a2 ]; F2 = [a2 , s, a14 ] Ta có a2 a14 đường chéo nên F = [a2 , s, a14 ] Bước 2: (Minh hoạ hình 3.8(P2 )) F = [a2 , s, a14 ]; với x = a13 , v: = s, Π(s, a13 ) := sa13 Khi đó: F1 = [a2 , s, a13 ]; F2 = [a13 , s, a14 ] Ta có a2 a13 = d3 đường chéo nên F = [a2 , s, a13 ] Bước 3: (Minh hoạ hình 3.8(P3 )) F = [a2 , s, a13 ]; với x = a12 , v: = s, Π(s, a12 ) := sa12 Khi đó: F1 = [a3 , a2 , s, a12 ]; F2 = [a12 , s, a13 ] Ta có a3 a12 = d5 đường chéo nên F = [a3 , a2 , s, a12 ] Bước 4: (Minh hoạ hình3.8(P4 )) Đối với đường chéo d5 , d6 ta có: F = [a3 , a2 , s, a12 , a11 ]; v: = s Bước 5: (Minh hoạ hình 3.8(P5 )) F = [a3 , a2 , s, a12 , a11 ]; với x = a4 , a4 a2 tiếp tuyến F a2 v: = a2 , Π(s, a4 ) := Π(s, a2 ) ∪ a4 a2 Khi đó: F1 = [a3 , a2 , a4 ]; F2 = [a4 , a2 , s, a12 , a11 ] Ta có a4 a11 = d7 đường chéo nên F = [a4 , a2 , s, a12 , a11 ] Bước 6: (Minh hoạ hình 3.8(P6 )) F = [a3 , a2 , s, a12 , a11 ]; với x = a10 , a10 a2 tiếp tuyến F a2 v: = a2 , Π(s, a10 ) := sa2 ∪ a2 a10 Khi đó: F1 = [a4 , a2 , a10 ]; F2 = [a10 , a2 , s, a12 , a11 ] Ta có a4 a10 = d8 đường chéo nên F = [a4 , a2 , a10 ]; CUSP(F): = a2 Bước 7: (Minh hoạ hình 3.8(P7 )) Với x = a9 , Khi đó: F1 = [a5 , a4 , a9 ]; F2 = [a9 , a4 , a2 , a10 ] Ta có a5 a9 = d10 đường chéo nên F = [a5 , a4 , a9 ]; CUSP(F): = a4 Bước 8: (Minh hoạ hình 3.8(P8 )) 46 F1 = [a5 , a4 , a9 ]; Với x = a6 , v: = a4 Khi đó: Π(s, a6 ) := Π(s, a4 )∪a4 a6 ; F1 = [a5 , a4 , a6 ]; F2 = [a6 , a4 , a9 ] Ta có a6 a9 = d11 đường chéo nên F = [a6 , a4 , a9 ]; CUSP(F): = a4 ; với F = [a6 , a4 , a9 , a8 ] ta có Π(s, a6 ) := Π(s, a4 )∪ a4 a6 Bước 9: (Minh hoạ hình 3.8(P9 )) F = [a6 , a4 , a9 , a8 ] Với x = t, ta9 tiếp tuyến F a9 ; v: = a9 Khi đó: Π(s, t) := Π(s, a4 ) ∪ a4 a9 ∪ a9 t Vậy đường ngắn từ s tới t là: [s, a2 , a4 , a9 , t] s a6 a1 a5 a3 d1 d10 a2 d2 a14 s a4 d4 d5 d3 d6 a13 d9 d11 d13 d12 t a7 a9 a1 a5 a3 d1 a14 d2 a4 d4 d5 d3 a8 d8 d10 a2 d6 a13 d7 a12 a6 d9 a8 d7 a12 a10 (P1 ) (P2 ) a11 a11 a6 a1 s a5 a3 d1 a14 a7 a9 d8 a10 s d11 d13 d12 t d10 a2 d2 d3 a4 d4 d5 d6 a13 d9 a7 a9 a1 d8 a5 a3 d1 d10 a2 a14 d2 d3 a8 a4 d4 d5 d6 a13 d7 a12 d11 d13 d12 t a6 a10 (P3 ) a11 a7 a9 a8 d8 d7 a12 a10 a11 d9 d11 d13 d12 t (P4 ) 47 s a6 a1 a5 a3 d1 d10 a2 a14 s d2 a4 d4 d5 d3 d6 a13 d9 d11 d13 d12 t a7 a9 a1 a3 a14 d2 a14 a10 s a5 a3 d10 a2 d3 a4 d4 d5 d6 a13 d9 d11 d13 d12 t a7 a9 (P6 ) a6 a1 a5 a3 d1 a14 d10 a2 d2 d3 a8 d8 a4 d4 d5 d6 a13 d7 a12 d9 d11 d13 d12 t a7 a9 a8 d8 d7 a12 a10 a10 (P6 ) a11 a8 d8 a11 a1 a7 a9 d7 a12 a6 d2 d9 (P5 ) a11 d1 d6 a13 a10 s a4 d4 d5 d3 d11 d13 d12 t d10 a2 a8 d8 a5 d1 d7 a12 a6 a11 (P8 ) Hình 3.8: Quá trình tìm đường ngắn theo thuật toán Phễu 3.2 Thuật toán tìm đường ngắn hai điểm đa giác đơn Bài toán 3.2.1 Cho đa giác đơn P =< a1 , a2 , , an >, hai điểm s, t nằm đa giác P Hãy dùng thuật toán Lee Preparata xác định đường ngắn từ s đến t? Để giải toán ta sử dụng thuật toán sau: 48 3.2.1 Thuật toán thuật toán Thuật toán 3.2.1 Input: Đa giác đơn P = a1 , a2 , , an , hai điểm s, t thuộc P Output: Đường ngắn từ s đến t Step Thực phép tam giác phân TGP(P) (theo thuật toán 2.2.3), ta gọi phép tam giác phân T ) Step Với phép tam giác phân T ) thực SLEEVE(P) (theo thuật toán 3.1.1), ta đa giac P hình ống tay Step Thực FUNNEL(F ) (theo thuật toán 3.1.2) với hình ống tay P ) 3.2.2 Độ phức tạp thuật toán - Step có độ phức tạp O(n log n) (theo mục 2.2.3, chương 2) - Step có độ phức tạp O(n2 ) (theo mục 3.1.4) - Step có độ phức tạp O(n) (theo mục 3.1.7) Vậy độ phức tạp thuật toán O(n2 ) 3.2.3 Chứng minh tính đắn thuật toán • Thuật toán dừng sau hữu hạn bước vì: – Luôn tồn phép tam giác phân TGL(P) (theo định lý 1.2.1) đối ngẫu phép tam giác phân đồ thị hữu hạn điểm – Tồn hình ống tay SLEEVE(P) với hữu hạn đỉnh • Thuật toán kết thúc tìm đường ngắn từ s đến t vì: – Đường ngắn từ s đến t phải nằm hình ống tay (theo mệnh đề 3.1.1) 49 – Luôn tìm đường ngắn từ s đến t (theo tính đắn thuật toán FUNNEL(F )) – Đường ngắn từ s đến t (theo định lý 3.1.1) ✷ Ví dụ 3.2.1 Cho đa giác đơn P = p0 , p1 , p3 , , p12 hai điểm a b nằm P hình 3.9 (Q0 ) Hãy sử dụng thuật toán Lee Preparata tìm đường ngắn hai điểm a b • Phân chia đa giác P thành đa giác y - đơn điệu – Phân chia đa giác P thành hình thang nằm ngang (minh họa hình vẽ 3.9(Q1 )) – Nối đỉnh lùi phía với đỉnh hộ trợ: nối p1 với p3 , p4 với p6 , p8 với p10 Khi P phân chia đa giác Y - đơn điệu: P1 = p1 , p2 , p3 ; P2 = p4 , p5 , p6 ; P3 = p8 , p9 , p10 ; P4 = p0 , p1 , p3 , p4 , p6 , p7 , p8 , p10 , p11 (minh họa hình vẽ 3.9(Q2 )) • P1 , P2 , P3 tam giác nên ta cần tam giác phân đa giác y - đơn điệu P4 theo TGP1 (P) (minh họa hình vẽ 3.9(Q3 )) • Tìm hình ống tay chứa đường ngắn từ a đến b – Xác định đối ngẫu phép tam giácphân (minh họa hình vẽ 3.9(Q4 )) – Dựa vào DIJKSTRA(G, (a), (b)) ta xác định đường ngắn hai đỉnh (a) (b) đồ thị G (trong (a), (b) hai tam giác phép tam giác phân chứa hai điểm a, b) từ ta có hình ống tay (minh họa hình vẽ 3.9(Q5 )) • Dựa vào FUNNEL(F ) ta xác định đường ngắn từ a đến b (minh họa hình vẽ 3.9(Q6 ), 3.9(Q7 ), 3.9(Q8 )) 50 p2 p2 p5 p0 p1 a p5 p0 p1 b p3 a p4 b p3 p4 p6 p6 p11 p10 p11 p8 p9 p10 p8 p7 p9 (Q0 ) p2 p2 p5 p0 p5 p0 p1 p1 a b p3 p7 (Q1 ) a p3 p4 b p4 p6 p6 p11 p11 p10 p9 p10 p8 p8 p9 p7 (Q2 ) p7 (Q3 ) p2 p2 p5 p0 p5 p0 p1 a b p3 p1 b a p4 p3 p4 p6 p6 p11 p10 (Q4 ) p11 p8 p9 p10 p7 (Q5 ) p8 p9 p7 51 p2 p2 p5 p0 p5 p0 p1 p1 b a p3 b a p3 p4 p4 p6 p6 p11 p11 p10 (Q8 ) p10 p8 p9 p7 (Q8 ) p8 p9 p7 p2 p2 p5 p0 p5 p0 b p1 p1 b a p3 a p3 p4 p4 p6 p6 p11 p11 p10 p9 (Q8 ) p10 p8 p7 p8 p9 (Q9 ) p7 Hình 3.9: Minh họa trình tìm đường ngắn từ a đến b Kết luận Kết luận Trong luận văn đạt kết sau: • Trình bày khái niệm đồ thị chứng minh chi tiết tính chất đường đồ thị • Trình bày khái niệm đa giác, đường gấp khúc đơn điệu, đa giác y - đơn điệu, đỉnh lùi phía trong, phép tam giác phân đa giác chứng minh chi tiết số tính chất tam giác phân đa giác • Trình bày khái niệm chứng minh chi tiết tính chất độ phức tạp thuật toán, cách xác định độ phức tạp thuật toán Trình bày thuật toán tìm tiếp tuyến O’Rourke, độ phức tạp thuật toán • Trình bày thuật toán: Thuật toán Dijkstra, thuật toán phân chia đa giác đơn thành đa giác y - đơn điệu, thuật toán tam giác phân đa giác y - đơn điệu, thuật toán tam giác phân đa giác đơn, xác định độ phức tạp thuật toán, đưa ví dụ minh họa, chứng minh tính đắn thuật toán Dijkstra • Trình bày định nghĩa tính chất đối ngẫu phép tam giác phân đa giác đơn, hình ống tay, Phễu Trình bày thuật toán xác định hình ống tay, thuật toán Phễu 53 Lee preparata (có cải tiến Guibas, Hershberger, Sharir Tarjan (Xem[12])) Chứng minh tính đắn thuật toán Phễu đưa ví dụ minh họa thuật toán • Trình bày chi tiết thuật toán tìm đường ngắn hai điểm đa giác đơn Lee Preparata, chứng minh tính đắn thuật toán, xác định độ phức tạp thuật toán đưa ví dụ minh họa Những vấn đề tiếp tục nghiên cứu: • Lập trình cho thuật toán "tìm đường ngắn hai điểm đa giác đơn" • Tìm thuật toán lập trình "tìm đường ngắn hai điểm hình đa diện không lồi không gian ba chiều" Tài liệu tham khảo Tài liệu tiếng Việt: [1] P T An, Bài giảng hình học tính toán, Viện Toán học, (2007) [2] N H Điển, Một số vấn đề thuật toán, NXB Giáo Dục, (2005) [3] Đ Đ Giao, Toán rời rạc, NXB Giáo Dục, (2007) [4] N H Ngự, Lý thuyết đồ thị, NXB Đại Học Quốc Gia Hà Nội, (2001) [5] H C Thành L T Vĩnh, Bài giảng lý thuyết đồ thị áp dụng, http://210.86.230.110/vnuh/Ly− Thuyet− Do− Thi/index.htm Tài liệu tiếng Anh: [6] P T An, Some applications of optimal control problems in computational geometry (invited talk), Seminar at CEMAT, Instituto Superior Tecnico, Lisbon, Portugal, October 14-22, 2008 [7] P T An, An efficient algorithm for determining the convex ropes between two vertices of a simple polygon without triangulation, The Abdus Salam International Centre for Theoretical Physics (ICTP), Trieste, Italy, Preprint, 6/2008 [8] P T An, Method of orienting curves for determining the convex hull of a finite set of points in the plane, Optimization, first ipublished on October 15, 2008 54 55 [9] P T An, A modification of Graham’s algorithm for determining the convex hull of a finite planar set, Annales Mathematicae et Informaticae, 34 (2007), pp 3-8 [10] P T An, An efficient algorithm for determining the convex hull of a finite set of points in the plane, Preprint 06/21, Hanoi Institute of Mathematics, submitted, (2006) [11] M D Berg, M V Kreveld, M Overmars and O Schwarzkopf, Computational Geometry Algorithms and Applications, Springer, Second, Revised Edition, (1998) [12] L Guibas, J Hershberger, D Leven, M Sharir and R E Tarjan, Linear-Time Algorithms for Visibility and Shortest Path Problems Inside Trianggulated Simple Polygons , Springer New York, Algorithmica (1987), 1-4: 209-233 [13] D T Lee and F P Preparata, Euclidean shortest paths in the presence of rectilinear battiers, Networks, 14 (1984), 201-206 [14] J.O’Rourke, Computational Geometry in C, Cambridge University Press, (1998) [15] J R Sack and J.Urrutia, Handbook of Computational Geometry, Elsevier Science B V, (2000) [16] http://www.cs.ucsb.edu/∼suri/cs235/Triangulation.pdf [17] http://www.cs.uwaterloo.ca/∼alubiw/shortest-path-lecture.pdf, (2000), pp 639 [...]... L • Một đa giác được gọi là đơn đi u nếu nó là đa giác đơn và biên 15 của nó hợp thành từ hai đường gấp khúc đơn đi u cùng theo một phương C P a L L b Đa giác đơn đi u Đường gấp khúc đơn đi u Hình 1.6: Minh hoạ đường gấp khúc đơn đi u và đa giác đơn đi u Định nghĩa 1.2.6 (xem [14]) Một đa giác đơn P được gọi là y - đơn đi u nếu nó đơn đi u đối với trục oy Định nghĩa 1.2.7 (xem [14], trang 46) Một đỉnh... đi u, thuật toán tam giác phân đa giác đơn và xem như là những chương trình con của thuật toán chính về tìm đường đi ngắn nhất giữa hai đi m trong một đa giác đơn ở chương 3 2.1 Thuật toán Dijstra Bài toán 2.1.1 Cho đồ thị có trọng số G = (V, E) và hai đỉnh a, b ∈ G Hãy tìm đường đi có trọng số bé nhất (nếu có) đi từ đỉnh a đến đỉnh b 2.1.1 Thuật toán Dijkstra Năm 1959 Dijkstra đưa ra một thuật toán rất... tạp của thuật toán Do thuật toán trên sử dụng vòng for nên có độ phức tạp là tuyến tính O(n) (theo cách xác định độ phức tạp của vòng for ở ví dụ 1.3.2) Chương 2 Thuật toán Dijkstra và thuật toán tam giác phân đa giác Trong chương này chúng tôi trình bày các thuật toán: thuật toán Dijkstra, thuật toán phân chia đa giác thành các đa giác y - đơn đi u, thuật toán tam giác phân đa giác y - đơn đi u, thuật. .. Giả sử tại đi m thứ pi nếu đi m p nằm bên trái của pi−1 pi và p nằm bên phải của pi pi+1 thì pi là tiếp đi m của tiếp tuyến trái Giả sử tại đi m thứ pj nếu đi m p nằm bên phải của pi−1 pi và p nằm bên trái của pj pj+1 thì pj là tiếp đi m của tiếp tuyến phải kẻ được từ đi m p tới P Để đơn giản hơn trong việc đưa ra thuật toán ta có thể cải tiến thuật toán như sau: Tìm đi m pi sao cho hai đi m pi−1 ,... cạnh của đa giác và những đi m chung của hai đầu đoạn thẳng gọi là đỉnh Một đa giác gọi là đa giác đơn nếu các cạnh của nó không giao nhau, nghĩa là hai cạnh kề của nó chỉ có một đi m chung là đỉnh Trong luận văn này chúng tôi chỉ xét những đa giác mà không có bất kỳ ba đỉnh nào thẳng hàng • Một đỉnh của đa giác P được gọi là đỉnh phản xạ (reflex) nếu góc bên trong của nó lớn hơn Π • Một đỉnh của đa giác. .. độ phức tạp của thuật toán nhiều nhà toán học đã đưa ra các thuật toán tam giác phân đa giác với độ phức tạp nhỏ hơn O(n2 ) Một trong những ý tưởng của các thuật toán đó là, trước hết phân chia thành đa giác P thành các đa giác y - đơn đi u, sau đó tam giác phân các đa giác y 31 - đơn đi u đó Như vậy để giải bài toán 2.2.1 trước hết ta phân chia đa giác đơn P thành các đa giác y - đơn đi u như sau:... góc bên trong của nó nhỏ hơn Π Định nghĩa 1.2.3 (xem [13]) Một đường gấp khúc đa giác q1 q2 qk là một dãy của những đi m qi (i = 1, k) trong mọi cặp nào những đi m 12 kề qi và qi+1 biểu thị một đoạn với i = 1, k − 1 và không có hai đoạn nào không liên tiếp cắt nhau Đa giác đơn Đa giác Hình 1.3: Minh hoạ đa giác Một đa giác đơn chia mặt phẳng ra thành phần trong, biên và phần ngoài Giả sử đa giác P... là một đi m lùi phía trong trong Mọi đỉnh hộ trợ được nối với đỉnh đối diện của hình thang: nối xuống với đi m "lùi xuống", và nối lên cho đi m lùi "hướng lên" thì các đường chéo này sẽ phân chia P thành các đa giác đơn đi u theo phương thẳng đứng Khi đó các đi m lùi trong được loại bỏ do đó các đa giác này là các đa giác y -đơn đi u Ta gọi phép phân chia đa giác P thành các đa giác đơn Y - đơn đi u... giác P = v0 , v1 , , vn−1 Hai đỉnh không kề nhau vi và vi−1 với i Hãy tìm phép tam giác phân đa giác P Hiện nay đã có nhiều thuật toán để tam giác phân đa giác, trong đó có những thuật toán có độ phức tạp là O(n2 ), chẳng hạn như thuật toán cắt tai (Ear ... tam giác phân đa giác y - đơn đi u, thuật toán tam giác phân đa giác đơn Chương Thuật toán tìm đường ngắn hai đi m đa giác đơn Lee Preparata Trong chương trình bày thuật toán tạo hình ống tay, thuật. .. trình tìm đường ngắn theo thuật toán Phễu 3.2 Thuật toán tìm đường ngắn hai đi m đa giác đơn Bài toán 3.2.1 Cho đa giác đơn P =< a1 , a2 , , an >, hai đi m s, t nằm đa giác P Hãy dùng thuật toán. .. giác Trong chương trình bày thuật toán: thuật toán Dijkstra, thuật toán phân chia đa giác thành đa giác y - đơn đi u, thuật toán tam giác phân đa giác y - đơn đi u, thuật toán tam giác phân đa giác

Ngày đăng: 15/12/2015, 07:13

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan