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

Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu

42 6 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

Nội dung

Bộ giáo dục đào tạo Tr-ờng đại học vinh Phan Đức Dũng BàI TOáN TìM ĐƯờNG ĐI NGắN NHấT hai đỉnh TRONG ĐA GIáC ĐƠN ĐIệU Luận văn thạc sĩ toán học Vinh - 2009 Bộ giáo dục đào tạo Tr-ờng đại học vinh Phan Đức Dũng BàI TOáN TìM ĐƯờNG ĐI NGắN NHấT hai đỉnh TRONG ĐA GIáC ĐƠN ĐIệU Chuyên ngành: Hình Học - Tôpô mà số: 60 46 10 Luận văn thạc sĩ to¸n häc Ng-êi h-íng dÉn khoa häc: PGS TS Phan Thành An Vinh - 2009 Mục lục Trang Mở đầu Ch-¬ng I KiÕn thøc c¬ së 1.1 Độ phức tạp thuật toán 1.2 Đa giác đơn, đ-ờng gấp khúc đơn điệu đa giác đơn ®iÖu 1.3 TËp låi, bao låi điểm cực biên 1.4 Thuật toán tăng dần 11 1.5 Lý thuyết đồ thị 12 1.6 Tam giác phân đa giác đơn 17 1.6.1 Định nghĩa tính chất 17 1.6.2 ThuËt toán tam giác phân đa giác đơn 18 Ch-ơng II Thuật toán tìm đ-ờng ngắn hai điểm đa giác đơn Lee Preparata 21 2.1 Thuật toán t×m h×nh èng tay 21 2.2 Tht to¸n phƠu 22 2.2.1 Kh¸i niƯm phƠu 22 2.2.2 Tht to¸n phƠu 23 2.3 ThuËt to¸n chÝnh 24 Ch-ơng III Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu 26 3.1 Thuật toán tìm bao lồi tiền vi phạm 27 3.1.1 Mô tả bao lồi tiền vi phạm 27 3.1.2 ThuËt to¸n tìm bao lồi tiền vi phạm 28 3.2 Thuật toán tìm link 28 3.2.1 Kh¸i niƯm link 28 3.2.2 Thuật toán tìm link 29 3.3 ThuËt to¸n chÝnh 30 3.3.1 Mô tả thuật to¸n 31 3.3.2 Tính đắn thuật toán 32 KÕt luËn 35 Tài liệu tham khảo 36 Danh sách hình vẽ Hình 1: Minh họa thuật toán t×m tiÕp tuyÕn 11 Hình 2: Minh họa thuật toán Dijkstra 14 H×nh 3: Minh häa đ-ờng ngắn hai đỉnh đa giác đơn điệu 26 Hình 4: Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm 28 Hình 5: Minh họa toán sử dụng bao lồi làm định h-ớng 33 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 tối -u hình học Đ-ờng ngắn Euclidean hai điểm đa giác đơn vấn đề hình học tính toán Năm 1984, [13] [17], Lee Preparata đà đ-a thuật toán tìm đ-ờng ngắn hai điểm đa giác đơn có độ phức tạp thuật toán O(n2) cách sử dụng tam giác phân đa giác Năm 2008, [9] [10], Phan Thành An không cần trình tam giác phân đa giác tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu Một số chi tiết toán đ-ờng ngắn hai đỉnh đa giác đơn điệu đ-ợc trình bày [5] Trong luận văn nghiên cứu Bài toán tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu, cụ thể trình bày chi tiết hai thuật toán Lee Preparata Phan Thành An dùng bao lồi làm định h-ớng (đ-ợc trình bày lần [9] [10]) tìm đ-ờng ngắn hai đỉnh đa giác giác đơn điệu Luận văn gồm ba ch-ơng Ch-ơng I: Kiến thức sở Trong ch-ơng nêu hệ thống số kiến thức thuật toán tìm bao lồi tập hữu hạn điểm, tam giác phân đa giác đơn, đ-ờng ngắn đồ thị trọng số, để làm sở cho ch-ơng sau Ch-ơng II: 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ìm hình ống tay thuật toán phễu Lee Preparata tìm đ-ờng ngắn hai điểm đa giác đơn nh-ng có cải tiến Guibas, Hershberger, Leven, Sharir, Tarjan (Xem [17]) Trình bày thuật toán để giải toán tìm đ-ờng ngắn hai điểm đa giác đơn Lee Preparata Ch-ơng III: Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu Trong ch-ơng trình bày thuật toán tìm bao lồi tiền vi phạm, thuật toán tìm Link toán tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu dùng bao lồi làm định h-ớng Dựa vào số tính chất đơn điệu đa giác, bao lồi tiền vi phạm, [5], trình bày thuật toán sử dụng bao lồi làm định h-ớng để giải toán tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu Luận văn đ-ợc hoàn thành d-ới h-ớng dẫn tận tình thầy giáo PGS TS Phan Thành An Tác giả xin đ-ợc bày tỏ lòng biết ơn sâu sắc tới Thầy, ng-ời đà h-ớng dẫn, giúp đỡ tác giả trình thực đề tài Tác giả xin chân thành cảm ơn Thầy PGS TS Nguyễn Hữu Quang, PGS TS Phạm Ngọc Bội, TS Nguyễn Duy Bình ng-ời quan tâm giảng dạy nh- động viên tác giả trình học tập Tác giả xin chân thành cảm ơn đến Giáo s-, phó Giáo s-, Tiến sĩ Khoa Đào tạo Sau Đại học Tr-ờng Đại học Vinh, Viện Toán học, ng-ời đà tham gia quản lý, giảng dạy, giúp đỡ h-ớng dẫn tác giả suốt trình học tập, nghiên cứu Tác giả xin cảm ơn anh D-ơng Quốc Nam, anh Đoàn Văn Thanh (Khoá 14) gia đình, bạn bè, đồng nghiệp đà động viên khích lệ giúp đỡ tác giả trình học tập nh- hoàn thành luận văn Mặc dù cố gắng trình học tập, nghiên cứu nhiều tài liệu nh- tham khảo nhiều ý kiến trình viết hoàn thành luận văn, nh-ng luận văn khó tránh khỏi thiếu sót, mong nhận đ-ợc ý kiến đóng góp của hội đồng chấm luận văn Thạc sĩ Toán - Tr-ờng Đại học Vinh, ý kiến trao đổi đồng nghiệp nội dung luận văn Vinh, tháng 12 năm 2009 Tác giả Ch-ơng I Kiến thức sở 1.1 Độ phức tạp thuật toán 1.1.1 Các định nghĩa tính chất Độ phức tạp thuật toán th-ớc đo để so sánh tính hiệu thuật toán Một th-ớc đo hiệu thời gian máy tính sử dụng để giải toán theo thuật toán xét, giá trị đầu vào có kích th-ớc xác định Một th-ớc đo thứ hai nhớ đòi hỏi thực hiên thuật toán giá trị đầu vào có kích th-ớc cho tr-ớc Gắn liền với thời gian tính toán thuật toán độ phức tạp thời gian Biết đ-ợc độ phức tạp thời gian cho thuật toán quan trọng, ta biết đ-ợc thời gian phút, năm, tỉ năm để thực thuật toán Để tính toán độ phức tạp thuật toán ta xét hàm thực f: N R xác định tập số nguyên d-ơng hầu nh- d-ơng làm công cụ đo Nghĩa tồn số nguyên d-¬ng n0 cho f(n) > víi mäi n > n0 Kí hiệu F tập hợp tất hàm nh- Định nghĩa 1.1.1 (Xem [2]) Cho hàm số g(n) F, ta định nghĩa O(g(n)) tập hợp tất hàm f(n) F có tính chất: Tồn số c n0 cho víi mäi n>n0 th× f(n)  c.g(n) NÕu f(n)  O(g(n)), ta nói f(n) Ô lớn g(n) Những hàm thuộc O th-ờng dùng nh- bị chặn d-ới hàm thực tính toán thuật toán để giải toán Ng-ời ta dùng kí hiệu f(n) = g(n)+O(h(n)), nghĩa f(n)-g(n) = O(h(n)) Định nghĩa 1.1.2 (Xem [2]) Cho hàm số g(n) F, ta định nghĩa (g(n)) tập hợp tất hàm f(n)  F cã tÝnh chÊt: Tån t¹i h»ng sè c1, c2 n0 cho với n>n0 c1.g(n) f(n) c2.g(n) Định nghĩa 1.1.3 (Xem [2]) Cho hàm số g(n) F, ta định nghĩa (g(n)) tập hợp tất hàm f(n) F có tính chất: Tồn số d-ơng c n0 cho với n>n0 c.g(n) f(n) NÕu f(n)   (g(n)), th× ta nãi r»ng f(n) Ô mê ga lớn g(n) Mệnh đề 1.1.1 (Xem [2]) Nếu f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n)+f2(n)  O(g1(n)+g2(n)) MƯnh ®Ị 1.1.2 (Xem [2]) NÕu f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n)+f2(n) O(max{g1(n),g2(n)}) Mệnh đề 1.1.3 (Xem [2]) Nếu f1(n) O(g1(n)) f2(n) O(g2(n)) f1(n) f2(n)  O(g1(n).g2(n)) MƯnh ®Ị 1.1.4 (Xem [2]) Cho P(n) = aknk+ak-1nk-1+ +a1n+a0 đa thức bậc k, ak > Khi P(n) O(nk) 1.1.2 Cách tính độ phức tạp thuât toán Ta sử dụng T() cho độ phức tạp tính toán toán tử riêng nh- đoạn mà ch-ơng trình Khi mà ch-ơng trình đ-ợc tách biệt rõ ràng ta kí hiệu T(n) độ phức tạp tính toán hàm biến số n với n số phép toán sở Độ phức tạp tính toán đ-ợc đo hàm O( ) Vì để tính độ phức tạp tính toán thuật toán tức ta xác định hàm T(n) O( ) cho đoạn mà ch-ơng trình Các phép toán đ-ợc dùng để đo độ phức tạp thời gian phép so sánh số nguyên, phép cộng, phép trừ, nhân, chia số nguyên phép toán sơ cấp khác Định nghĩa 1.1.4 (Xem [2]) Phép tính sở phép cộng, trừ, nhân, chia hàm l-ợng giác, hàm mũ, hàm logarit phép toán sơ cấp khác Độ phức tạp toán tử sở O(1) Tuy nhiên thực tính toán với số lớn phép nhân hàm không phép tính sở Vì phép nhân số lớn, hàm đ-ợc thực tính toán dÃy Độ phức tạp thời gian dÃy liên tiếp phép tính xác định độ phức tạp cao chúng Tức là, giả sử toán tử s1 có độ phức tạp F1, s2 có độ phức tạp F2 Khi đó: T(s1) O(F1); T(s2) O(F2) T(s1, s2) max{O(F1);O(F2)} Để dễ dàng cho việc phân tích thuật toán ta kết hợp kí hiệu độ đo phức tạp phân tích tr-ờng hợp xấu để biết đ-ợc thời gian thực thuật toán thời gian xấu bao nhiêu? Ng-ời ta định độ phức tạp phép toán tr-ờng hợp xấu là: (1) Phép gán có độ phức tạp O(1) (2) Phép nhập vào thủ tục có ®é phøc t¹p O(1) (3) PhÐp khái thđ tơc có độ phức tạp O(1) (4) Mệnh đề if độ phức tạp thời gian so sánh cộng với O(max hai nhánh) (5) Vòng lặp (While) có độ phức tạp thời gian tổng tất vòng lặp với thời gian vòng lặp Thứ bậc tập hàm số (Xem [3]) Trong phân tích thuật toán ng-ời ta th-ờng hay dùng hàm sau 1, logn, n , n, nlogn, n2, n3, 2n, n2n, n! Những hàm tạo dây xích thứ bậc tăng nh- sau: O(1) O(logn) O( n )  O(n)  O(nlogn)  O(n2)  O(n3)  O(2n) O(n2n) O(n!) Các hàm nh- 2n, n2n, nn, n! đ-ợc gọi hàm loại mũ Một giải tht mµ thêi gian thùc hiƯn cđa nã cã cÊp loại hàm mũ tốc độ chậm 23 Chúng trình bày thuật toán Phễu Lee Preparata nh-ng có cải tiến Guibas, Hershberger, Sharir Tarjan (Xem [17]) để giải 2.2.2 Thuật toán phễu Giả sử d = uw mét ®-êng chÐo cđa P ’, víi phƠu hiƯn thêi F = Fuw danh sách phân loại [ul, ul-1, , a, w1, ,wk], a = u0 = w0 đỉnh F, (a, u) = [u0, , ul],  (a, w) = [w0, , wk] vµ ul = u, wk = w Chóng ta kÝ hiệu thuật toán đỉnh phễu CUSP(F ) Thuật toán s với CUSP(F ) = s tiếp tục cách đệ quy nh- sau: ThuËt to¸n 2.1.2 (FUNNEL(F )) (xem[13], trang 212) Cho: Đa giác P hình ống tay Tìm: Các đỉnh v = CUSP(F) Giả sử u, w điểm điểm cuối F , vµ a = CUSP(F) ( nh- vËy 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 cđa F , cho vx lµ mét tiÕp tuyến 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ự nh- 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.2) Chia F x thành hai phễu F1= [u, , v, x] vµ F2= [x, v, , w] Nếu v (a, u) đặt CUSP(F1) := v, CUSP(F2) := a Mặt khác, v  (a, w) th× CUSP(F1) := a, CUSP(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  uwx th× 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, 2, , m ®Ønh cđa c¸c phƠu F 24  TÝnh ®óng đắn thuật toán Chứng minh tính đắn thuật toán phễu (Xem [17]) Độ phức tạp thuật toán Độ phức tạp thuật toán phễu O(n) (Xem [17], trang 213-215) 2.3 ThuËt to¸n chÝnh Cho: Đa giác đơn P hai điểm s, t nằm P Tìm: Đ-ờng ngắn từ s đến t đa giác đơn P B-ớc Thực phép tam giác phân TGP(P ), ta gọi phép tam giác phân T B-ớc Với phép tam giác phân T , thực SLEEVE(P ) ta đ-ợc hình ống tay P B-ớc Thực FUNNEL(F ) với hình ống tay P Tính đắn thuật toán Để chứng minh tính đắn thuật toán ta dựa vào số mệnh đề sau: Mệnh đề 2.3.1 (Xem [13]) Giả sử s t hai điểm đa giác đơn P, S tập đỉnh đ-ờng ống tay xác định s t (phép tam giác phân) Khi đó, đỉnh mà đ-ờng ngắn từ s đến t thc tËp S {s, t} MƯnh ®Ị 2.3.2 (Xem [17]) Giả sử uwx tam giác phép tam giác phân đa giác P cho uwx F = d Khi đ-ờng ngắn từ s tới x từ (s, a) đến ax Nếu ax F = theo phần thẳng tới x, hay ng-ợc lại (a, u) ,  (a, w) tíi v nÕu vx tiếp tuyến F v sau tiếp tục theo đoạn thẳng vx Từ ta suy ra: Thuật toán dừng sau hữu hạn b-ớc, tồn phép tam giác phân đa giác đơn(Xem[14], trang 12) đối ngẫu đồ thị hữu hạn đỉnh, hiển nhiên tồn hình ống tay với hữu hạn đỉnh 25 Thuật toán kết thúc tìm đ-ợc đ-ờng ngắn từ s đến t tìm đ-ợc đ-ờng ngắn nằm hình ống tay Độ phức tạp thuật toán Thuật toán có độ phức tạp O(n2) Nhận xét 2.3.1 Tr-ờng hợp đa giác đơn điệu có n đỉnh hợp hai đ-ờng gấp khúc đơn ®iƯu theo cïng mét ph-¬ng < a  p0, p1, , b > vµ < a  q0, q1, , b > đ-ờng ngắn miền đa giác đơn điệu từ đỉnh a đến đỉnh b nh- đặc biệt thuật toán Việc đánh giá độ phức tạp thuật toán dựa vào: - B-ớc có độ phức tạp O(n) - B-ớc có độ phức tạp O(n2) - B-ớc có độ phức tạp O(n) Do độ phức tạp thuật toán Lee Preparata tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu O(n2) Phần minh họa thuật toán Lee Preparata đ-ợc trình bày [7] 26 Ch-ơng III Thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn hai đỉnh đa giác đơn ®iƯu Trong [9] vµ [10], Phan Thµnh An ®· ®-a ý t-ởng tìm đ-ờng ngắn hai đỉnh đa giác đơn không cần trình tam giác phân đa giác Vấn đề đ-ợc trình bày lại [5] cho tr-ờng hợp đa giác đơn điệu Trong nội dung luận văn, trình bày chi tiết thêm kết [5] thông qua toán, trình tự thủ tục tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu sử dụng bao lồi làm định h-ớng Hình 3: Minh họa đ-ờng ngắn hai đỉnh đa giác đơn điệu 27 Bài toán: Cho đa giác đơn điệu PQ tạo hai đ-ờng gấp khúc đơn ®iÖu P = < a  p0, p1, , pn-1  b > vµ Q = < a  q0, q1, , qm-1 b > Tìm đ-ờng ngắn nhất, Z , miền đa giác PQ nối hai đỉnh a b 3.1 Thuật toán tìm bao lồi tiền vi phạm Cho hai đ-ờng gấp khúc đơn điệu X Y theo ph-ơng có chung đỉnh đầu a đỉnh cuối b X = < a  p0, p1 , , pn-1  b > đỉnh xếp chiều kim đồng hồ, Y = < a  q0, q1, …, qm-1  b > đỉnh xếp ng-ợc chiều kim đồng hồ đặt Qi = conv(Xi = < v0, v1, , vi >), (i n-1) 3.1.1 Mô tả bao lồi tiền vi phạm (Xem [5]) Trong thuật toán tăng dần tìm bao lồi X, ta có bao låi Q1, Q2, , Qi, , Qn-1 Gi¶ sư Qk+1 bao lồi chứa đỉnh Y \{q0} Khi ta gọi Qk bao lồi tiền vi phạm X Y kí hiệu Q* Tại pk+1 kẻ hai tiếp tuyến trái pk+1pl tiếp tuyến phải pk+1pr tới Qk Kí hiệu: ~ , , , - X = < p0 , p1 , , p s >, đ-ờng nối điểm cực biên bên trái bao lồi Q* từ pl ®Õn pr ~ , - Y = < q0 , q , , , , q t >, lµ đ-ờng nối đỉnh Y \{q0} theo ~ , thứ tự tăng dần số nằm miỊn < pk+1pl; pk+1pr; X >, ( qi cã thĨ trïng víi pk+1) ~ ~ - FQ(X ,Y ) lµ trình tìm Q*, X Y Nh- vậy, trình FQ(X ,Y ) cho ta kết quả: bao lồi tiền vi phạm Q* ~ ~ đ-ờng gÊp khóc X ®èi víi ®-êng gÊp khóc Y , X Y 28 Hình 4: Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm 3.1.2 Thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm Thuật toán 3.1.1 B-ớc B-ớc Đặt Q*:= Q1; i := 1; While Q* không bao låi tiỊn vi ph¹m i  i +1 TÝnh đắn thuật toán (xem [5], trang 27-28) Thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm có độ phức tạp tính toán O((m-1)(n-2)) Nhận xét 3.1.1 Trong trình tìm bao lồi tiền vi phạm cđa X ®èi víi Y , ®Ĩ kiĨm tra ®Ønh qj cña Y \{q0} cã n»m bao låi cña Qk+1 hay không, ta cần xem qj có thuộc vào miền tam giác pk+1plpr hay không 3.2 Thuật toán tìm link 3.2.1 Khái niệm link Cho đa giác ®¬n ®iƯu PQ XÐt hai ®-êng gÊp khóc X Y đa giác PQ X = P Y = Q có chung đỉnh đầu a đỉnh cuối b Đ-ờng gấp khúc X đỉnh xếp chiều kim đồng hồ, Y có đỉnh xếp ng-ợc ~ ~ chiều kim đồng hồ Thực hiƯn FQ(X ,Y ), ta cã X vµ Y 29 Định nghĩa 3.2.1 (Xem [9]) Link nối hai đ-ờng X Y đoạn thẳng ~ ~ ~ [u*,v*] thoà mÃn điều kiện u* X v* Y đỉnh X \{u*} nằm bên ~ trái đ-ờng thẳng u*v* Y \{v*} F = , (F miền mặt phẳng giới hạn ~ < u*v*, X , pk+1pr >) T-¬ng tù ta cịng có khái niệm link đ-ờng gấp khúc X Y đa giác đơn điệu XY tr-ờng hợp X = < p0, p1, , pn-1 > có đỉnh xếp ng-ợc chiều kim đồng hồ Y = < q0, q1, , qm-1 > có đỉnh xếp chiều kim đồng hồ Xét toán tìm link tr-ờng hợp X có đỉnh xếp chiều kim đồng hồ 3.2.2 Thuật toán tìm link (Xem [5]) Mô tả thuật toán ~ , , , ~ Gi¶ sư X = < p , p1 , , p s > vµ Y = < q , , q , , , q , t >, s n-2 t m-2 Chúng ta tìm link theo tăng dần từ đỉnh ~ ~ X Y đến điểm Cụ thể, bắt đầu với hai đỉnh pi := p’0, qj := q’0, ta xÐt link t¹m ~ [u*,v*] := [pi, qj] ta kiểm tra tất đỉnh X \{u*} xem có tồn đỉnh ~ ~ thuộc bên phải u*v* (nếu có gọi vi ph¹m X ) NÕu tån t¹i vi ph¹m X ta bỏ đỉnh pi tiếp tục với i i+1, gán lại u* := pi ~ Tiếp tục quay lại trình kiểm tra đỉnh X \{u*} so với link tạm [u*,v*] vừa thiết lập tiếp tục nh- đến lúc không đỉnh vi phạm ~ Khi không tồn đỉnh X vi phạm ta kiểm tra đỉnh ~ ~ Y Nếu không tồn đỉnh Y \{v*} thuộc vào F [u*,v*] đ-ờng link cần tìm 30 ~ ~ Ng-ợc lại, ta có đỉnh Y \{v*} thuộc vào F (gọi vi phạm Y ) ta bỏ đỉnh q , j tiếp tục với j j+1(gán lại v* := qj) Bây ta đ-ợc link tạm [u*,v*] quay lại kiểm tra nh- ban đầu ~ ~ vi phạm X vi phạm Y đến đồng thời không vi phạm ~ ~ X Y dừng lại Và ta nhận đ-ợc [u*,v*] đ-ờng link X Y Tht to¸n 3.2.1 Link(X ,Y ) B-íc Thùc hiƯn FQ(X ,Y ) Gi¶ sư ~ X= < B-íc B-íc * u := , , , ~ , p , p , , p >; Y = < q , q p ; v* := q ; s , , 0 , , , , q t > i := 0; j := 0; While [u*,v*] link ~ While [u*,v*] vi ph¹m X , i  i+1; u* := p i ; ~ While [u*,v*] vi ph¹m Y , j  j+1; v* := q j ; 3.3 Thuật toán Giả sử Q* [u*,v*] lần l-ợt bao lồi tiền vi phạm link đ-ờng gấp khúc chiều (t-ơng ứng ng-ợc chiều) kim đồng hồ X Y ng-ợc chiều (t-ơng ứng cïng chiỊu) kim ®ång hå Khi ®ã ta gäi: - TC(X ) biên trái (t-ơng ứng biên phải) bao låi Q* lÊy tõ ®Ønh a ®Õn u* - TCL(X ,Y ) việc tìm TC(X ) link [u*,v*] X Y (Xem [5]) Quy -íc: NÕu [u*,v*], (u*:= pk ; v*:= qt) lµ link cña X = < a  p0, p1, , pn-1  b > vµ Y = < a  q0, q1, , qm-1 b > đa giác đơn ®iƯu XY th× ®-êng gÊp khóc 31 < u*,v*, , b > t-ơng ứng [u*,v*] < qt, qt+1, , qm-2, b> đ-ờng gấp khúc < u*, , b > t-ơng ứng < u*, pk+1, , pn-2, b > 3.3.1 Mô tả thuật toán Xét đa giác đơn điệu PQ Bắt đầu gán l := 0, X =P ,Y =Q Thùc hiÖn TCL(X ,Y ) có link [u*,v*] TC(X ) Đặt Z0 = TC(X ) - Nếu v* = b đ-ờng ngắn nhÊt Z = Z0  [u*,v*] NÕu v*  b ta gán lại l := 1, X = < u*,v*, , b >, Y = < u*, , b > Sau ®ã thùc hiƯn TCL(X ,Y ) víi X Y vừa gán, ta lại có link [u*,v*] TC(X ) Đặt Z1= TC(X ) Nếu v*= b đ-ờng ngắn Z = Z0 Z1 [u*,v*] - T-ơng tự v* b ta gán lại l:= 2, l:=3, X = < u*,v*, , b >, Y = < u*, , b > Cho đến v*= b kết thúc lúc ta có đ-ờng ngắn l Z =  j 0 Z j  [u*,v*] ThuËt to¸n chÝnh B-ớc B-ớc Bắt đầu a = p0 = q0 Đặt l := 0, X =P ,Y =Q Thực TCL(X ,Y ) Đặt Zl = TC(X ) If v*= b then Z = l  j Z j [u*,v*] Stop * Else, đặt X = < u , v*, , b > vµ Y = < u*, , b > l := l + go to (2) Nhận xét: Việc đặt X =P ,Y =Q hc X =Q, Y =P B-íc không làm thay đổi kết toán 32 3.3.2 Tính đắn thuật toán Thuật toán sử dụng bao lồi làm định h-ớng cho ta cách tìm đ-ờng từ đỉnh a đến đỉnh b miền đa giác đơn điệu PQ Tính đắn thuật toán đ-ờng thuật toán đ-ờng ngắn miền đa giác đơn điệu đ-ợc chứng minh chi tiết Mệnh đề 3.2.1, 3.2.2, 3.2.3, 3.2.4 Bổ đề 3.2.1 (Xem [5]) Đ-ờng ngắn từ đỉnh a dến đỉnh b miền đa giác đơn tồn nhÊt (Xem [18], trang 633- 701 ), ®ã toán đ-ờng ngắn hai đỉnh đa giác đơn điệu xét Luận văn tr-ờng hợp đặc biệt Nhận xét: - Trong thuật toán tăng dần tìm bao lồi tiền vi phạm đ-ờng X =P đ-ờng Y =Q ta cần xuất phát từ hai đ-ờng đơn ®iƯu XY chung ®Ønh ci b lµ X = vµ Y = - Vì [u*,v*] nằm đ-ờng ngắn nên v* b B-ớc thuật toán chính, đ-ờng X cần xét từ đỉnh v* (tức ta đặt X = < v*, , b > vµ Y = < u*, , b >) Độ phức tạp tính toán thuật toán O(|P |.|Q |) (|P |, |Q | lần l-ợt số đỉnh đ-ờng P Q ) (Xem [5]) VÝ dơ minh häa tht to¸n Cho đa giác đơn điệu tạo hai đ-ờng gấp khúc đơn điệu P = < a p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, …, p21  b > vµ Q = < a  q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12, q13, q14, …, q20  b > (xem H×nh 3, trang 26) Sử dụng thuật toán dùng bao lồi làm định h-ớng, tìm đ-ờng ngắn miền đa giác PQ nối hai điểm a b? 33 Hình 5: Minh họa toán sử dụng bao lồi làm định h-ớng Bắt đầu ta đặt l := 0, X = P, Y = Q\{a} Khi tìm bao lồi tiền vi phạm X Y ta đ-ợc Q* = conv{q0, q1, …, q10}, tiÕp theo thùc hiÖn TCL(X ,Y ) ta nhận đ-ợc Z0 = TC(X )= [a, p4]  [p4, p7] vµ link [u*,v*] = [p7, q8] Vì (v*=q8) b, nên ta đặt lại l := 1, X = < v*=q8, q9, , b >, Y = < u*=p7, p8, , b > T×m bao lồi tiền vi phạm X Y ta đ-ợc Q*= conv{v*, , q17}, lại thực TCL(X ,Y ) ta nhận đ-ợc Z1 = TC(X ) = [q8 q10]  [q10, q12]  [q12, q16] link [u*,v*] = [q16, p13] Tiếp theo, (v*= p13) b, nên ta đặt lại l := 2, X = < v*=p13, p14, , b >, Y = < u*=q16, q17, , b > T×m bao låi tiỊn vi phạm X Y ta đ-ợc Q* = conv{v*, , p20} vµ thùc hiƯn TCL(X ,Y ) ta nhận đ-ợc 34 Z2 = TC(X ) = [p13, p15]  [p15, p17] vµ link [u*,v*] = [p17, b] Lóc nµy, ta nhËn thÊy v* = b, nên trình tìm đ-ờng ngắn kết thúc Đ-ờng ng¾n nhÊt Z = Z0  Z1  Z2  [u*,v*] = [a=p0, p4]  [p4, p6]  [p6, q8]  [q8, q10]  [q10, q12]  [q12, q16]  [q16, p13]  [p13, p15]  [p15, p17]  [q10, b] Nh- vËy thuËt to¸n thø nhÊt dïng bao låi làm định h-ớng cần thực việc tìm bao lồi theo thuật toán tăng dần điểm xuất phát từ đ-ờng đơn điệu lúc tìm đ-ợc bao lồi tiền vi phạm ta xác định link [u*,v*] Ta đ-ợc đoạn đ-ờng ngắn từ a đến v* lặp lại trình với hàm đệ quy lúc v*=b Thuật toán thứ hai sử dụng tam giác phân đa giác đơn đòi hỏi tập đỉnh đa giác đơn, toán đa giác đơn điệu cho tr-ớc, thực trình tam giác phân đa giác, tiếp đến thực thuật toán Dijkstra đối ngẫu, cuối thực thuật toán phễu xác định đ-ợc đ-ờng ngắn Việc tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu có 300 đỉnh dựa theo thuật toán dùng bao lồi làm định h-ớng đà đ-ợc tính [8] nh- sau: 35 Kết luận Trong luận văn này, đạt đ-ợc kết sau: Trình bày đầy đủ ch-ơng trình để đến thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu Chỉ đ-ợc thuật toán dùng bao lồi làm định h-ớng tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu, thuật toán tìm bao lồi tiền vi phạm cần xuất phát từ hai đ-ờng đơn điệu theo ph-ơng có chung đỉnh cuối lần lặp tiÕp theo cđa tht to¸n TCL(X ,Y ) (víi link [u*,v*] tr-íc ®ã) ta chØ xÐt cho ®-êng X tÝnh từ đỉnh v* Trình bày thuật toán tìm đ-ờng ngắn hai điểm đa giác đơn Lee Preparata, chi tiết thuật toán tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu Những vấn đề tiếp tục nghiên cứu: Tiếp tục tìm cách giảm độ phức tạp thuật toán tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu sử dụng bao lồi làm định h-ớng nghiên cứu toán tìm đ-ờng ngắn hai điểm đa giác đơn điệu 36 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, (2009) [2] N H Điển, Một số vấn đề thuật toán, NXB Giáo Dục, (2005) [3] Đ X Lôi, Cấu trúc liệu giải thuật, NXB Đại học Quốc Gia Hà Nội, (1993) [4] N Đ Nghĩa N T Thành, Toán rời rạc, NXB Đại học Quốc Gia Hà Nội, (2001) [5] D Q Nam, Một thuật toán hữu hiệu tìm đ-ờng ngắn hai đỉnh đa giác đơn điệu, Luận văn Cao học, Đại học Vinh (2008) [6] Đ H Ruận, Lý thuyết đồ thị ứng dụng, NXB Khoa học Kỹ thuật, (2000) [7] Đ V Thanh, Về thuật toán tìm đ-ờng ngắn hai điểm đa giác đơn Lee Preparata, Luận văn Cao học, Đại học Vinh (2008) Tài liệu tiếng Anh: [8] P T An and T V Hoai, Incremental convex hull as an orientation to solve the shortest path problem, Submitted, 2009 [9] 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 [10] P T An, An efficient algorithm for determining the convex ropes between two vertices of a simle polygon without triangulation, The Abdus Salam International Centre for Theoretical Physics(ICTP), Trieste, Italy, Preprint, (6/2008) 37 [11] M D Berg, M V Kreveld, M Overmars and O Schwarzkopf, Computational Geometry: Algorithms and Applications, Springer, Second, Revised Edition, (1998) [12] S R Lay, Convex Sets and Their Applications, John Wiley and Sons, (1982) [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 Mitchell, Melkman/s convex hull algorithm, ASM 345/CSE 355 [16] A A Melkman, On-line construction of the convex hull of a simple polyline, Information Processing Letters 25 (1987), 11-12, NorthHolland [17] L Guibas, J Hershberger, D Leven, M Sharir, and R E Tarjan, Linear-time algorithms for visibility and shortest path Problems inside triangulated simple polygon, Algorithmica, (1987), 1-4: 209-233 [18] J R Sack and J Urrutia, Handbook of Computational Geometry, Elsevier Science B V, (2000) ... giác phân đa giác tìm đ-ờng ngắn hai đỉnh đa giác đơn đi? ??u Một số chi tiết toán đ-ờng ngắn hai đỉnh đa giác đơn đi? ??u đ-ợc trình bày [5] Trong luận văn nghiên cứu Bài toán tìm đ-ờng ngắn hai đỉnh. .. tam giác phân đa giác đơn có độ phức tạp O(nlogn) với ý t-ởng phân chia đa giác đơn thành đa giác đơn đi? ??u, sau tam giác phân đa giác đơn đi? ??u 1.6.2 Thuật toán tam giác phân đa giác đơn Bài toán. .. qua đỉnh đa giác B-ớc Phân chia đa giác thành đa giác đơn đi? ??u việc nối từ đi? ??m lùi phía Thuật toán tam giác phân đa giác đơn đi? ??u TGP1(P ) Đa giác đơn đi? ??u xác định hai đ-ờng gấp khúc có đỉnh

Ngày đăng: 16/10/2021, 22:50

HÌNH ẢNH LIÊN QUAN

Chuyên ngành: Hình Học - Tôpô mã số: 60 46 10  - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
huy ên ngành: Hình Học - Tôpô mã số: 60 46 10 (Trang 2)
Nh- vậy kh ia không có mặt trong bảng, tổng số các phép so sánh đã sử dụng là 2n + 2.   - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
h vậy kh ia không có mặt trong bảng, tổng số các phép so sánh đã sử dụng là 2n + 2. (Trang 12)
Hình 1: Minh họa thuật toán tìm tiếp tuyến - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 1 Minh họa thuật toán tìm tiếp tuyến (Trang 16)
Hình 2: Minh họa đ-ờng đi ngắn nhất từ đỉnh 1 đến đỉnh 6 - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 2 Minh họa đ-ờng đi ngắn nhất từ đỉnh 1 đến đỉnh 6 (Trang 19)
Khi đó ta xây dựng bảng: - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
hi đó ta xây dựng bảng: (Trang 22)
B-ớc 3 Thực hiện FUNNEL( F) với hình ống tay P’ . - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
c 3 Thực hiện FUNNEL( F) với hình ống tay P’ (Trang 29)
Hình 3: Minh họa đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 3 Minh họa đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu (Trang 31)
Hình 4: Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 4 Minh họa thuật toán FQ(X ,Y ) tìm bao lồi tiền vi phạm (Trang 33)
Hình 5: Minh họa bài toán sử dụng bao lồi làm định h-ớng - Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu
Hình 5 Minh họa bài toán sử dụng bao lồi làm định h-ớng (Trang 38)

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w