Tính đúng đắn của thuật toán

Một phần của tài liệu Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu (Trang 37 - 42)

Thuật toán chính sử dụng bao lồi làm định h-ớng cho ta cách tìm đ-ờng đi từ đỉnh a đến đỉnh btrong miền đa giác đơn điệu PQ.

Tính đúng đắn của thuật toán chính và đ-ờng chỉ ra trong thuật toán này là đ-ờng ngắn nhất trong miền đa giác đơn điệu đ-ợc chứng minh chi tiết bởi các Mệnh đề 3.2.1, 3.2.2, 3.2.3, 3.2.4 và Bổ đề 3.2.1 (Xem [5]).

Đ-ờng ngắn nhất từ đỉnh a dến đỉnh b trong miền đa giác đơn là tồn tại và duy nhất (Xem [18], trang 633- 701 ), do đó bài toán đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu xét trong Luận văn này chỉ là một 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 đầu tiên của đ-ờng X =P đối với đ-ờng Y =Q ta chỉ cần xuất phát từ hai đ-ờng đơn điệu

XY chung đỉnh cuối b là X = <ap0, ..., pn-1b>Y = <q1, ..., qm-1b>.

- Vì [u*,v*] nằm trên đ-ờng đi ngắn nhất nên nếu v*b thì trong B-ớc 2 của thuật toán chính, đối với đ-ờng X chỉ cần xét từ đỉnh v* (tức là ta đặt

X = < v*, ..., b > và Y = < u*, ..., b >).

Độ phức tạp tính toán của thuật toán là O(|P |.|Q|) (|P |, |Q| lần l-ợt là số đỉnh của đ-ờng P vàQ ) (Xem [5]).

Ví dụ minh họa thuật toán chính

Cho đa giác đơn điệu tạo bởi hai đ-ờng gấp khúc đơn điệu

P = < ap0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, …, p21b > và Q = < aq0, 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 đi ngắn nhất trong miền đa giác PQnối hai điểm ab?

Hình 5: Minh họa bài 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 của X đối với Y ta đ-ợc Q* = conv{q0, q1, …, q10}, tiếp theo thực hiện TCL(X

,Y ) khi đó 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 của X đối với Y ta đ-ợc Q*= conv{v*,..., q17}, lại thực hiện TCL(X ,Y ) khi đó ta nhận đ-ợc Z1 = TC(X ) = [q8 q10][q10, q12]

[q12, q16] và link [u*,v*] = [q16, p13].

Tiếp theo, vì (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 của X đối với Y ta đ-ợc

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 quá trình tìm đ-ờng ngắn nhất 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 hiện việc tìm bao lồi theo thuật toán tăng dần các điểm xuất phát từ một đ-ờng đơn điệu cho đến lúc tìm đ-ợc bao lồi tiền vi phạm ta xác định link [u*,v*]. Ta đ-ợc đoạn đầu tiên của đ-ờng ngắn nhất từ a đến v* và lặp lại quá trình với hàm đệ quy cho đến 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, trong bài toán là đa giác đơn điệu cho tr-ớc, thực hiện quá trình tam giác phân đa giác, tiếp đến thực hiện thuật toán Dijkstra trên cây đối ngẫu, cuối cùng thực hiện thuật toán phễu mới xác định đ-ợc đ-ờng đi ngắn nhất.

Việc tìm đ-ờng ngắn nhất giữa hai đỉnh của đ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 trong [8] nh- sau:

Kết luận

1. Trong luận văn này, chúng tôi đạt đ-ợc những kết quả sau:

 Trình bày đầy đủ các ch-ơng trình con để đi đến thuật toán chính dùng bao lồi làm định h-ớng tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu.

 Chỉ ra đ-ợc trong thuật toán chính dùng bao lồi làm định h-ớng tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu, thuật toán tìm bao lồi tiền vi phạm đầu tiên chỉ cần xuất phát từ hai đ-ờng đơn điệu theo cùng một ph-ơng có chung đỉnh cuối và trong lần lặp tiếp theo của thuật toán (adsbygoogle = window.adsbygoogle || []).push({});

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 chính tìm đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn của Lee và Preparata, chi tiết thuật toán tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu.

2. 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 của thuật toán tìm đ-ờng đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu sử dụng bao lồi làm định h-ớng và nghiên cứu bài toán tìm đ-ờng đi ngắn nhất giữa hai điểm trong đa giác đơn điệ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, (2009).

[2] N. H. Điển, Một số vấn đề về thuật toán, NXB Giáo Dục, (2005).

[3] Đ. X. Lôi, Cấu trúc dữ liệu và giải thuật, NXB Đại học Quốc Gia Hà Nội, (1993).

[4] N. Đ. Nghĩa và 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 đi ngắn nhất giữa hai đỉnh trong đ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ị và ứng dụng, NXB Khoa học và Kỹ thuật,

(2000).

[7] Đ. V. Thanh, 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, 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).

[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, 2 (1987), 1-4: 209-233. [18] J. R. Sack and J. Urrutia, Handbook of Computational Geometry,

Một phần của tài liệu Bài toán tìm đường đi ngắn nhất giữa hai đỉnh trong đa giác đơn điệu (Trang 37 - 42)