1. Trang chủ
  2. » Luận Văn - Báo Cáo

Sử dụng kỹ thuật “phễu” tìm đường ngắn nhất giữa hai điểm trong đa giác đơn và trên mặt khối đa diện

72 9 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

Thông tin cơ bản

Tiêu đề Sử Dụng Kỹ Thuật 'Phễu' Tìm Đường Ngắn Nhất Giữa Hai Điểm Trong Đa Giác Đơn Và Trên Mặt Khối Đa Diện
Tác giả Đặng Thị Ngọc Ánh
Người hướng dẫn PGS.TS. Phan Thành An
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Toán ứng dụng
Thể loại luận văn thạc sĩ khoa học
Năm xuất bản 2016
Thành phố Hà Nội
Định dạng
Số trang 72
Dung lượng 2,73 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1.1.1 Đồ thị, cây và chu trình (9)
  • 1.1.2 Độ phức tạp thuật toán (11)
  • 1.2 Định nghĩa đa giác đơn và đường gấp khúc (12)
  • 1.3 Phép tam giác phân đa giác (15)
  • 1.4 Khái niệm điểm trong và điểm trong tương đối (16)
  • 1.5 Định nghĩa dãy mặt tam giác và đường đi dọc theo dãy mặt tam giác (17)
  • 1.6 Khái niệm góc tại một điểm trên bề mặt khối đa diện (19)
  • 1.7 Phép lật (20)
  • 2.1 Cây đối ngẫu (23)
  • 2.2 Hình ống tay và hình phễu (25)
  • 2.3 Thuật toán tìm đường đi ngắn nhất giữa 2 điểm trong hình ống tay 24 (28)
  • 2.4 Chứng minh tính đúng và đánh giá độ phức tạp của thuật toán . 26 (30)
    • 2.4.1 Chứng minh tính đúng đắn của thuật toán (30)
    • 2.4.2 Đánh giá độ phức tạp của thuật toán (32)
  • 2.5 Chương trình minh họa thuật toán trên java (33)
  • 3.1 Hình phễu trong không gian 3 chiều (39)
  • 3.2 Thuật toán tìm đường đi ngắn nhất giữa hai điểm dọc theo dãy mặt tam giác (44)
  • 3.3 Chứng minh tính đúng đắn và đánh giá độ phức tạp của thuật toán 42 (46)
    • 3.3.1 Chứng minh tính đúng đắn của thuật toán (46)
    • 3.3.2 Đánh giá độ phức tạp của thuật toán (50)
  • 3.4 Ví dụ minh họa cho thuật toán trên phần mềm javaview (50)

Nội dung

Đồ thị, cây và chu trình

Lý thuyết đồ thị là một lĩnh vực khoa học ra đời sớm, kết nối nhiều ngành khác nhau và hỗ trợ trong việc mô tả hình học Nó giúp giải quyết các bài toán thực tiễn phức tạp liên quan đến các khái niệm như đường đi, chu trình và đường đi ngắn nhất.

Một đồ thị được định nghĩa là tập hợp V không rỗng và bộ E gồm các cặp sắp thứ tự và không sắp thứ tự của các phần tử thuộc V.

• V là tập hợp các đỉnh.

• E ⊆ V × V là tập hợp các cạnh.

Nếu cặp đỉnh không sắp thứ tự được gọi là cạnh, cặp đỉnh sắp thứ tự được gọi là cạnh có hướng.

Ví dụ 1.1.1 Cho đồ thị G như trong hình dưới đây. a b c d e

Hình 1.1: Đồ thị hữu hạn có 5 đỉnh

Nếu (a, b) là một cạnh của đồ thị G thì ta nói đỉnh b kề với đỉnh a, hay hai đỉnh a và b cùng kề với cạnh (a, b).

Hai cạnh kề nhau có ít nhất một đỉnh chung Đồ thị vô hướng chỉ bao gồm các cạnh vô hướng, trong khi đơn đồ thị (hay đồ thị) là đồ thị mà mỗi cặp đỉnh được nối với nhau bởi không quá một cạnh Theo định nghĩa 1.1.2, trong đồ thị G = (V, E), đường đi là một dãy các đỉnh sao cho mỗi đỉnh trong dãy (trừ đỉnh đầu tiên) kề với đỉnh trước đó thông qua một cạnh, tức là ∀ i = 2, 3, , k, cạnh (xᵢ₋₁, xᵢ) thuộc E.

Đường đi này bắt đầu từ đỉnh đầu x1 và kết thúc tại đỉnh cuối xk Theo định nghĩa 1.1.3, chu trình được hiểu là một đường đi khép kín, trong đó đỉnh cuối trùng với đỉnh đầu của đường đi.

Chu trình đơn là chu trình mà các đỉnh trên nó khác nhau từng đôi một.

Trong đồ thị G = (V, E), bậc của đỉnh v trong đồ thị, kí hiệu là deg(v) là số cạnh kề với đỉnh v.

Tiếp theo, chúng tôi trình bày một khái niệm cơ bản trong lý thuyết đồ thị. Đó là khái niệm cây được Caley đưa ra đầu tiên vào năm 1857.

Cây là đồ thị vô hướng liên thông không có chu trình.

Độ phức tạp thuật toán

Một công việc có thể được thực hiện bằng nhiều thuật toán khác nhau Để so sánh tốc độ thực hiện của các thuật toán này, cần tìm một ngôn ngữ lập trình phù hợp.

Một thước đo quan trọng của thuật toán là thời gian mà máy tính cần để giải quyết bài toán với các giá trị đầu vào có kích thước xác định Độ phức tạp thời gian gắn liền với thời gian tính toán, và việc hiểu rõ độ phức tạp này giúp chúng ta kiểm soát thời gian chạy của thuật toán, từ một phút cho đến hàng triệu năm.

Một thước đo quan trọng trong việc đánh giá thuật toán là độ phức tạp về không gian, liên quan đến bộ nhớ cần thiết khi xử lý dữ liệu đầu vào có kích thước xác định Độ phức tạp này giúp chúng ta hiểu khả năng đáp ứng của thuật toán, nhưng trong bài viết này, chúng tôi sẽ không đi sâu vào vấn đề này Thay vào đó, chúng tôi sẽ tập trung vào độ phức tạp về thời gian, được xác định qua số lượng phép toán thực hiện, thường phụ thuộc vào kích thước của dữ liệu đầu vào Độ phức tạp thuật toán được biểu diễn dưới dạng hàm của kích thước đầu vào n, với n có thể thay đổi tùy theo bài toán, chẳng hạn như n là số cần tính giai thừa trong bài toán giai thừa, hoặc số hàng/cột trong bài toán ma trận.

Phần lớn các phép toán cơ bản trong thuật toán có sự khác biệt rõ rệt, mặc dù chúng sử dụng cùng một kích thước đầu vào Điều này dẫn đến việc hình thành các khái niệm mới để giải thích sự khác biệt này (xem [1]).

• Độ phức tạp trường hợp tốt nhất

• Độ phức tạp trường hợp xấu nhất

• Độ phức tạp trường hợp trung bình

Trong thực tế, chúng ta không cần biết chính xác hàm tính toán mà chỉ cần một ước lượng đủ tốt Để ước lượng độ phức tạp của thuật toán, khái niệm bậc Ô-lớn thường được sử dụng Cụ thể, O(g(n)) được định nghĩa là tập hợp tất cả các hàm f(n) dương, thỏa mãn điều kiện tồn tại hằng số c và n0 sao cho với mọi n lớn hơn n0, f(n) không vượt quá c*g(n).

Khi đó nếu f (n) ∈ O(g(n)) thì ta nói rằng f (n) là Ô lớn của g(n).

Một số tính chất về độ phức tạp của thuật toán

3 Cho P (n) = a k n k + a k−1 n k−1 + + a 1 n + a 0 là đa thức bậc k, a k > 0 Khi đó

Một số độ phức tạp thường gặp

• Độ phức tạp hằng số, O(1) Số phép tính/thời gian chạy/dung lượng bộ nhớ không phụ thuộc vào độ lớn đầu vào.

• Độ phức tạp tuyến tính, O(n) Số phép tính/thời gian chạy/dung lượng bộ nhớ có xu hướng tỉ lệ thuận với độ lớn đầu vào.

• Độ phức tạp đa thức, O(P (n)) với P là đa thức bậc cao (từ bậc 2 trở lên).

• Ngoài ra còn có các độ phức tạp logaritO(logn)hoặc hàm mũO(2 n ) Trường hợp hàm mũ là trường hợp xấu nhất và khó thực hiện trên thực tế.

Định nghĩa đa giác đơn và đường gấp khúc

Để định nghĩa chính xác về đa giác đơn, ta cần áp dụng định lý đường cong Jordan, cho thấy rằng bất kỳ đường cong đơn khép kín nào cũng chia mặt phẳng thành hai phần, một phần bị giới hạn bởi phần còn lại Đường cong đơn khép kín, hay còn gọi là đường cong Jordan, được hiểu qua lý thuyết topo như là hình ảnh của một ánh xạ liên tục 1-1 từ R / Z vào R 2.

Hai phần của một đường cong Jordan được xác định là phần trong và phần ngoài, trong đó phần trong là miền bị chặn và phần ngoài là miền không bị chặn Điều này cũng là cơ sở để định nghĩa đa giác đơn.

Không gian Euclid n chiều, ký hiệu E = R n, được định nghĩa là không gian R n (với mọi n > 1) trang bị chuẩn k x k = q x 2 1 + x 2 2 + + x 2 n, trong đó x = (x 1 , x 2 , , x n ) ∈ R n.

Kí hiệu d(x, y) là khoảng cách Euclid giữa hai điểm x, y trong E. Đường đi trong R 2 là một ánh xạ liên tục γ : [a, b] ⊂R→R 2

Nếu γ(a) = x và γ(b) = y thì x, y là các điểm cuối của γ và ta nói rằng đường γ nối các điểm x và y.

Một phân hoạch của đoạn [a, b], ký hiệu là σ, được xác định bởi một dãy hữu hạn các số thực t_i với i = 0, , n, thỏa mãn điều kiện a = t_0 ≤ t_1 < < t_{n-1} ≤ t_n = b và n > 1 Độ dài của đường γ: [a, b] → R^n, ký hiệu là length(γ), được xác định bằng sup σ_{n-1}.

Đoạn thẳng [a, b] là tập con đóng của đường thẳng đi qua hai điểm a và b, trong đó a và b được gọi là các điểm cuối của đoạn thẳng Tập con này bao gồm cả hai điểm cuối a và b.

Đa giác đơn là một miền phẳng được giới hạn bởi một tập hữu hạn các đoạn thẳng, tạo thành một đường cong đơn khép kín Để định nghĩa rõ ràng, cho n điểm v0, v1, v2, , vn−1 nằm trên cùng một mặt phẳng, ký hiệu i = [vi, vi+1] với 0 ≤ i ≤ n − 1 và vn ≡ v0, ta có n đoạn thẳng nối các điểm này Miền trong được giới hạn bởi những đoạn thẳng này được gọi là một đa giác đơn nếu và chỉ nếu nó thỏa mãn các điều kiện nhất định.

1 Mỗi đoạn thẳng kề nhau e i và e i+1 có duy nhất một điểm chung là v i+1. Tức là e i ∩ e i+1 = v i+1 với i = 0, , n − 1.

2 Các đoạn thẳng không kề nhau thì không cắt nhau Tức là e i ∩ e j =∅ với j 6 = i + 1. Điểmv i được gọi làđỉnh của đa giác đơn và đoạn e i gọi làcạnh của đa giác đơn.

Kí hiệu đa giác đơn với các đỉnh v i là P = (v 0 , v 1 , , v n−1 ).

Đường gấp khúc là một dãy có thứ tự các điểm q_i (i = 1, 2, , k), trong đó mỗi cặp điểm kề nhau q_i và q_(i+1) (i = 1, 2, , k − 1) tạo thành một đoạn thẳng Các điểm q_i này được gọi là các đỉnh của đường gấp khúc.

Một đường gấp khúc gọi là đơn nếu bất kỳ hai đoạn thẳng không liên tiếp trong đó đều không cắt nhau. q 1 q 2 q 3 q 4 q 5 q 6 q 7 q 8

Hình 1.4: Đường gấp khúc có 8 đỉnh q 1 q 2 q 3 q 4 q 5 q 6 q 7 q 8

Hình 1.5: Đường gấp khúc đơn có

Tiếp theo, chúng tôi trình bày định nghĩa về tiếp tuyến và đường cong lồi theo [20] như sau.

Một đường thẳng l đi qua điểm A của đường cong γ được gọi là tiếp tuyến với γ tại A nếu đường cong nằm hoàn toàn trong nửa mặt phẳng do l xác định Đường cong γ được xem là đường cong lồi khi mỗi điểm trên đó đều có duy nhất một đường tiếp tuyến.

Phép tam giác phân đa giác

Đường chéo của đa giác đơnP là đoạn thẳng[v i , v j ]nằm trong đa giác và thỏa mãn điều kiện không cắt bất kỳ cạnh nào của P, vớij 6 = i + 1và 06 i, j 6 n − 1 (xem [13]).

Hai đường chéo gọi là không cắt nhau nếu tập hợp các giao điểm của chúng nằm trong tập hợp các điểm cuối của chúng.

Phép tam giác phân đa giác là phép phân chia một đa giác P thành các tam giác bởi các đường chéo không cắt nhau của P.

Với một đa giác tùy ý luôn tồn tại ít nhất một cách tam giác phân đa giác (xem [15], trang 7).

Có nhiều thuật toán tam giác phân khác nhau đã được nghiên cứu với độ phức tạp về thời gian làO(nlog n)(xem [15], [10]) hoặc độ phức tạp là O(n)(xem

Sau đây là một số kết quả đã được chứng minh trong [15]:

1 Mỗi đa giác có số đỉnh lớn hơn hoặc bằng 4 đều tồn tại ít nhất một đường chéo (Bổ đề 1.2.2).

2 Mỗi đa giác P có n đỉnh đều có thể phân chia thành các tam giác bằng cách thêm vào (tối thiểu là 0) các đường chéo (Định lý 1.2.3).

3 Mỗi phép tam giác phân một đa giác P có nđỉnh sử dụng n − 3đường chéo và chia P thành n − 2 tam giác (Bổ đề 1.2.4). d 1 d 2 d 3 d 4 d 5 d 6 d 7 d 8

Hình 1.6: Một phép tam giác phân đa giác có 11 đỉnh thành

9 tam giác bởi 8 đường chéo

Khái niệm điểm trong và điểm trong tương đối

Cho một tập C ⊂ R n , bao đóng của C kí hiệu C là giao của tất cả các tập đóng chứa C (xem [4]).

Một điểm x ∈ C được gọi là điểm trong của C nếu tồn tại một hình cầu có tâm tại x và nằm hoàn toàn trong C Tập hợp các điểm trong của C được gọi là phần trong của C và được ký hiệu là intC.

Tập C ⊂R n gọi là mộttập lồi nếu nó chứa trọn đoạn thẳng nối hai điểm bất kỳ thuộc nó Nói cách khác, (1 − λ)a + λb ∈ C với mọi a, b ∈ C và 06 λ 6 1

Điểm x thuộc tập lồi C ⊂ R^n được gọi là điểm trong tương đối của C nếu với mọi a ∈ C, tồn tại một số λ > 0 sao cho điểm x + λ(a − x) cũng thuộc C Tập hợp các điểm trong tương đối này được gọi là phần trong tương đối của C, ký hiệu là riC.

Tập hợp C \ riC gọi là biên tương đối của C kí hiệu là ∂C Một điểm thuộc

∂C gọi là điểm biên của tập lồi C. x ∈ intC x ∈ ∂C C

Hình 1.7: Minh họa điểm trong và điểm biên của tập C

Định nghĩa dãy mặt tam giác và đường đi dọc theo dãy mặt tam giác

theo dãy mặt tam giác

Trước hết, ta trình bày một số khái niệm cơ bản sau.

Khối đa diện trong không gian R³ được định nghĩa bởi một tập hữu hạn các đa giác, trong đó mỗi cạnh của đa giác này trùng với đúng một cạnh của đa giác khác, tạo thành các đa giác kề nhau Các đỉnh và cạnh của các đa giác cũng sẽ trở thành các đỉnh và cạnh của khối đa diện.

Bề mặt của khối đa diện bao gồm tất cả các đỉnh, các cạnh và miền của các đa giác Trong nghiên cứu này, chúng tôi giả định rằng bề mặt của khối đa diện được cấu thành từ các mặt tam giác.

Hình 1.8: Minh họa một khối đa diện có 98 mặt tam giác

(Tham khảo [7]) Cho S = { f 1 , f 2 , , f m+1 }là một dãy mặt tam giác nằm trên bề mặt của khối đa diện P , cho x và y là hai điểm thỏa mãn điều kiện:

(A 1 ) x ∈ f 1 , y ∈ f m+1 và f i ∩ f i+1 là một cạnh của P với (i = 1, , m).

Từ sau phần này, khi nói đến x, y ∈ S, có nghĩa là x, y thỏa mãn điều kiện (A 1 ) và f i ∩ f i+1 = e i Đường đi dọc theo dãy mặt S = { f 1 , f 2 , , f m+1 } nối hai điểm x và y được định nghĩa là một ánh xạ liên tục γ: [a, b] ⊂ R → S thỏa mãn các điều kiện đã nêu.

• Tồn tại một phân hoạch σ của đoạn [a, b], sao cho a 6 t 1 < < t m 6 b và γ(t i ) ∈ e i với (i = 1, , m).

Tiếp theo ta làm rõ định nghĩa độ dài đường đi dọc theo dãy mặt tam giác

S như sau. Định nghĩa 1.5.2 (xem [7]) Cho γ là một đường đi từ điểm x tới điểm y dọc theo dãy mặt S , khi đó length(x, y) := length(γ ) := sup σ n−1

Độ dài đường γ được xác định bằng công thức X i=0 d(γ(t i ), γ(t i+1 )), trong đó supremum được tính theo tập hợp các phân hoạch σ = { t i } n i=0 của đoạn [a, b] Một đường đi được xem là đo được nếu độ dài của nó là hữu hạn.

Bổ đề 1.5.1 (xem [7]) Cho x và y là hai điểm thuộc dãy mặt S , khi đó luôn tồn tại một đường đi đo được nối x và y dọc theo S

Gọi Γ là tập hợp tất cả các đường γ : [a, b] → S nối điểm x và y Đường đi γ ∗ nối x và y dọc theo S được gọi là đường đi ngắn nhất nếu chiều dài của nó thỏa mãn điều kiện: length(γ ∗ ) = inf γ∈Γ { γ }.

Khái niệm góc tại một điểm trên bề mặt khối đa diện

Trong phần này, chúng ta sẽ ôn lại các khái niệm liên quan đến tổng các góc tại một đỉnh, cũng như góc bên trái và bên phải tại một điểm trên đường đi trên bề mặt của khối đa diện.

Cho v là một đỉnh của tập hợp S, và { f 1 , f 2 , , f k } ⊂ S là một tập hợp các mặt tam giác có chung đỉnh v Các góc θ i nằm trong từng tam giác f i tại đỉnh v (với 1 ≤ i ≤ k) và tổng các góc tại đỉnh v được xác định bởi công thức θ = ∑_{i=1}^{k} θ i.

Hình 1.9: Góc tại một điểm trên 3 đường đi γ 1 , γ 2 và γ 3

Xét đường đi γ trên bề mặt khối đa diện, góc trái và góc phải của đường γ tại một điểm lần lượt kí hiệu là θ l và θ r Khi đó θ l + θ r = θ.

Nếu đường γ đi qua đỉnh v khi di chuyển từ mặt f i đến mặt f j (1 ≤ i < j ≤ k) và v thuộc f i ∩ f j, thì một trong hai góc θ l hoặc θ r sẽ nằm trên bề mặt S Góc này được xác định là góc trong của đường γ tại đỉnh v.

Nếu đường γ đi qua một điểm trong tương đối p của cạnh e i ∈ E, khi đó cả θ l và θ r đều gọi là góc trong của đường γ tại điểm p.

- Tại đỉnh v thuộc cả 3 mặt tam giác f 4 , f 5 , f 6 và đường γ 3 đi qua v Khi đó, góc θ r là góc trong vì góc này nằm trên bề mặt của S

- Tại điểm p (hoặc p 0 ) thuộc đường γ 1 (hoặc γ 2) có 2 góc θ l và θ r đều là góc trong.

Phép lật

Hai mặt tam giác f và f' được xem là kề nhau khi chúng chia sẻ một cạnh chung, được gọi là cạnh kề.

Hình 1.10: Mặt f 1 không kề với f 4 Hình 1.11: Mặt f 1 kề với f 2

Dãy các mặt tam giác kề nhau là một dãy các mặt F = { f 1 , f 2 , , f k+1 } với k ≥ 1 sao cho mặt f i kề với f i+1, i = 1, 2 , k. Định nghĩa phép lật ở đây được trình bày theo [14] trang 649.

Phép lật tam giác f 0 lên tam giác f quanh cạnh kề e được định nghĩa là quá trình xác định hình ảnh của f 0 trên mặt phẳng chứa f Quá trình này thực hiện bằng cách quay f 0 quanh cạnh e, sao cho f 0 sẽ nằm ở phía đối diện với f, tức là hai mặt f và f 0 sẽ ở hai bên khác nhau của cạnh e.

Gọi (α) là mặt phẳng chứa mặt f Khi đó, định nghĩa phép lật ở trên tương đương với định nghĩa phép lật là ánh xạ r được cho như sau: r : f 0 ⊂R 2 → (α) ⊂R 2 x = x 1 x 2

Trong đó θ = π − arccos(~a 1 , ~a 2 ) với 0 6 θ 6 π và ~a 1, ~a 2 lần lượt là các véc tơ pháp tuyến của các mặt phẳng chứa f và f 0

Phép lật cho một dãy các mặt tam giác được định nghĩa như sau: Cho dãy các mặt tam giác S = { f 1 , f 2 , , f m+1 } với E = { e 1 , e 2 , , e m } là dãy các cạnh kề có thứ tự Phép lật này được thực hiện bằng cách xoay f 1 quanh e 1 cho đến khi mặt phẳng chứa f 1 trùng với mặt f 2, sau đó tiếp tục xoay f 1 và f 2 quanh e 2 đến khi mặt phẳng của chúng trùng với mặt f 3, và tiếp tục quá trình này cho đến khi tất cả các mặt f 1 , f 2 , , f m nằm trên cùng một mặt phẳng với f m+1.

Mỗi mặt tam giác được liên kết với một hệ tọa độ trong R², do đó, việc lật dọc theo E cho phép chúng ta biểu diễn các điểm thuộc các mặt f₁, f₂, , fₘ theo hệ tọa độ của mặt fₘ₊₁.

Bổ đề 1.7.1 Cho hai mặt tam giác f 1 và f 2 với cạnh kề là e 1 Khi đó, phép lật mặt f 1 lên f 2 là bảo toàn góc và khoảng cách Tức là:

1 Nếu cho 2 điểm p và q bất kỳ thuộc mặt f 1, gọi p và q lần lượt là ảnh của p và q qua phép lật Khi đó length(p, q) = length(p, q)

2 Nếu cho A b là góc bất kỳ nằm trong mặt f 1 tạo bởi các tia −→ Ax và −→ Ay Gọi

Ảnh của các tia −→ Ax và −→ Ay qua phép lật lên mặt f 2 lần lượt là −→ Ax và −→ Ay Do đó, ảnh của góc A b được tạo bởi các tia này có số đo bằng góc A b ban đầu.

Chứng minh 1 Xét ánh xạ r : f 1 ⊂R 2 → (α) ⊂R 2 x = x 1 x 2

R là phép lật mặt f1 lên mặt f2 bằng cách xoay mặt f1 với góc θ quanh cạnh kề e1, cho đến khi mặt f1 nằm trong cùng mặt phẳng nhưng ở phía đối diện với mặt f2.

Trong đó θ = π − arccos(~a 1 , ~a 2 ) với 0 6 θ 6 π , ~a 1 và ~a 2 lần lượt là các véc tơ pháp tuyến của mặt phẳng chứa f 1 và f 2.

Dùng định nghĩa của song ánh, dễ dàng chỉ ra được phép lật r là song ánh.

Vì thế các điểm ảnh r(p) = p và r(q) = q tồn tại duy nhất.

Tiếp theo ta chứng minh r bảo toàn khoảng cách.

Thật vậy, giả sử p = (p 1 , p 2 ) T và q = (q 1 , q 2 ) T Như vậy độ dài đoạn [p, q] là: length(p, q) = q(q 1 − p 1 ) 2 + (q 2 − p 2 ) 2 e 1 f 2 f 1 p q

Hình 1.12: f 1 và f 2 trước khi lật f 2 p q f 1 f 2 e1

Hình 1.13: f 1 và f 2 sau khi lật

Tọa độ các điểm r(p) và r(q) là: r(p) = p = (p 1 cos θ − p 2 sin θ, p 1 sin θ + p 2 cos θ) r(q) = q = (q 1 cos θ − q 2 sin θ, q 1 sin θ + q 2 cos θ). Để đơn giản, ta đặt q 1 − p 1 = x; q 2 − p 2 = y Như vậy, length(p, q) = p

Để chứng minh phép lật bảo toàn góc, hãy xem xét hai điểm B và C nằm trên các tia −→ Ax và −→ Ay Do đó, góc A trở thành góc trong tam giác 4 ABC.

Do tính chất phép lật bảo toàn khoảng cách đã chứng minh ở trên, 4 ABC =

Thuật toán tìm đường đi ngắn nhất giữa 2 điểm trong đa giác đơn sử dụng kỹ thuật “phễu” của Lee và

Bài toán tìm đường đi ngắn nhất có nhiều ứng dụng thực tiễn quan trọng Chương này giới thiệu thuật toán hình phễu của Lee và Preparata, kèm theo chứng minh tính đúng đắn và đánh giá độ phức tạp của thuật toán Ngoài ra, chúng tôi cũng cung cấp ví dụ minh họa thuật toán thông qua chương trình Java do Josh Tyler phát triển vào năm 1998.

Bài toán yêu cầu tìm đường đi ngắn nhất trong một đa giác đơn có n đỉnh, từ điểm x đến điểm y, với điều kiện rằng đường đi này phải nằm hoàn toàn trong miền của đa giác.

Cây đối ngẫu

Khái niệm "đối ngẫu" trong lý thuyết đồ thị là một yếu tố quan trọng Luận văn này trình bày khái niệm đối ngẫu của một phép tam giác phân đa giác, dựa trên các tài liệu [13] và [15].

Khi xem xét một đa giác P đã được phân chia thành các tam giác, ta có thể coi đa giác này như một đồ thị G trong mặt phẳng Mỗi tam giác trong phép tam giác phân sẽ là một mặt thuộc miền trong của G Đối ngẫu T của đa giác này được định nghĩa là một đồ thị T = (V, E), trong đó V là tập đỉnh tương ứng với các tam giác, và E là tập cạnh nối hai đỉnh nếu các tam giác tương ứng chia sẻ một cạnh.

Như vậy, đối ngẫu T của đa giác đã tam giác phân là một cây, với mỗi đỉnh có bậc không vượt quá 3 (chứng minh trong [15] Bổ đề 1.2.6 trang 14). x y

Hình 2.1: Cây đối ngẫu của một phép tam giác phân có 12 đỉnh

Như vậy, với đa giác P đã được phân thành các tam giác, hai đỉnh x và y tương ứng sẽ thuộc vào hai tam giác 4 (x) và 4 (y) nằm trong P.

VìT = (V, E)là một cây nên trong T sẽ tồn tại duy nhất một đường điπ nối

Hai đỉnh của V tương ứng với 4 (x) và 4 (y), có thể không trùng với x và y Mỗi cạnh thuộc π cắt mỗi đường chéo d_i của P tại một điểm duy nhất, với i = 1, , p, theo thứ tự từ x đến y Mỗi đường chéo d_i chia P thành hai miền chứa x và y Do đó, đường đi ngắn nhất từ x đến y trong P cũng cắt mỗi đường chéo d_i tại một điểm duy nhất.

Đường đi ngắn nhất giữa hai điểm trong mặt phẳng có thể được coi là một đường gấp khúc, do đó, khái niệm "đỉnh" của đường đi ngắn nhất tương đương với khái niệm đỉnh của đường gấp khúc đã được đề cập trong chương 1.

Bổ đề 2.1.1 khẳng định rằng, trong một đa giác đơn P với n đỉnh được chia thành các tam giác bởi các đường chéo d1, d2, , d(n-3), tập hợp S chứa các điểm cuối của các đường chéo này Do đó, các đỉnh của đường đi ngắn nhất từ điểm x đến điểm y sẽ thuộc vào tập hợp S kết hợp với hai điểm x và y.

Việc chứng minh bổ đề này có thể đọc thêm trong [8].

Tập S chính là tập hợp các đỉnh của đa giác P Để tìm đường đi ngắn nhất từ điểm x đến điểm y, chúng ta cần xây dựng lần lượt các đường đi ngắn nhất từ x đến các điểm cuối của các đường chéo cho đến khi đạt đến y Hợp của những đường đi này sẽ tạo thành một cây T với gốc tại x, chứa đường đi ngắn nhất mà chúng ta cần tìm.

Hình ống tay và hình phễu

Để xác định các đỉnh của cây T, chỉ cần xem xét tập con của S ∪ { x, y }, mà không cần kiểm tra toàn bộ đỉnh của đa giác P Miền P 0, được gọi là hình ống tay, là hợp của các tam giác tương ứng 1-1 với các đỉnh của T Hình ống tay là một đa giác đơn mà cây đối ngẫu tương ứng là một đường gấp khúc đơn Để tìm miền P 0, cần xác định các tam giác tương ứng với các đỉnh dọc theo π, bài toán này tương đương với việc tìm đường đi ngắn nhất từ đỉnh tương ứng với tam giác 4 (x) đến đỉnh tương ứng với tam giác 4 (y) trong cây T Nhiều thuật toán tìm đường đi ngắn nhất như Bellman-Ford, Dijkstra và Floyd-Warshall có thể được áp dụng để giải quyết bài toán này.

Chúng ta có thể chuyển đổi bài toán tìm đường đi ngắn nhất trong một đa giác đơn tùy ý thành bài toán tìm đường đi ngắn nhất trong một hình ống tay.

Hình 2.2: Đa giác P và cây đối ngẫu của đa giác đó s t x y

Hình 2.3: Hình ống tay tìm được từ cây đối ngẫu của đa giác P

Tiếp theo, chúng tôi trình bày cách xây dựng định nghĩa hình phễu được đưa ra bởi Lee và Preparata như sau.

Cho một hình ống tayP cón đỉnh, xlà một điểm thuộcP, vàd ilà các đường chéo của P (16 i 6 n − 3) Kí hiệu:

• v i (1) và v i (2) là hai điểm cuối của đường chéo d i, (16 i 6 n − 3).

• SP (x, v i (j) )là đường đi ngắn nhất từ xtới v i (j) , (j = 1, 2) nằm trong P Theo kết quả của Bổ đề 2.1.1, tập các đỉnh của đường SP (x, v i (j) ), j = 1, 2 nằm trong tập các đỉnh của P.

• Gọis là điểm chung của các đường SP (x, v i (1) ) và SP (x, v i (2) ) sao cho s nằm xa đỉnh x nhất.

Gọi D i là hợp của SP (s, v (1) i ) với SP (s, v (2) i ) và d i, tạo thành một đường gấp khúc đơn khép kín Theo định lý đường cong Jordan, D i chia mặt phẳng thành hai phần: phần trong và phần ngoài Miền R i, bao gồm đường biên D i và miền trong giới hạn bởi D i, được gọi là phễu Trong đó, đoạn d i là nắp phễu và điểm s được xem là đỉnh của phễu.

Hình 2.4: Ví dụ minh họa hình phễu với đỉnh s và nắp phễu d i

Từ định nghĩa của phễu, tính chất sau được chứng minh (xem [13]).

Tính chất 2.2.1 SP (s, v i (j) ),j = 1, 2là các đường gấp khúc lồi hướng vào trong. Tức là mặt lồi của nó hướng vào miền trong của P.

Chứng minh Trước hết, chúng ta chỉ ra các hình phễu R i nằm hoàn toàn trong

Phương pháp quy nạp cho phép chứng minh rằng, với các đường chéo d s, d s+1, , d s+k (k > 0), các điểm SP (s, v (1) i) và SP (s, v (2) i) đều đi qua các đường chéo này Đặc biệt, phễu tương ứng với đường chéo đầu tiên d s là R s = 4 sv (1) s v s (2), nằm trong tập P.

Giả thiết là R i−1 ⊂ P, khi đó phễu R i được tạo ra bằng cách ghép thêm vào

R i−1 một phần hoặc toàn bộ tam giác trong P Vậy R i ⊂ P. s d i

Hình 2.5: Minh họa tính lồi hướng vào trong của SP (s, v i (j) )

Giả sử SP (s, v (1) i ) và SP (s, v i (2) ) không phải là các đường gấp khúc lồi hướng vào trong, theo bất đẳng thức tam giác, tồn tại một đường ngắn hơn từ s đến v i (j) nằm trong P Điều này mâu thuẫn với giả thiết rằng SP (s, v i (j) ) là đường đi ngắn nhất từ s đến v i (j).

Tính lồi của hai đườngSP (s, v i (1) )vàSP (s, v (2) i )cũng chỉ ra rằng đườngSP i =

SP (x, v (1) i ) ∪ SP (x, v i (2) ) rẽ thành hai nhánh tại nhiều nhất một điểm s, điểm s này cũng gọi là đỉnh của SP i.

Chú ý rằng một trong hai đường SP (s, v (1) i ) hoặc SP (s, v i (2) ) có thể rỗng, nhưng cả hai không thể đồng thời bằng rỗng vì v (1) i 6 = v i (2)

Khi có một đường rỗng SP (s, v i (1)), ta có thể thấy rằng SP (s, v i (2)) = d i Trong tình huống này, phễu R i không còn miền trong và SP i chuyển thành một đường gấp khúc đơn giản.

Trong phần tiếp theo của chương này, chúng tôi trình bày chi tiết thuật toán tìm đường đi ngắn nhất trong một hình ống tay có n đỉnh.

Thuật toán tìm đường đi ngắn nhất giữa 2 điểm trong hình ống tay 24

Input: Cho hình ống tay P có n đỉnh và hai điểm x, y thuộc P.

Output: Đường đi ngắn nhất từ x đến y nằm trong P. Ý tưởng của thuật toán là xuất phát từ đỉnh nguồn x, xây dựng các đường

SP i = SP (x, v (1) i ) ∪ SP (x, v i (2) ) chứa đường biên của phễuR i cho tới khi đến được đích, tức là đến khi v i (2) ≡ y

Thuật toán 1: Tìm đường đi ngắn nhất giữa 2 điểm trong hình ống tay.

1 Bước khởi tạo Xây dựng SP 1 bằng cách nối x với v 1 (1) và v 1 (2)

2 Bước tổng quát Xây dựng SP i+1 từ SP i

Gọi s là đỉnh của SP i = SP (x, v (1) i ) ∪ SP (x, v (2) i ), SP i rẽ thành 2 nhánh tại s, kí hiệu 2 đường rẽ nhánh đó làu a u a+1 u b và u a u a−1 u 0 với s = u a ; v i (1) = u b ; v (2) i = u 0 và v (1) i = v i+1 (1) (xem hình 2.6 và 2.7).

Bắt đầu từ đỉnh u0, lần lượt duyệt các đỉnh theo thứ tự u0, u1, , ub Gọi j là chỉ số nhỏ nhất sao cho (2) i+1 uj là tiếp tuyến với đường SP (s, v(1)i) ∪ SP (s, vi(2)) của Ri Xem xét hai trường hợp.

- Thực hiện xóa tất cả các đoạn u l u l+1 với 06 l 6 j − 1

- Thực hiện xóa tất cả các đoạn u l u l+1 với 06 l 6 j − 1

3 Bước kết thúc Sau khi xây dựng được SP n−3, đường chéo d n−3chia P thành hai miền, một trong hai miền đó chứa điểm đích y.

- Áp dụng bước tổng quát ở trên vớii = n − 3ta được SP n−2 = SP (x, v n−2 (1) ) ∪

Trong đó, một đường thẳng l được gọi là tiếp tuyến với một đường cong lồi

Nếu một tập hợp C có ít nhất một điểm chung với một tập hợp khác và tất cả các điểm của C nằm về một phía của đường thẳng l, thì điểm chung duy nhất đó được gọi là tiếp điểm.

Cách tìm tiếp tuyến được trình bày chi tiết trong mục phụ lục.

Chứng minh tính đúng và đánh giá độ phức tạp của thuật toán 26

Chứng minh tính đúng đắn của thuật toán

Trong phần này chúng tôi trình bày lại chi tiết chứng minh tính đúng đắn của thuật toán trong [13].

Mệnh đề 2.4.1 Tập các đỉnh của phễu cùng với đỉnh nguồn x và đỉnh đích y lập thành đường đi ngắn nhất từ x đến y.

Để chứng minh mệnh đề, ta xem xét ký hiệu 4 i+1 (với i = 1, 2, , n − 3) là một tam giác nằm trong P, trong đó hai cạnh của tam giác là hai đường chéo d i và d i+1 Điều này yêu cầu chỉ ra rằng với một điểm u bất kỳ thuộc

4 i+1 , đường đi ngắn nhất từ x tới u phải đi qua đỉnh s của phễu R i.

Xét 2 đường gấp khúc SP (s, v i (1) ) := D (1) i và SP (s, v i (2) ) := D (2) i

Nếu một trong hai đường đi là rỗng, đường còn lại sẽ là đường chéo di, với đỉnh s là một điểm cuối của di Do đó, đường đi ngắn nhất từ x đến u là SP(x, s) ∪ su, nghĩa là đường SP(x, u) phải đi qua đỉnh s.

Nếu cả hai đường D(1) và D(2) đều khác rỗng, ta xem xét đỉnh kề với đỉnh trên một trong hai đường này Vì P là hình ống tay, nên ít nhất một trong các đỉnh kề đó sẽ là đỉnh của P.

Giả sử v₀ ∈ Dᵢ (2) là đỉnh kề với s và cũng là đỉnh của P, thì sv₀ sẽ là một đường chéo của P, mặc dù có thể không phải là đường chéo của phép tam giác phân ban đầu Hơn nữa, sv₀₀ được xem là một đoạn khác nằm trong P.

Do tính lồi của các đường SP (s, v i (j) ), j = 1, 2, các đường thẳng đi qua sv 0 và sv 00 giao với d i, chia miền trong của tam giác 4 i+1 thành tối đa 3 miền con, trong đó điểm u thuộc một trong các miền đó Giả thiết u nằm ở vị trí như trong hình 2.8.

Giả sử tồn tại đường l(x, u) là đường đi ngắn nhất từ x đến u mà không đi qua đỉnh s, và l(x, u) cắt sv 0 tại một điểm p 6 = s, và l(x, u) cắt sv 00 tại điểm p 1. s v i (1) v i (2) v 00 v 0 d i+1 d i

Hình 2.8: Minh họa tính đúng đắn của thuật toán 1

Do tính chất l(x, u) là đường ngắn nhất: length(l(x, p)) + length(l(p, p 1 )) < length(SP (x, s)) + length(sp 1 ) (2.1) Trong đó l(p, p 1 ) là đường đi từ p đến p 1 nằm trong l(x, u).

Theo bất đẳng thức tam giác, ta có mối quan hệ giữa độ dài các đoạn thẳng: length(sp 1) ≤ 6length(sp) + length(l(p, p 1)) Từ đó, suy ra rằng length(SP(x, s)) + length(sp) > length(l(x, p)) Nếu cộng thêm độ dài length(pv 0) vào hai vế của bất đẳng thức trên, ta nhận được kết quả: length(SP(x, s)) + length(sv 0) > length(l(x, p)) + length(pv 0).

Do s là đỉnh của R i và với cách chọn của v 0 ở trên nên s, v 0 ∈ SP (x, v i (2) ), tư đó ta có length(SP (x, v 0 )) = length(SP (x, s)) + length(SP (s, v 0 )) (2.5)

Do ta chọn v 0 là đỉnh kề với s nên SP (s, v 0 ) := sv 0 , thay vào (2.5) length(SP (x, v 0 )) = length(SP (x, s)) + length(sv 0 ) (2.6)

Tức là đường đi ngắn nhất từ x đến v 0 phải đi qua s.

Theo (2.4), đoạn đường từ x đến v 0 qua l(x, p) ∪ pv 0 có chiều dài ngắn hơn so với đoạn đường SP (x, s) ∪ sv 0, điều này dẫn đến mâu thuẫn với đặc tính đã nêu rằng SP (x, s) ∪ sv 0 là đường ngắn nhất từ x đến v 0.

Mệnh đề đã được chứng minh, và khi áp dụng cho SP i := SP n−2 và y := u, chúng ta nhận thấy rằng đường đi ngắn nhất từ x đến y phải đi qua đỉnh s của SP n−2 = SP (x, v n−2 (1)) ∪ SP (x, v (2) n−2) Đồng thời, trong bước cuối của thuật toán, y đã được gán giá trị là v (2) n−2.

Vậy thuật toán được chứng minh.

Đánh giá độ phức tạp của thuật toán

Độ phức tạp của thuật toán trong trường hợp xấu nhất được đánh giá như sau (xem chi tiết trong [13]):

• Các bước khởi tạo và kết thúc chi phí là O(1).

Trong quá trình tổng quát, việc duyệt mỗi đỉnh u i và xác định xem đó có phải là đỉnh của phễu mới hay không tốn O(1) thời gian Nếu một đỉnh đã được duyệt và không phải là đỉnh của phễu mới, nó sẽ bị xóa và sẽ không được duyệt lại trong suốt quá trình xây dựng các hình phễu.

Tổng thời gian để duyệt tất cả các đỉnh cho đến khi tìm được phễu mới bằng số đỉnh đã bị xóa, trong trường hợp xấu nhất, số đỉnh bị xóa là n − 2 (trừ đỉnh nguồn và đỉnh đích) Với n là số đỉnh của đa giác, bước tổng quát của thuật toán có chi phí O(n).

Như vậy tổng chi phí của thuật toán này là O(n).

Chương trình minh họa thuật toán trên java

Trong phần này, chúng tôi cung cấp ví dụ chi tiết về các bước thực hiện thuật toán cho một đa giác đơn Các hình ảnh minh họa được trích xuất từ chương trình do tác giả Josh Tyler phát triển bằng ngôn ngữ lập trình Java vào năm 1998.

Để tìm đường đi ngắn nhất từ điểm nguồn x (chấm đỏ) đến điểm đích y (chấm xanh) trong đa giác đơn P có 22 đỉnh, ta cần xác định các đoạn đường hợp lệ nằm trong P Việc này sẽ giúp tối ưu hóa lộ trình và đảm bảo rằng hành trình giữa hai điểm diễn ra hiệu quả nhất.

Hình 2.9 minh họa một đa giác đơn với 22 đỉnh, trong đó có hai điểm nguồn và điểm đích Các bước của thuật toán được trình bày rõ ràng qua các hình vẽ dưới đây.

Hình 2.10: Đa giác đơn được thực hiện tam giác phân thành các tam giác

Hình 2.11: Cây đối ngẫu tìm được từ phép tam giác phân

Hình 2.12: Tìm ra hình ống tay chứa điểm nguồn và điểm đích

Hình 2.21: Phễu thứ chín, trường hợp này phễu suy biến có miền trong bằng rỗng

Hình 2.22: Đường đi ngắn nhất nối đỉnh nguồn và đỉnh đích

Thuật toán tìm đường đi ngắn nhất giữa hai điểm trên bề mặt khối đa diện

Bài toán tìm đường đi ngắn nhất giữa hai điểm trên bề mặt khối đa diện là một vấn đề cơ bản trong hình học tính toán, thu hút sự quan tâm nghiên cứu của nhiều nhà khoa học.

Bài toán yêu cầu tìm đường đi ngắn nhất giữa hai điểm x và y trên bề mặt của một khối đa diện P trong không gian R³, với các mặt của khối đa diện được cấu thành từ các tam giác Nếu các mặt là đa giác đơn, có thể thực hiện phân tách thành các tam giác để giải quyết vấn đề.

Bề mặt S của khối đa diện P được xác định bởi các mặt tam giác, cạnh kề và đỉnh, trong đó hai điểm x và y nằm trên hai mặt tam giác khác nhau của S Do đó, bài toán tìm đường đi ngắn nhất trên bề mặt khối đa diện P có thể được chuyển đổi thành bài toán tìm đường đi ngắn nhất giữa hai điểm trên dãy mặt tam giác được hình thành từ bề mặt này Nhiều tác giả đã nghiên cứu cách tiếp cận này (xem [22], [23]).

Trong việc tìm đường đi ngắn nhất trên bề mặt khối đa diện lồi trong R3, Sharir và Schorr đã giới thiệu thuật toán đầu tiên với độ phức tạp O(n^3 log n), trong đó n là số mặt của khối đa diện Sau đó, Mitchell, Mount và Papadimitriou phát triển một thuật toán hiệu quả hơn với chi phí O(n^2 log n) cho bất kỳ khối đa diện nào Vào năm 1990, Chen và Han đã cải tiến thuật toán với độ phức tạp O(n^2) Gần đây, Xin và Wang đã thực hiện nhiều cải tiến, đạt được độ phức tạp trong trường hợp xấu nhất là O(k^2), với k là số cạnh kề trong dãy mặt tam giác S.

Trong các nghiên cứu trên, có rất nhiều tác giả đã sử dụng kỹ thuật planar unfolding (tạm dịch là phép lật) (xem [22] trang 309-310 hoặc [23]).

Trong chương này, luận văn sẽ trình bày các nội dung chính như sau:

• Định nghĩa phễu trong không gian 3 chiều được đưa ra bởi nhóm tác giả

An, Giang, Phú và Polthier (xem [7]) và đưa ra một số tính chất mới của phễu trong 3 chiều.

Thuật toán tìm đường đi ngắn nhất giữa hai điểm trên dãy mặt tam giác được xây dựng dựa trên các hình phễu kết hợp với kỹ thuật lật, theo ý tưởng được trình bày trong tài liệu [7].

• Phần cuối chương chúng tôi đưa ra ví dụ cụ thể minh họa cho thuật toán bằng phần mềm javaview.

Hình phễu trong không gian 3 chiều

Trong bài viết này, chúng ta xem xét một dãy m + 1 mặt tam giác được ký hiệu là Cho S = { f 1 , f 2 , , f m+1 } với tập các cạnh kề là E = { e 1 , e 2 , , e m } Điểm u nằm trong mặt f i và cạnh e k có hai điểm cuối là các đỉnh α k và β k, với điều kiện 1 ≤ i ≤ k ≤ m Điểm s được xác định là điểm chung của các đoạn thẳng SP (u, α k ) và SP (u, β k ), sao cho s nằm xa điểm u nhất Hợp của các đoạn SP (s, α k ), SP (s, β k ) cùng với đoạn thẳng [α k , β k ] tạo thành hai miền bị chặn trên bề mặt của khối đa diện P, trong đó chỉ một miền nằm trong dãy mặt S Miền bị chặn F k, được giới hạn bởi các đoạn SP (s, α k ), SP (s, β k ) và [α k , β k ], được gọi là phễu dọc theo S, với đoạn [α k , β k ] là nắp phễu, điểm s là đỉnh phễu, và các đường SP (s, α k ), SP (s, β k ) là đường biên của phễu.

Hình 3.1: Minh họa hình phễu trong 3 chiều dọc theo dãy mặt tam giác, với nắp phễu là [α k , β k ] và đỉnh phễu là s

Chú ý 3.1.1 Điểm s được gọi là nằm xa điểm u nhất nếu các điều kiện sau được thỏa mãn:

Tính chất 3.1.1 Điểm s thỏa mãn điều kiện nằm xa điểm u nhất được xác định như trên luôn tồn tại duy nhất.

Chứng minh Xét hàm f xác định trên tập T như sau f : T →R t 7→ f (t) = length(u, γ(t))

Vì t thuộc các khoảng đóng [a, b] hoặc [a, c] nên dễ thấy tập T bị chặn.

Ta chỉ ra T là tập đóng Thật vậy, lấy dãy { t n } ∞ n=1 tùy ý nằm trong T, giả sử t n → t khi n → ∞.

Do các ánh xạ γ 1 và γ 2 là liên tục, nên khi n → ∞, γ 1 (t n ) → γ 1 (t) và γ 2 (t n ) → γ 2 (t) Cũng do t n ∈ T nên γ 1 (t n ) = γ 2 (t n ) = γ(t n ) từ đóγ 1 (t) = γ 2 (t) = γ(t) hay t ∈ T Vậy theo định nghĩa T là tập đóng.

Vì f là hàm sơ cấp và liên tục, trong khi T là tập đóng và bị chặn, nên tồn tại duy nhất điểm t0 ∈ T sao cho f(t0) = max {f(t) | t ∈ T} Điều này cho thấy luôn có một giá trị duy nhất s = γ(t0).

Bổ đề 3.1.1 khẳng định rằng, cho dãy mặt tam giác S = { f 1 , f 2 , , f m+1 } và hai điểm x ∈ f 1, y ∈ f m+1, đường đi ngắn nhất SP (x, y) từ x đến y qua dãy mặt S sẽ tạo thành một đường gấp khúc Mỗi đoạn thẳng trong đường đi SP (x, y) sẽ thuộc về duy nhất một mặt tam giác trong dãy S.

Theo bổ đề 3.3 trong tài liệu [19], Sharir và Schorr đã chứng minh rằng đường ngắn nhất SP(x, y) phải đi qua các cạnh e_i của khối đa diện và tồn tại duy nhất Do đó, SP(x, y) sẽ cắt các cạnh kề e_i tại một điểm t_i duy nhất (với 1 ≤ i ≤ m).

Hình 3.2: Đường ngắn nhất SP (x, y) là đường gấp khúc và giao với mỗi mặt tam giác f i bằng một đoạn thẳng γ i duy nhất

Giả sử SP (x, y) giao với mặt f qua đoạn γ i = L(t i−1, t i) với i thuộc e i (1 < i ≤ m), mỗi đường γ i đại diện cho đường ngắn nhất từ điểm đầu t i−1 đến điểm cuối t i Ký hiệu L(t i−1, t i) dùng để chỉ bất kỳ đường đi nào từ t i−1 đến t i, có thể là cong, thẳng hoặc gấp khúc.

Vì các điểm t i−1 và t i cùng thuộc mặt f i nên đường ngắn nhất nối 2 điểm này chính là đoạn thẳng [t i−1 , t i ] Hay γ i = [t i−1 , t i ] là đoạn giao duy nhất của

Như vậy bổ đề trên được chứng minh.

Tiếp theo ta chứng minh một số tính chất của hình phễu như sau:

Tính chất 3.1.2 Các hình phễu nằm hoàn toàn trong dãy mặt S

Chứng minh Không mất tổng quát, giả sử điểm đầu u ∈ f 1, khi đó phễu F 1 =

4 uα 1 β 1 hiển nhiên nằm trong mặt tam giác f 1 ∈ S.

Nếu có phễu F k nằm trên dãy mặt S với 1 6 k 6 m , khi đó phễu mới F k+1 được tạo ra bằng cách ghép thêm vào F k một phần hoặc toàn bộ mặt tam giác f k+1.

Vậy F k+1 cũng nằm hoàn toàn trên S Từ đó tính chất được chứng minh. α 4 β 4 s 4 s 4 α 4 β 4 α 5 β 5 s 5 α 5 β 5 α 6 β 6 α 5 β 5 α 6 β 6 s 6 β 7 α 7 β 7 α 7 α 8 β 8 β 8 α 8 s 8 β 10 s 10 α 10 β 10 s 10 s 11 β 11 α 11 x y s u α k β k f k+1

Hình 3.3: Minh họa tính chất các hình phễu nằm trên bề mặt S

Tính chất 3.1.3 Góc trong tại các đỉnh nằm trên đường đi ngắn nhấtSP (s, α k ) và SP (s, β k ) (không kể các đỉnh s, α k và β k) có số đo lớn hơn hoặc bằng π.

Chứng minh Kí hiệu D = SP (s, α k ) ∪ SP (s, β k ) và V là tập các đỉnh nằm trên

Giả sử có một đỉnh v thuộc tập hợp V, tại đó góc trong θ nhỏ hơn π Không làm mất tính tổng quát, ta giả định rằng v nằm trong không gian (s, αk) và là điểm chung của n mặt tam giác như hình minh họa Trường hợp v thuộc không gian (s, βk) cũng có thể được chứng minh tương tự.

Hình 3.4: Minh họa tính chất tổng các góc trong tại đỉnh v lớn hơn hoặc bằng 180 0

Theo mệnh đề 3.2 (xem [7] trang 12) tồn tại một đường trắc địa thẳng nhất

Đoạn L1 nối hai đỉnh αk1 và αkn, và theo bổ đề 3.1 trên trang 10 trong tài liệu [7], L1 là đường ngắn nhất từ αk1 đến αkn Do đó, ta có bất đẳng thức: length(L1) ≤ length(αk1 v) + length(v αkn) Hơn nữa, theo giả thiết ban đầu, ta có length(SP(s, αk)) = length(SP(s, αk1)) + length(αk1 v).

So sánh (3.1) và (3.2) length(SP (s, α k )) ≥ length(SP (s, α k 1 )) + length( L 1 ) + length(α k n α k ) (3.3) Điều này mâu thuẫn với giả thiết độ dài đường SP (s, α k ) là ngắn nhất.

Vậy không có đỉnh nào của V có góc trong nhỏ hơn π (điều phải chứng minh).

Tính chất 3.1.4 đề cập đến điểm u thuộc mặt f i trong dãy mặt S, với F k (u) là các hình phễu có nắp phễu là cạnh e k = [α k , β k ] của khối đa diện, trong đó i6 k 6 m + 1 Các hình phễu F k (u) đều nằm về một phía của cạnh [α k , β k ] dọc theo dãy mặt S.

Chúng ta sẽ chứng minh bằng phương pháp quy nạp Giả sử đỉnh u ∈ f 1, phễu F 1 = 4 uα 1 β 1 rõ ràng nằm trong mặt f 1 và ở một phía của đoạn [α 1, β 1] Tiếp theo, giả thiết phễu F k nằm ở một phía của đoạn u α k β k f k+1 e k e k+1.

Hình 3.5: Minh họa tính chất 3

[α k , β k ] với 16 k 6 m , kí hiệu miền R = F k ∪ f k+1 Ta thấy R nằm về một phía của đoạn [α k+1 , β k+1 ], mặt khác phễu F k+1 ⊆ R.

Suy ra phễu F k+1 phải nằm về 1 phía của đoạn [α k+1 , β k+1 ] Như vậy tính chất được chứng minh.

Thuật toán tìm đường đi ngắn nhất giữa hai điểm dọc theo dãy mặt tam giác

điểm dọc theo dãy mặt tam giác

Input: Cho S = { f 1 , f 2 , , f m+1 }, (m > 1) là một dãy mặt tam giác với dãy các cạnh kề tương ứng là E = { e 1 , e 2 , , e m }, và 2 điểm x, y lần lượt nằm trong hai mặt f 1 và f m+1.

Output: Đường đi ngắn nhấtSP (x, y) từxtới ydọc theo S (x là đỉnh nguồn và y là đỉnh đích).

1 e i = [α i , β i ], tức là mỗi cạnh kề e i có 2 điểm cuối là các đỉnh α i và β i của khối đa diện (16 i 6 m ).

2 Giả sử a là điểm bất kỳ thuộc mặt phẳng chứa f i, kí hiệu r i (a) là ảnh của điểm a lên mặt phẳng chứa f i+1 qua phép lật r i quanh cạnh e i, 16 i 6 m

Thuật toán 2: Tìm đường đi ngắn nhất giữa 2 điểm dọc theo dãy mặt tam giác bằng kỹ thuật phễu

• F 1 là miền giới hạn bởi D 1 và e 1

• Trong mặt phẳng chứa ảnh của Fi và f i+1 thực hiện:

(a) D i+1 := u 0 u 1 u a u a+1 u b , trong đó D i+1 là ảnh của D i qua phép lật và u a := r i (s i ); u 0 := v i (2) ; u b := v (1) i

Từ v i+1 (2), chúng ta sẽ lần lượt duyệt các đỉnh từ u 0 đến u b để tìm tiếp tuyến với đường biên của miền R i, nơi R i được giới hạn bởi các đường SP (r i (s i ), α i ), SP (r i (s i ), β i ) và e i Gọi k là tiếp điểm tìm được Chúng ta sẽ xem xét các trường hợp sau: i Nếu k khác a:

- Xóa các đoạnu l u l+1 với 06 l 6 k − 1 và thêm vào D i+1 đoạn v (2) i+1 u k

- Xóa các đoạnu l u l+1 với 06 l 6 k − 1 và thêm vào D i+1 đoạn v (2) i+1 u k

• Fi+1 là miền giới hạn bởi D i+1 và e i+1 u a :=s i u 0 :=v i (2) u b :=v (1) i :=v (1) i+1 e i v i+1 (2)

Hình 3.6: Minh họa thuật toán với trường hợp (i) u a := s i u 0 := v (2) i e i

Hình 3.7: Minh họa thuật toán với trường hợp (ii)

• Áp dụng bước 2 ở trên với Fi thay bằngFm ta được Fm+1 là miền giới hạn bởi D m+1 và e m+1.

• Lật Fm+1 trở lại bề mặt khối đa diện ban đầu ta tìm được đường đi ngắn nhất SP (x, y) thuộc vào đường biên của Fm+1.

Chứng minh tính đúng đắn và đánh giá độ phức tạp của thuật toán 42

Chứng minh tính đúng đắn của thuật toán

Để chứng minh tính đúng đắn của thuật toán, trước hết ta có nhận xét sau:

Bằng cách áp dụng kỹ thuật chứng minh tương tự như trong bổ đề 1.7.1, chúng ta có thể khẳng định rằng bổ đề này vẫn giữ nguyên tính chất bảo toàn góc và khoảng cách khi thay thế giả thiết f1, f2 và e bằng Fi, fi+1 và ei với 16 ≤ i ≤ m.

Tiếp theo ta chứng minh mệnh đề sau.

Trong miền Fk, các đường đi ngắn nhất từ điểm ảnh r k (x) đến một điểm u bất kỳ trong mặt f k+1 luôn phải đi qua r k (s k ) với 16 k 6 m Ở đây, r k đại diện cho phép lật Fk quanh cạnh kề e k lên mặt f k+1, trong khi s k là đỉnh của phễu Fk.

Chứng minh Với k = 1, s 1 = x Khi đó r 1 (s 1 ) = r 1 (x), vậy với u bất kỳ thuộc f 2 ta có SP (r 1 (x), u) = SP (r 1 (s 1 ), u).

Giả thiết SP (r i−1 (x), u) đi qua r i−1 (s i−1 ) với u là điểm thuộc f i và mọi số 16 i 6 m Cần chứng minh rằng nhận định này đúng với i = m + 1, tức là SP (r m (x), u) phải đi qua r m (s m) trong đó u ∈ f m+1 Để đơn giản trong trình bày, ta kí hiệu lại các điểm.

Trường hợp 1, giả sử một trong hai đường C 1 hoặc C 2 bằng rỗng Đường còn lại sẽ chứa cạnh e m và v trùng với một đỉnh cuối củae m.

Khi đóSP (x ∗ , u) = SP (x ∗ , v) ∪ [v, u] Như vậy, mệnh đề trên được chứng minh. Trường hợp 2, giả sử cả hai đường C 1 và C 2 khác rỗng.

Vì v ∈ SP (v, α i ) và v ∈ SP (v, β i ) nên tồn tại điểm v 1 thuộc SP (v, α i ) hoặc

SP (v, β i ) sao cho [v, v 1 ] là một đoạn thẳng nối 2 ảnh của đỉnh của dãy mặt S Mặt khác, phép lật bảo toàn góc (bổ đề 1.7.1) và các đường SP (x, α i ) và

Các đường lồi hướng vào trong SP (x, β i ) tạo ra các ảnh C 1 và C 2 cũng là những đường lồi hướng vào trong Do đó, các đường thẳng chứa hai đoạn [v, v 1 ] và [v, v 2 ] (với [v, v 2 ] là một đoạn tùy ý trong Fi) sẽ cắt e i, chia tam giác f i+1 thành tối đa 3 miền, trong đó điểm u sẽ thuộc một trong các miền đó Giả sử u nằm ở vị trí như hình 3.7, nếu SP (x ∗ , u) không đi qua đỉnh v, thì nó sẽ cắt các đoạn [v, v 1 ] và [v, v 2 ] tại các điểm p 1 và p 2 khác v.

Do tính chất đường ngắn nhất, ta có: length(SP (x ∗ , p 1 )) + length(L(p 1 , p 2 )) < length(SP (x ∗ , v)) + length(vp 2 ) (3.4) p 1 p 2 u e i

Hình 3.8 minh họa tính đúng của thuật toán 2, trong đó L(p1, p2) thuộc SP(x∗, u) Áp dụng bất đẳng thức tam giác, ta có độ dài của vp2 không vượt quá độ dài của vp1 cộng với độ dài của đoạn p1p2 Thay vào bất đẳng thức, ta nhận được rằng độ dài của SP(x∗, v) cộng với độ dài của vp1 lớn hơn độ dài của SP(x∗, p1) Do đó, ta suy ra rằng độ dài của SP(x∗, v) cộng với độ dài của vv1 lớn hơn độ dài của SP(x∗, p1) cộng với độ dài của p1v1.

Dov, v 1 ∈ SP (x ∗ , v) nênSP (x ∗ , v 1 ) = SP (x ∗ , v) + SP (v, v 1 ) Mặt khác SP (v, v 1 ) = vv 1.

Đường đi ngắn nhất từ x∗ đến v1 qua v mâu thuẫn với (3.6), vì độ dài của đường đi ngắn nhất SP(x∗, v) lớn hơn đường đi theo SP(x∗, p1) ∪ pp1.

Như vậy mệnh đề trên được chứng minh.

Điểm chọn bất kỳ sẽ trùng với điểm đích, và x ∗ là hình ảnh của điểm nguồn thông qua phép lật lên mặt f m+1 Đường đi từ điểm x ∗ đến y được tìm thấy bằng thuật toán là đường ngắn nhất trong mặt phẳng chứa f m+1.

Khi lật điểm LậtSP (x ∗ , y) trở lại bề mặt S, ta nhận được đường D(x, y) Chúng ta có thể xác định rằng length(D(x, y)) = length(SP (x ∗ , y)) Điều này có nghĩa là mỗi khi thực hiện phép lật mặt f i+1 trở lại mặt f i trước đó, phép lật ngược này vẫn giữ nguyên khoảng cách.

Thật vậy, xét phép lật r i từ mặt phẳng (α i ) chứa tam giác f i lên mặt phẳng (α i+1 ) chứa tam giác f i+1 như sau: r i : (α i ) ⊂R 2 → (α i+1 ) ⊂R 2 x = (x 1 , x 2 ) 7→ r i (x) = (x 1 cos θ − x 2 sin θ; x 1 sin θ + x 2 cos θ)

Ta tìm được ánh xạ ngược r i −1 : r i −1 : (α i+1 ) ⊂R 2 → (α i ) ⊂R 2

Bằng cách chứng minh tương tự trong Bổ đề 1.7.1, ta cũng chỉ ra được length(r i −1 (p), r i −1 (q)) = length(p, q), với p, q là hai điểm tùy ý trong mặt phẳng α i+1.

Như vậy ta có length(D(x, y)) = length(SP (x ∗ , y)).

Giả sử tồn tại một đườngL(x, y)là đường đi khác từxtớiy ngắn hơnD(x, y), và cùng nằm trên S Tức là length(L(x, y)) < length(D(x, y)).

Lật các đường D(x, y) và L(x, y) lên mặt tam giác f m+1 lần lượt bằng các phép lật r 1 , r 2 , r m Kí hiệu D(x, y) và L(x, y) lần lượt là ảnh thu được của các đường này.

Theo nhận xét đã chứng minh ở trên D(x, y) ≡ SP (x ∗ , y) nên: length(D(x, y)) = length(SP (x ∗ , y))6length(L(x, y) Mặt khác phép lật bảo toàn khoảng cách, tức là length(D(x, y)) = length(D(x, y)) và length(L(x, y)) = length(L(x, y)).

Mâu thuẫn với giả thiết L(x, y) là đường đi ngắn hơn D(x, y), có nghĩa là không tồn tại đường đi nào ngắn hơn từ x đến y Đường đi ngắn nhất dọc theo một dãy mặt tam giác là duy nhất, như đã chứng minh trong tài liệu tham khảo [7], trang 8 Do đó, D(x, y) tương đương với SP(x, y), cho thấy rằng đường đi ngắn nhất tìm được từ thuật toán 2 chính là nghiệm cần tìm của bài toán.

Đánh giá độ phức tạp của thuật toán

Độ phức tạp của thuật toán được đánh giá trong trường hợp xấu nhất như sau:

• Bước 1 chi phí là hằng số.

Trong bước 2 và bước 3, thuật toán thực hiện m lần lật, với mỗi lần lật cần tìm phễu mới theo 2 chiều, tốn chi phí O(m) Do đó, tổng chi phí cho hai bước này là O(m²).

Vậy tổng chi phí cho thuật toán là O(m 2 ) + O(m) ≈ O(m 2 ), với m là số mặt tam giác để đi từ đỉnh nguồn x tới đỉnh đích y dọc theo S

Ví dụ minh họa cho thuật toán trên phần mềm javaview

Xét một khối đa diện P với hai điểm x và y nằm trên bề mặt của nó, giả sử x và y là hai đỉnh của khối đa diện Nhiệm vụ là xác định đường đi ngắn nhất từ điểm x đến điểm y trên bề mặt P.

Đầu tiên, chúng ta xác định một dãy mặt tam giác trên bề mặt khối đa diện có chứa hai đỉnh x và y Trong ví dụ này, dãy 11 mặt tam giác được chọn là S = { f1, f2, , f11 } như minh họa trong hình 3.10 Sau đó, các mặt còn lại sẽ được loại bỏ, dẫn đến dãy mặt được thể hiện trong hình 3.11.

Hình 3.9: Khối đa diện P ban đầu x y

Hình 3.10: Chọn các mặt tam giác sẽ xóa bỏ trên bề mặt khối đa diện P x y

Hình 3.11: Dãy 11 mặt tam giác chứa điểm nguồn và điểm đích nằm trên P

Tiếp theo chúng ta áp dụng thuật toán 2 để tìm đường đi từ x tới y Chi tiết các bước như sau:

Hình 3.12: Khởi tạo F 1 với nắp phễu là cạnh e 1 và đỉnh phễu là s 1 ≡ x r 1 (s 1 ) := s 2 α 1 β 1 f 2

Hình 3.14: F 2 là miền giới hạn bởi D 2 và cạnh e 2 u b f 3 r 2 (s 2 ) := s 3 u 0 α 3

Hình 3.16: F 3 là miền giới hạn bởi

Hình 3.18: F 4 là miền giới hạn bởi

Hình 3.20: F 5 là miền giới hạn bởi D 5 và cạnh e 5 r 5 (s 5 ) = s 6 β 5 α 5

Hình 3.22: F 6 là miền giới hạn bởi D 6 và cạnh e 6 r 6 (s 6 ) = s 7 u 0 u b

Hình 3.24: F 7 là miền giới hạn bởi

Hình 3.26: F 8 là miền giới hạn bởi

Hình 3.28: F 9 là miền giới hạn bởi

Hình 3.30: F 10 là miền giới hạn bởi D 10 và cạnh e 10 r 10 (s 9 ) r 10 (s 10 ) = s 11 β 10 α 10

Hình 3.32: F 11 là miền giới hạn bởi D 11 và cạnh e 11

Hình 3.33: Đường đi ngắn nhất nối 2 điểm x và y nằm trên S

Tiếp theo chúng tôi trình bày ví dụ chi tiết tìm đường đi ngắn nhất nối 2 điểm dọc theo một khối đa diện có 8 mặt.

Ví dụ 3.4.2 Cho khối đa diện P có 8 mặt như trong hình, X và Y là các điểm nguồn và điểm đích của khối đa diện.

Hình 3.34: Khối đa diện có 8 mặt tam giác Để tìm đường đi ngắn nhất từ X tới Y ta thực hiện các bước sau:

Chia khối đa diện P thành 4 dãy mặt S 1 , S 2 , S 3 , S 4 sao cho các dãy mặt này có ít tam giác nhất có thể và đều chứa điểm nguồn và điểm đích.

Hình 3.35: Dãy mặt thứ nhất S 1 Hình 3.36: Dãy mặt thứ hai S 2

Hình 3.37: Dãy mặt thứ ba S 3 Hình 3.38: Dãy mặt thứ tư S 4

Lần lượt tìm đường đi ngắn nhất từ X tới Y trên các dãy mặt S 1 , S 2 , S 3 , S 4 bằng cách áp dụng thuật toán 2.

Gọi SP 1 , SP 2 , SP 3 , SP 4 lần lượt là các đường đi ngắn nhất tìm được ở bước trên.

Trong hình vẽ bên dưới minh họa thuật toán với một dãy S 2.

Trong các dãy mặt tam giác còn lại làm tương tự ta tìm được 4 đường đi ngắn nhất từ X đến Y.

Tìm kiếm trong bốn lộ trình ngắn nhất để xác định đường đi có độ dài ngắn nhất Kết luận rằng đường đi ngắn nhất cần tìm trên P là đường có độ dài nhỏ nhất trong số các lộ trình đã xác định.

Hình 3.40: Lật phễu F 1 lên mặt tam giác thứ 2

Hình 3.41: Trong mặt phẳng f 2 , tìm phễu mới F 2

Hình 3.42: Lật phễu F 2 trở lại bề mặt của P ta được SP 2 (X, Y )

Luận văn tập trung nghiên cứu về thuật toán tìm đường đi ngắn nhất giữa

Thuật toán tìm đường đi ngắn nhất giữa hai điểm trong một miền hình học được trình bày dựa trên hai phương pháp: phương pháp của Lee và Preparata cho đa giác đơn, và phương pháp của An, Giang, Phú và Polthier cho bề mặt khối đa diện.

Tóm tắt các kết quả chính mà luận văn đã đạt được như sau:

• Trình bày lại các khái niệm cơ bản về lý thuyết đồ thị, thuật toán, đa giác đơn và đường gấp khúc, phép tam giác phân đa giác.

Dãy mặt tam giác là một cấu trúc hình học quan trọng trong hình học đa diện, trong đó các mặt được sắp xếp theo một trình tự nhất định Đường đi dọc theo dãy mặt tam giác thể hiện cách thức di chuyển qua các đỉnh và cạnh của hình đa diện Khái niệm góc tại một điểm trên bề mặt khối đa diện giúp xác định mối quan hệ giữa các mặt và điểm đó Cuối cùng, phép lật là một thao tác hình học cho phép biến đổi hình dạng của đa diện mà vẫn giữ nguyên các đặc điểm cấu trúc cơ bản.

• Trình bày lại khái niệm cây đối ngẫu, hình ống tay, phễu trong đa giác đơn và phễu trong dãy mặt tam giác.

• Trình bày lại thuật toán Dijkstra, thuật toán tìm tiếp tuyến với một đường cong lồi.

Bài viết trình bày các bước chi tiết để áp dụng thuật toán tìm đường đi ngắn nhất giữa hai điểm trong đa giác đơn, sử dụng kỹ thuật phễu của Lee và Preparata Thuật toán này được chứng minh là chính xác và hiệu quả, đồng thời cũng được đánh giá về độ phức tạp, giúp người đọc hiểu rõ hơn về cách thức hoạt động và ứng dụng của nó trong các bài toán thực tiễn.

• Minh họa trực quan thuật toán tìm đường đi ngắn nhất giữa 2 điểm trong đa giác đơn bằng phần mềm java được xây dựng bởi Josh Tyler năm 1998.

• Xây dựng và chứng minh một số tính chất mới của hình phễu trong dãy mặt tam giác.

Thuật toán tìm đường đi ngắn nhất giữa hai điểm trên bề mặt khối đa diện được trình bày chi tiết, sử dụng kỹ thuật lật dựa trên ý tưởng của An, Giang, Phú và Polthier Kỹ thuật này cho phép xác định lộ trình tối ưu bằng cách phân tích cấu trúc hình học của khối đa diện, từ đó tối ưu hóa quá trình tìm kiếm đường đi Việc áp dụng thuật toán này không chỉ nâng cao hiệu quả trong việc tìm kiếm mà còn mở ra nhiều ứng dụng tiềm năng trong lĩnh vực đồ họa máy tính và mô phỏng hình học.

Tuy nhiên, để đơn giản hơn thuật toán chúng tôi trình bày trong luận văn không sử dụng đệ quy và không sử dụng khái niệm đường định hướng.

Ngoài ra, luận văn đã đưa ra được chứng minh tính đúng đắn của thuật toán mới.

• Giới thiệu về phần mềm javaview, một phần mềm hữu ích dùng trong hình học tính toán.

• Đưa ra được minh họa trực quan từng bước của thuật toán tìm đường đi ngắn nhất trên bề mặt khối đa diện bằng phần mềm javaview.

Do giới hạn về thời gian và kiến thức, chúng tôi chưa thể khai thác hết các hướng nghiên cứu mới Vẫn còn nhiều tiềm năng phát triển mà luận văn chưa đề cập đến.

Chúng tôi xin đưa ra một số vấn đề có thể tiếp tục nghiên cứu và phát triển như sau:

• Lập trình cho thuật toán tìm đường đi ngắn nhất giữa 2 điểm trên bề mặt khối đa diện.

Xây dựng thuật toán tìm đường đi ngắn nhất giữa hai điểm trong một miền hình học cụ thể, với đỉnh nguồn và đỉnh đích có thể di chuyển trên một đường cong, là một nhiệm vụ quan trọng trong lĩnh vực tối ưu hóa và đồ họa máy tính Thuật toán này không chỉ giúp xác định lộ trình hiệu quả mà còn có thể áp dụng trong nhiều lĩnh vực như robot tự hành, lập bản đồ và mô phỏng giao thông.

Xây dựng một thuật toán tối ưu để tìm dãy mặt tam giác nối liền giữa điểm nguồn và điểm đích trong một khối đa diện bất kỳ, đảm bảo thời gian chạy của thuật toán đạt hiệu suất tốt nhất.

[1] Nguyễn Hữu Điển (2005), Một số vấn đề về thuật toán, NXB Giáo dục, Hà Nội.

[2] Nguyễn Hữu Ngự (2001), Lý thuyết đồ thị, NXB Đại Học Quốc Gia, Hà Nội.

[3] Đặng Huy Ruận (2004), Lý thuyết đồ thị và ứng dụng, NXB Khoa học Kỹ thuật, Hà Nội.

[4] Trần Vũ Thiệu, Nguyễn Thị Thu Thủy (2011), Giáo trình tối ưu phi tuyến, NXB Đại học Quốc gia Hà Nội.

[5] Agarwal P L., Har-Peled S., Karia M (2002), “Computing approximate shortest paths on convex polytopes”, Algorithmica, pp 227-242.

[6] Amato N M., Goodrich M T., Ramos E A (2000), "Linear-Time Trian- gulation of a Simple Polygon Made Easier Via Randomization", ACM New York, 201-212.

[7] An P T., Giang D T., Phu H X., Polthier K (2015), Straightest geodesics for finding locally and globally shortest paths on polyhedral sur- faces, manuscript.

[8] Chein O and Steinberg L (1983), “Routing past unions of disjoint rectilin- ear battiers”, Networks, 13, 389-398.

[9] Chen J, Han Y (1990), “Shortest paths on polyhedron”, In: Proceedings of the sixth annual symposium on computational geometry, p 360-9.

[10] Garey M R., Johnson D S., Preparata F P., and Tarjan R E (1978),

“Triangulating a simple polygon”, Information Processing Lett, 7, 175-179.

[11] Guibas L., Hershberger J., Leven D., Sharir M and Tarjan R E (1987),

“Linear-Time Algorithms for Visiblitity and Shortest path Problems Inside Triangulated Simple Polygons”, Springer New York, Algorithmica 2, 1-4: 209-233.

[12] Hales T C (2007), “Jordan’s Proof of the Jordan Curve Theorem”, Studies in Logic, Grammar and Rhetoric, 10 (23), pp 45-60.

[13] Lee D T and Preparata F P (1984), “Euclidean shortest paths in the presence of rectilinear battiers”, Networks, 14, pp 393-410.

[14] Mitchell JSB, Mount DM, Papadimitriou CH (1987), “The discrete geodesics problem”, SIAM Journal on Computing, 16 (4): 647-68.

[15] O’Rourke J (2004), Computational Geometry in C, second edition, Cam- bridge University Press.

[16] Papadopoulos A (2005), Metric spaces, convexity and non-positive cur- vature, IRMA Lectures in Mathematics and Theoretical Physics, vol 6, European Mathematical Society (EMS), Zurich.

[17] Polthier K and Schmies M (1998), “Straightest Geodesics on Polyhedral Surfaces”, in H C Hege and K Polthier, Editors, Mathematical Visualiza- tion, Springer Verlag, Heidelberg, pp 135-150.

[18] Sethian J A (1999), “Fast marching methods”, SIAM Review, 41 (2), pp.199-235.

[19] Sharir M., Schorr A (1986), “On shortest paths in polyhedral spaces”,SIAM Journal on Computing, 15 (1): 193-215.

[20] Toponogov, Victor Andreevich (2006), Differential Geometry of Curves and Surfaces: A Concise Guide, Springer, p 15, ISBN 9780817643843.

[21] Trong V.P (2001), “Determination geometrique de chemins geodesiques sur des sufaces de subdivision”, Applied Mathematics, University Joseph Fourier, Laboratory LMC-IMAG, PhD Thesis.

[22] Trong V.P, Szafran N., Biard L (2001), “Pseudo-geodesics on three- demensional surfaces and pseudo-geodesic meshes”, Numerical Algorithms,

[23] Xin S.-Q., Wang G.-J (2007), “Efficiently determining a locally shortest path on polyhedral surfaces”, Computer-Aided Design, 39, pp 1081-1090.

[24] Guibas L., Hershberger J., Leven D., Sharir M., Tarjan R E (1987),

“Linear-Time Algorithms for Visibility and Shortest Path Problems InsideTriangulated Simple Polygons”, Algorithmica, textbf2, pp 209-233.

JavaView là phần mềm hình học tính toán được phát triển bằng Java bởi nhóm Polthier Phần mềm này cho phép hiển thị đối tượng hình học 3D và đi kèm với thư viện phần mềm tính toán, cung cấp giải pháp và công cụ hữu ích cho nhiều bài toán hình học JavaView giúp người dùng trải nghiệm đồ thị với đồ họa sinh động trong không gian ba chiều.

Javaview hỗ trợ tích hợp dễ dàng với các phần mềm khác như Mathematica và Maple, đồng thời là phần mềm miễn phí với các thư viện có thể tải về tại www.javaview.de.

1 Hướng dẫn cách cài đặt JavaView

Các bước cài đặt JavaView như sau:

1 Xác định xem bạn muốn cài đặt JavaView riêng biệt (mặc định) hay muốn chạy JavaView trong Mathematica hay Maple.

2 Tải bộ cài đặt hoặc file ZIP tương ứng bằng cách nhấn vào tên của nó.

3 Khởi động chương trình cài đặt tương ứng từ các file ZIP vào một thư mục bạn muốn lưu.

4 Khi giải nén, bạn cần đảm bảo cấu trúc thư mục của file ZIP và tên file không thay đổi.

5 Bạn có thể tải về các file bổ sung từ mục Tools và giải nén vào cùng thư mục.

6 Để có thể xem hướng dẫn chi tiết bạn có thể tham khảo www.javaview.de/download/.

2 Giới thiệu sơ lược các chức năng của JavaView

JavaView là một công cụ mạnh mẽ giúp người dùng hình dung trực quan và chính xác đường đi giữa hai điểm trên bề mặt của vật thể 3D Công cụ này cho phép tích hợp đồ thị 3D vào tài liệu HTML, mang đến khả năng sử dụng trực tuyến tiện lợi.

Các chức năng chính mà JavaView cung cấp bao gồm:

1 Minh họa các đối tượng hình học dưới dạng 3D và các thể hiện tính toán số học của chúng.

2 Đưa ra các thể hiện toán học trong các tạp chí điện tử trực tuyến.

3 Phát triển các thuật toán trong một lớp thư viện mở.

4 Các thuật toán riêng và các định dạng file để cung cấp cho các mô hình tính toán.

5 Có thể tích hợp với một phần mềm thứ ba thông qua JavaView API.

3 Minh họa một số chức năng cơ bản

Kỹ thuật 1 Tạo một dãy các mặt tam giác trong 3D

1 Mở một khối đa diện.

2 Dùng chức năng đánh dấu một dãy mặt (Method > Mark > Mark Ele- ments).

3 Đảo ngược sự đánh dấu ở trên (Method > Invert Elements Marked)

4 Xóa các mặt đã đánh dấu (Delete > Remove Marked Elements)

Các bước trên được minh họa cụ thể trong hình bên dưới.

Kỹ thuật 2 Tìm đường trắc địa (hoặc đường đi ngắn nhất) trên dãy mặt tam giác trong 3D

1 Mở một dãy mặt đã tạo được ở trên

2 Mở hộp thoại chức năng (Method > Effect > Compute Geodesics)

3 Chọn điểm nguồn và điểm đích nằm trên dãy mặt

4 Tích chọn tìm đường trắc địa hoặc tìm đường đi ngắn nhất

5 Chọn nút bắt đầu tìm đường.

Hình 3.47: Hộp thoại chức năng tìm đường trắc địa

Hình 3.48: Đường trắc địa dọc theo dãy mặt tam giác

B Thuật toán Dijkstra tìm đường đi ngắn nhất trong đồ thị

Thuật toán Dijkstra được giới thiệu trong phần này nhằm tìm đường đi ngắn nhất giữa hai điểm trong đồ thị Đây là một thuật toán quan trọng hỗ trợ việc xác định hình ống tay trong thuật toán 1.

Thuật toán Dijkstra, được giới thiệu vào năm 1959, nhằm mục đích tìm đường đi ngắn nhất giữa hai điểm a và b trong một đồ thị G có n đỉnh và trọng số không âm Đầu vào của thuật toán là đồ thị G = (V, E) với n đỉnh và hai điểm a, b thuộc tập V.

Output Đường đi ngắn nhất từ a đếnb.

Thuật toán thực hiện trên ý tưởng gán và giảm giá trị các nhãn d(i) tương ứng tại mỗi đỉnh i của đồ thị G (xem [2]).

• Nếu có cạnh (i, j) mà đỉnh i đã được gán nhãn và đỉnh j chưa được gán nhãn hoặc đỉnhj đã gán nhãn nhưng d(i) + l(i, j) < d(j)thì thực hiện giảm nhãn d(j) := d(i) + l(i, j)

• Lặp lại bước 2 cho đến khi không gán hoặc giảm nhãn được nữa.

Thuật toán chi tiết được mô tả như sau: (xem [2])

Begin u := đỉnh không thuộc S và có nhãn d(u) nhỏ nhất;

S := S ∪ u; for v ∈ V \ S do if d(u) + l(u, v) < d(u) then d(v) := d(u) + l(u, v); truoc[v] := u; end if end for End

C Thuật toán tìm tiếp tuyến với một đường gấp khúc lồi

Ngày đăng: 07/07/2021, 14:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Nguyễn Hữu Ngự (2001), Lý thuyết đồ thị, NXB Đại Học Quốc Gia, Hà Nội Sách, tạp chí
Tiêu đề: Lý thuyết đồ thị
Tác giả: Nguyễn Hữu Ngự
Nhà XB: NXB Đại Học Quốc Gia
Năm: 2001
[4] Trần Vũ Thiệu, Nguyễn Thị Thu Thủy (2011), Giáo trình tối ưu phi tuyến, NXB Đại học Quốc gia Hà Nội.Tiếng Anh Sách, tạp chí
Tiêu đề: Giáo trình tối ưu phi tuyến
Tác giả: Trần Vũ Thiệu, Nguyễn Thị Thu Thủy
Nhà XB: NXB Đại học Quốc gia Hà Nội
Năm: 2011
[5] Agarwal P. L., Har-Peled S., Karia M. (2002), “Computing approximate shortest paths on convex polytopes”, Algorithmica, pp. 227-242 Sách, tạp chí
Tiêu đề: Computing approximateshortest paths on convex polytopes
Tác giả: Agarwal P. L., Har-Peled S., Karia M
Năm: 2002
[6] Amato N. M., Goodrich M. T., Ramos E. A. (2000), "Linear-Time Trian- gulation of a Simple Polygon Made Easier Via Randomization", ACM New York, 201-212 Sách, tạp chí
Tiêu đề: Linear-Time Triangulation of a Simple Polygon Made Easier Via Randomization
Tác giả: Amato N. M., Goodrich M. T., Ramos E. A
Nhà XB: ACM
Năm: 2000
[8] Chein O. and Steinberg L. (1983), “Routing past unions of disjoint rectilin- ear battiers”, Networks, 13, 389-398 Sách, tạp chí
Tiêu đề: Routing past unions of disjoint rectilinear barriers
Tác giả: Chein O., Steinberg L
Nhà XB: Networks
Năm: 1983
[9] Chen J, Han Y. (1990), “Shortest paths on polyhedron”, In: Proceedings of the sixth annual symposium on computational geometry, p. 360-9 Sách, tạp chí
Tiêu đề: Shortest paths on polyhedron
Tác giả: Chen J, Han Y
Năm: 1990
[10] Garey M. R., Johnson D. S., Preparata F. P., and Tarjan R. E. (1978),“Triangulating a simple polygon”, Information Processing Lett, 7, 175-179 Sách, tạp chí
Tiêu đề: Triangulating a simple polygon
Tác giả: Garey M. R., Johnson D. S., Preparata F. P., Tarjan R. E
Nhà XB: Information Processing Letters
Năm: 1978
[11] Guibas L., Hershberger J., Leven D., Sharir M. and Tarjan R. E. (1987),“Linear-Time Algorithms for Visiblitity and Shortest path Problems Inside Triangulated Simple Polygons”, Springer New York, Algorithmica 2, 1-4:209-233 Sách, tạp chí
Tiêu đề: Linear-Time Algorithms for Visibility and Shortest path Problems Inside Triangulated Simple Polygons
Tác giả: Guibas L., Hershberger J., Leven D., Sharir M., Tarjan R. E
Nhà XB: Springer New York
Năm: 1987
[12] Hales T. C. (2007), “Jordan’s Proof of the Jordan Curve Theorem”, Studies in Logic, Grammar and Rhetoric, 10 (23), pp. 45-60 Sách, tạp chí
Tiêu đề: Jordan’s Proof of the Jordan Curve Theorem
Tác giả: Hales T. C
Năm: 2007
[13] Lee D. T. and Preparata F. P. (1984), “Euclidean shortest paths in the presence of rectilinear battiers”, Networks, 14, pp. 393-410 Sách, tạp chí
Tiêu đề: Euclidean shortest paths in thepresence of rectilinear battiers
Tác giả: Lee D. T. and Preparata F. P
Năm: 1984
[14] Mitchell JSB, Mount DM, Papadimitriou CH (1987), “The discrete geodesics problem”, SIAM Journal on Computing, 16 (4): 647-68 Sách, tạp chí
Tiêu đề: The discrete geodesicsproblem
Tác giả: Mitchell JSB, Mount DM, Papadimitriou CH
Năm: 1987
[15] O’Rourke J (2004), Computational Geometry in C, second edition, Cam- bridge University Press Sách, tạp chí
Tiêu đề: Computational Geometry in C
Tác giả: O’Rourke J
Nhà XB: Cambridge University Press
Năm: 2004
[17] Polthier K. and Schmies M. (1998), “Straightest Geodesics on Polyhedral Surfaces”, in H. C. Hege and K. Polthier, Editors, Mathematical Visualiza- tion, Springer Verlag, Heidelberg, pp. 135-150 Sách, tạp chí
Tiêu đề: Straightest Geodesics on PolyhedralSurfaces
Tác giả: Polthier K. and Schmies M
Năm: 1998
[18] Sethian J. A. (1999), “Fast marching methods”, SIAM Review, 41 (2), pp.199-235 Sách, tạp chí
Tiêu đề: Fast marching methods
Tác giả: Sethian J. A
Năm: 1999
[19] Sharir M., Schorr A. (1986), “On shortest paths in polyhedral spaces”, SIAM Journal on Computing, 15 (1): 193-215 Sách, tạp chí
Tiêu đề: On shortest paths in polyhedral spaces
Tác giả: Sharir M., Schorr A
Nhà XB: SIAM Journal on Computing
Năm: 1986
[20] Toponogov, Victor Andreevich (2006), Differential Geometry of Curves and Surfaces: A Concise Guide, Springer, p. 15, ISBN 9780817643843 Sách, tạp chí
Tiêu đề: Differential Geometry of Curves and Surfaces: A Concise Guide
Tác giả: Victor Andreevich Toponogov
Nhà XB: Springer
Năm: 2006
[21] Trong V.P (2001), “Determination geometrique de chemins geodesiques sur des sufaces de subdivision”, Applied Mathematics, University Joseph Fourier, Laboratory LMC-IMAG, PhD Thesis Sách, tạp chí
Tiêu đề: Determination geometrique de chemins geodesiques sur des sufaces de subdivision
Tác giả: Trong V.P
Nhà XB: Applied Mathematics
Năm: 2001
[22] Trong V.P, Szafran N., Biard L. (2001), “Pseudo-geodesics on three- demensional surfaces and pseudo-geodesic meshes”, Numerical Algorithms, 26, pp. 305-315 Sách, tạp chí
Tiêu đề: Pseudo-geodesics on three-demensional surfaces and pseudo-geodesic meshes
Tác giả: Trong V.P, Szafran N., Biard L
Năm: 2001
[23] Xin S.-Q., Wang G.-J. (2007), “Efficiently determining a locally shortest path on polyhedral surfaces”, Computer-Aided Design, 39, pp. 1081-1090 Sách, tạp chí
Tiêu đề: Efficiently determining a locally shortestpath on polyhedral surfaces
Tác giả: Xin S.-Q., Wang G.-J
Năm: 2007
[24] Guibas L., Hershberger J., Leven D., Sharir M., Tarjan R. E. (1987),“Linear-Time Algorithms for Visibility and Shortest Path Problems Inside Triangulated Simple Polygons”, Algorithmica, textbf2, pp. 209-233 Sách, tạp chí
Tiêu đề: Linear-Time Algorithms for Visibility and Shortest Path Problems Inside Triangulated Simple Polygons
Tác giả: Guibas L., Hershberger J., Leven D., Sharir M., Tarjan R. E
Nhà XB: Algorithmica
Năm: 1987

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w