Tải bản đầy đủ (.pdf) (57 trang)

Thông tin tóm tắt về những đóng góp mới của luận văn thạc sĩ: Sử dụng kỹ thuật "Phễu" và "Cây phễu" để tìm đường đi ngắn nhất trên bề của mặt khối đa diện.

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.83 MB, 57 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>VÀ ĐÀO TẠO </b> <b> VÀ CÔNG NGHỆ VIỆT NAM </b>


<b>HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ </b>
<b>--- </b>


<i><b>Nguyễn Thị Mỹ Hạnh </b></i>


<b>SỬ DỤNG KỸ THUẬT “PHỄU” VÀ “CÂY PHỄU” ĐỂ TÌM </b>


<b>ĐƯỜNG ĐI NGẮN NHẤT TRÊN BỀ MẶT CỦA KHỐI ĐA DIỆN</b>



<i>LUẬN VĂN THẠC SĨ TOÁN HỌC </i>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ </b>
<b>--- </b>


<i><b>Nguyễn Thị Mỹ Hạnh </b></i>


<b>SỬ DỤNG KỸ THUẬT “PHỄU” VÀ “CÂY PHỄU” ĐỂ TÌM </b>


<b>ĐƯỜNG ĐI NGẮN NHẤT TRÊN BỀ MẶT CỦA KHỐI ĐA DIỆN</b>



<b>Chuyên ngành: Toán ứng dụng </b>
<b>Mã số: 8460112 </b>


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


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Tôi xin cam đoan mọi kết quả của đề tài: Sử dụng kỹ thuật “phễu”
và “cây phễu” để tìm đường đi ngắn nhất trên bề mặt của khối đa diện đã
được trình bày trong ba bài báo [7], [10] và [5], các ví dụ và số liệu trong
luận văn là trung thực. Nếu không đúng như đã nêu trên, tôi xin hồn


tồn chịu trách nhiệm về đề tài của mình.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Lời đầu tiên trong bản luận văn tôi xin gửi lời cảm ơn chân thành
tới PGS. TS. Phan Thành An đã hướng dẫn tơi hồn thiện bản luận văn
này. Mặc dù rất bận rộn với công việc nhưng thầy vẫn ln dành những
thời gian q giá của mình để hướng dẫn và chỉ bảo tơi tận tình. Trong
q trình làm luận văn bản thân tơi cịn có nhiều thiếu sót, tuy nhiên thầy
đã ln ln động viên và tạo điều kiện tốt nhất để tơi có thể hồn thiện
bản luận văn của mình.


Tơi xin bày tỏ lịng biết ơn sâu sắc tới tồn thể các thầy cơ trong
Viện Tốn học đã truyền đạt, chia sẻ cho tơi những kiến thức bổ ích. Đồng
thời, tơi cũng xin bày tỏ sự biết ơn sâu sắc tới các thầy cô và các anh chị
em của Học viện Khoa học và Công nghệ đã giúp đỡ và quan tâm tôi trong
suốt quá trình học tập.


Tơi cũng xin được gửi lời cảm ơn tới gia đình, bạn bè và anh chị
trong nhóm nghiên cứu đã luôn cổ vũ, động viên, giúp đỡ tôi trong q
trình tham gia nhóm nghiên cứu để tơi củng cố được kiến thức và trau dồi
các kĩ năng sử dụng các phần mềm hỗ trợ cho đề tài của mình.


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

LỜI CAM ĐOAN 3


LỜI CẢM ƠN 0


DANH MỤC KÍ HIỆU 3


MỞ ĐẦU 4


1 TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA HAI ĐIỂM TRONG



ĐA GIÁC ĐƠN 6


1.1 ĐA GIÁC ĐƠN . . . 6
1.2 ĐỒ THỊ, CÂY VÀ CHU TRÌNH, CÂY ĐỐI NGẪU . . . . 8
1.3 HÌNH ỐNG TAY VÀ HÌNH “PHỄU” . . . 11
1.4 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA HAI


ĐIỂM TRONG ĐA GIÁC ĐƠN . . . 14


2 TÌM ĐƯỜNG ĐI NGẮN NHẤT TRÊN BỀ MẶT CỦA


KHỐI ĐA DIỆN 19


2.1 PHÉP LẬT . . . 19
2.2 THUẬT TOÁN DÙNG NGUỒN SÁNG VÀ BĨNG . . . 23


3 TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA HAI ĐIỂM TRONG
MỘT DÃY MẶT TAM GIÁC TRONG KHÔNG GIAN


BA CHIỀU 31


3.1 ĐƯỜNG TRẮC ĐỊA THẲNG NHẤT VÀ CÁC PHỄU DỌC
THEO DÃY MẶT TAM GIÁC TRONG KHÔNG GIAN BA


CHIỀU . . . 31


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

3.2 THUẬT TỐN TÌM CHÍNH XÁC ĐƯỜNG ĐI NGẮN
NHẤT GIỮA HAI ĐIỂM DỌC THEO DÃY MẶT TAM



GIÁC . . . 35
3.3 ỨNG DỤNG THUẬT TỐN NFU TÌM ĐƯỜNG ĐI NGẮN


NHẤT TỪ MỘT ĐIỂM TỚI TẤT CẢ CÁC ĐIỂM TRÊN


BỀ MẶT KHỐI ĐA DIỆN . . . 43


KẾT LUẬN 51


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

DANH MỤC KÍ HIỆU



[a, b] Một đoạn thẳng giới hạn bởi hai điểm a và b
E = (e1, . . . , em) Một dãy các cạnh chung


F = (f1, . . . , fm+1) Một dãy mặt có m + 1 tam giác liền kề


Fpq(s) Một phễu dọc theo F tương ứng với [p, q] có chóp là điểm s
G Một đồ thị vô hướng


P = (q1, q2, . . . , qn) Một đa giác đơn có n đỉnh
di Một đường chéo của đa giác P
vi(1); vi(2) Hai điểm đầu mút của đường chéo di
SP (s, vi(j)) Đường đi ngắn nhất từ s tới điểm cuối vi(j)


Ri Phễu được giới hạn bởi SP (v, vi(1)), SP (v, vi(2)) và đường chéo di
Ie<sub>i</sub> Ảnh của của điểm nguồn s lên cạnh ei


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

MỞ ĐẦU



Hiện nay, một trong những vấn đề đang được các nhà khoa học


nghiên cứu trong lĩnh vực tối ưu, hình học tính tốn là tính được đường đi
ngắn nhất giữa hai điểm trên bề mặt của một khối đa diện, điều này rất có
ích trong ngành cơng nghiệp chế tạo rô-bốt, tối ưu hệ thống thông tin địa
lý và điều hướng (xem [1, 2, 3, 4]). Để giải quyết bài tốn nói trên, nhiều
nhà khoa học đã đưa ra các phương án cho việc tìm đường đi ngắn nhất
giữa hai điểm trong một dãy mặt tam giác trên bề mặt của khối đa diện
(xem [5, 6]).


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Luận văn trình bày lại một số thuật tốn về tìm đường đi ngắn nhất
trong một đa giác đơn, một khối đa diện và một dãy mặt tam giác trong
khơng gian ba chiều theo ba chương.


Chương 1: Tìm đường đi ngắn nhất giữa hai điểm trong đa giác
đơn. Chương đầu tiên, luận văn trình bày lại một số khái niệm về lý
thuyết đồ thị, giới thiệu khái niệm về đa giác đơn, cây đối ngẫu để
từ đó hình thành khái niệm về hình ống tay, hình phễu. Bên cạnh đó,
luận văn cũng trình bày thuật tốn tìm đường đi ngắn nhất giữa hai
điểm trong đa giác đơn của Lee và Preparata (hay cịn gọi là thuật
tốn "Phễu") năm 1984 [7] và đưa ra một ví dụ minh hoạ cho thuật
tốn.


Chương 2: Tìm đường đi ngắn nhất trên bề mặt khối đa diện.
Trong chương này, luận văn trình bày lại khái niệm về phép lật dãy
mặt tam giác lên cùng một mặt phẳng, định nghĩa về hình chiếu của
ảnh nguồn lên một cạnh, bóng của hình chiếu và thuật tốn về "tìm
đường đi ngắn nhất từ một điểm nguồn tới tất cả các đỉnh còn lại trên
bề mặt khối đa diện" bằng việc sử dụng nguồn sáng và bóng. Thuật
tốn này được trình bày trong [10] năm 1990.


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Chương 1




TÌM ĐƯỜNG ĐI NGẮN NHẤT


GIỮA HAI ĐIỂM TRONG ĐA


GIÁC ĐƠN



Trong chương này, luận văn trình bày lại một số kiến thức cơ bản
trong lý thuyết đồ thị, các khái niệm về đa giác đơn, cây đối ngẫu, hình
ống tay và “Phễu” trong khơng gian hai chiều được trình bày và là nền
tảng để xây dựng thuật tốn tìm đường đi ngắn nhất giữa hai điểm trong
đa giác đơn có sử dụng kĩ thuật “Phễu”.


1.1 ĐA GIÁC ĐƠN


Để giải quyết được bài tốn về tìm đường đi ngắn nhất giữa hai điểm


s và t nằm trong đa giác đơn mà đường đi ngắn nhất đó khơng cắt biên
của đa giác, chúng tơi sẽ trình bày lại một vài định nghĩa sau:


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Định nghĩa 1.1.1. [7] Một đường gấp khúc đơn là một dãy các điểm qi


(i = 1, 2, . . . , k), ở đó tất cả các cặp điểm liền kề như qi và qi+1 được nối


thành một đoạn (i = 1, 2, . . . , k − 1) và khơng có hai đoạn khơng liên tiếp
nào cắt nhau (xem hình 1.1).


Khi chuỗi đường gấp khúc đơn là một vịng trịn khép kín sẽ xác định
được một đa giác.


Định nghĩa 1.1.2. [7] Một đa giác đơn có n đỉnh P = (q1, q2, . . . , qn) là



một chuỗi đa giác với qn+1 = q1, tức là qn được nối với q1. Một đường chéo


của P là một đoạn [qi, qj], j 6= i + 1 và khơng cắt bất kì một cạnh nào của


P. P được tam giác phân nếu miền trong của nó được chia ra bởi n − 2


tam giác và n − 3 đường chéo.


Hình 1.2 Một đa giác đơn P = (q1, q2, q3, q4, q5, q6).


Hình 1.3 Đa giác đơn P được tam giác phân bởi các đường chéo [q1, q3], [q3, q6], [q6, q4].


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

1.2 ĐỒ THỊ, CÂY VÀ CHU TRÌNH, CÂY ĐỐI NGẪU


Các khái niệm sau đây sẽ là kiến thức cơ sở cho bài tốn về tìm
đường đi ngắn nhất trong một đa giác đơn hoặc một khối đa diện. Ở đây,
luận văn chỉ trình bày các khái niệm liên quan đến đồ thị vơ hướng.


Hình 1.4 Minh hoạ một đồ thị vơ hướng.


Định nghĩa 1.2.1. [15] Một đồ thị vô hướng G là một cặp có thứ tự
G = (V, E), trong đó V là một tập khác rỗng gồm các đỉnh, E là một tập
gồm các cạnh - mỗi cạnh có hai đầu mút tạo bởi hai đỉnh của đồ thị vô
hướng G.


Khi biểu diễn một đồ thị vô hướng trên mặt phẳng ta biểu diễn các
đỉnh của đồ thị bởi các đường tròn nhỏ, các cạnh còn lại được biểu diễn
bằng một đường cong nối các đỉnh của cạnh. Ta kí hiệu một cạnh e được
giới hạn bởi hai đầu mút là hai đỉnh a và b là e = [a, b], khi đó a và b được
gọi là hai đỉnh kề nhau, hai cạnh có chung một đỉnh được gọi là hai cạnh


kề nhau. Cung dạng [b, b] với b ∈ V được gọi là khuyên (xem Hình 1.4).
Bậc của v là số các đỉnh kề với v.


Ví dụ 1.2.1. Cho đồ thị G = (V, E) với V = {a, b, c, d, e} và E =


{[a, b], [b, b], [b, c], [c, d], [d, e], [e, c]}. Khi đó G là một đồ thị vơ hướng được


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

Định nghĩa 1.2.2. [15] Với G = (V, E) là một đồ thị vơ hướng, một hành
trình được định nghĩa trong G là một dãy v0e1v1e2. . . envn sao cho với mọi


i = 0, 1, 2, . . . , n, vi ∈ V và i = 1, 2, . . . , n, ei là cạnh kề của các đỉnh vi−1


và vi. Khi đó, n được gọi là độ dài, v0 được gọi là đỉnh đầu, vn được gọi là


đỉnh cuối.


Ta nói rằng, một hành trình được gọi là khép kín nếu đỉnh đầu và
đỉnh cuối của nó trùng nhau. Một hành trình được gọi là đường nếu các
đỉnh của hành trình đó đều khác nhau. Một hành trình khép kín được gọi
là chu trình nếu nó có độ dài ít nhất là 3 và khi xố đi một đỉnh cuối thì
trở thành đường.


Định nghĩa 1.2.3. [15] Một đồ thị G = (V, E) được gọi là liên thông nếu
hai đỉnh vi và vj khác nhau bất kì của G tồn tại một hành trình vơ hướng


trong G với đỉnh đầu là vi và đỉnh cuối là vj.


Định nghĩa 1.2.4. [15] Một đồ thị vô hướng liên thơng khơng có khun,
khơng có chu trình được gọi là cây.



Hình 1.5 Minh hoạ một cây.


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

Định nghĩa 1.2.5. [7] Cây đối ngẫu của một đa giác đơn P đã được tam
giác phân là một đồ thị G = (V, E) sao cho mỗi nút của V tương ứng với
một tam giác thuộc đa giác đơn P và mỗi cạnh của E nối hai nút thuộc V
của hai tam giác có chung một đường chéo trong P.


Ví dụ 1.2.2. Xét một đa giác đơn P = (q1, q2, . . . , q11) được tam giác phân


bởi các đường chéo [q2, q3], [q2, q4], [q4, q5],[q5, q6], [q6, q7], [q7, q8], [q8, q9],


[q6, q8]. Xác định một cây đối ngẫu của đa giác đơn P.


Hình 1.6 Đa giác đơn được P được tam giác phân bởi các đường chéo.


Hình 1.7 Cây đối ngẫu là đường màu đỏ của đa giác đơn P .


Kí hiệu 4(s) là tam giác chứa điểm svà 4(t) là tam giác chứa điểm


t, đường đi ngắn nhất từ điểm s tới t trong đa giác đơn P là π.


Vì G = (V, E) là một cây nên trong G sẽ tồn tại duy nhất một


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

củaP tại một điểm duy nhất. Hay nói một cách khác, đường đi ngắn nhất
giữa hai điểm s và t cũng sẽ là một đường gấp khúc và bổ đề sau đây sẽ
làm rõ hơn về điều này.


Bổ đề 1.2.1. [7] Xét một đa giác đơn P có n đỉnh đã được tam giác phân
bởi các đường chéo, ta kí hiệu là di (trong đó i = 1, . . . , n − 3). Cho S là



tập hợp tất cả các điểm đầu mút của các đường chéo di (i = 1, . . . , n − 3)


và đường đi ngắn nhất, khi đó tất cả các đỉnh của đường đi ngắn nhất giữa


s và t sẽ nằm trong tập S ∪ {s, t}.


Do S là tập hợp các điểm đầu và điểm cuối của các đường chéo nên
ở đây S chính là tập hợp tất cả các đỉnh của đa giác đơn P. Vậy để tìm
đường đi ngắn nhất giữa hai điểm s và t chúng ta sẽ cần phải tìm đường
đi ngắn nhất từ s tới tất cả các điểm đầu mút của các đường chéo của P


và điểm cuối cùng là điểm t. Hợp tất cả các đường đi ngắn nhất này sẽ
tạo thành một cây G với gốc là điểm s.


1.3 HÌNH ỐNG TAY VÀ HÌNH “PHỄU”


Để tìm các đỉnh của cây G = (V, E) không cần phải đi xét hết tất
cả các đỉnh của đa giác đơn P mà chỉ cần tìm ra một miền thuộc đa giác
đơn P cũng chứa đường đi ngắn nhất giữa hai điểm s và t. Để xác định
được hình ống tay hay miền đa giác P cần xác định được miền chứa đường
ngắn nhất từ s tới t.


Định nghĩa 1.3.1. [7] Một đa giác đơn P đã được tam giác phân được
gọi là hình ống tay nếu cây đối ngẫu của đa giác đơn P đó là một đường
gấp khúc đơn.


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Hình 1.8 Hình ống tay P0 là miền được tơ màu nâu.


P có n đỉnh, s là điểm thuộc hình ống tay P, di là các đường chéo của P



(1 ≤ n ≤ n − 3). Chúng ta sẽ kí hiệu:


ˆ vi(1) vàvi(2) là hai điểm đầu mút của đường chéodi (với 1 ≤ i ≤ n−3).


ˆ SP (s, vi(j))là đường đi ngắn nhất từ stới điểm cuối vi(j)với (j = 1, 2)


nằm trong đa giác đơn P. Theo Bổ đề 1.2.1 thì tập tất cả các đỉnh mà
đường SP (s, vi(j)) đi qua với (j = 1, 2) đều là các đỉnh thuộc đa giác


đơn P.


ˆ Gọi v là điểm chung của SP (s, vi(1)) và SP (s, vi(2)) sao cho v là đỉnh


xa nhất tính từ s.


ˆ SPi = SP (s, vi(1)) ∪ SP (s, vi(2)).


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

Định nghĩa 1.3.2. [7] Một miềnRi được giới hạn bởiSP (v, vi(1)),SP (v, vi(2))


và đường chéo di với (1 ≤ i ≤ n − 3) sẽ được gọi là “phễu”, v được gọi là


chóp của phễu.


Giả sử các đường gấp khúc con đề cập sau khác rỗng, khi đóSP (v, vi(j))


với j = 1, 2 sẽ là một đường gấp khúc lồi hướng vào trong. Khi đó, chúng


ta có mệnh đề sau.


Mệnh đề 1.1. [7] Nếu SP (v, vi(j)) là các đường gấp khúc lồi hướng vào



trong thì cũng có nghĩa là mặt lồi của nó hướng vào miền trong của P.
Chứng minh. Bằng phương pháp quy nạp, chúng ta sẽ chỉ ra được phễu


Ri nằm hoàn toàn trong đa giác đơn P.


Xét các đường chéo ds, ds+1, . . . , di−1 bị cắt bởi các đường gấp khúc


SP (v, vi(1)) và SP (v, vi(2)). Rõ ràng, 4vv


(1)


s vs(2) = Rs nằm hoàn toàn


trong đa giác đơn P.


Giả sử rằng Ri−1 ⊂ P, khi đó miền Ri mới được tạo thành từ miền


Ri−1 hợp thêm với một phần hoặc toàn bộ một tam giác (tam giác chứa


cạnh di) nằm trong đa giác đơn P. Từ đó, chúng ta cũng suy ra được


Ri ⊂ P.


Trong trường hợp SP (v, v(j)<sub>i</sub> ) khơng là đường gấp khúc lồi trong thì
theo bất đẳng thức tam giác (tổng của hai cạnh bao giờ cũng lớn hơn cạnh
cịn lại), ta ln tìm được một đường đi ngắn nhất từ v tới vi và đường


ngắn nhất đó ln nằm trong đa giác đơnP. Điều này trái với giả thiết ban
đầu khi SP (v, v<sub>i</sub>(j)) là đường ngắn nhất từ v tới vi (xem Hình 1.10).



Tính chất lồi này cũng chỉ ra rằng SP (v, v(1)<sub>i</sub> ) và SP (v, v(2)<sub>i</sub> ) bị chia
nhánh nhiều nhất chỉ tại một đỉnh v, nếu chúng bị chia nhánh ở một đỉnh


u1 nào đó thì nó sẽ lại gặp nhau tại một đỉnh u2 nào đó, và hai đường gấp


khúc tách rời từ u1 tới u2 này phải là đường gấp khúc lồi trong. Khi đó,


SPi = SP (v, v


(1)


i ) ∪ SP (v, v


(2)


i ), và v được gọi là đỉnh của hai đường gấp


khúc lồi hướng trong.


Ở đây, một trong hai đường gấp khúc có thể là rỗng (nhưng khơng
thể hai đường gấp khúc đó cùng rỗng, vìv(1)<sub>i</sub> 6= v<sub>i</sub>(2)). Nếu SP (v, v<sub>i</sub>(1)) rỗng
thì rõ ràng SP (v, v(2)<sub>i</sub> ) = di và ngược lại. Trong trường hợp này, phễu Ri


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

Hình 1.10 Hình ảnh minh hoạ cho tính lồi trong của SP (s, v<sub>i</sub>(j)).


Để làm rõ được ý nghĩa của tính lồi trong, và một trong hai đường
gấp khúc có thể rỗng, chúng ta sẽ cùng tìm hiểu kĩ hơn về thuật tố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 trong phần dưới đây.



1.4 THUẬT TỐN TÌM ĐƯỜNG ĐI NGẮN NHẤT GIỮA


HAI ĐIỂM TRONG ĐA GIÁC ĐƠN


Xuất phát từ một đỉnh nguồn s thuật toán sau đây xây dựng các
đường SPi = SP (v, v


(1)


i ) ∪ SP (v, v


(2)


i ) chứa đường biên của phễu Ri cho


tới khi tới điểm đích (tức là v<sub>i</sub>(2) ≡ t), chúng ta cùng đi xét bài toán sau:
Bài tốn: Xét một hình ống tay P và hai điểm cho trước svà tthuộc
hình ống tay P đó. Tìm đường đi ngắn nhất từ s tới t nằm trong P.


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

Algorithm 1 Thuật toán Lee và Preparata


1: Bước khởi tạo: Xây dựng SP1 bằng cách nối s với v<sub>1</sub>(1) và v(2)<sub>1</sub> .


2: Bước tổng quát : (Xây dựng SPi+1 từ SPi)
Xét v là đỉnh của SPi= SP (v, v


(1)


i ) ∪ SP (v, v


(2)
i )
SPi được chia làm hai nhánh tại v


Chúng ta kí hiệu hai nhánh đó là uaua+1. . . ub và uaua−1. . . u0
Ở đó v = ua, v


(1)
i = ub, v


(2)
i = u0
Bắt đầu duyệt từ điểm u0, u1, . . . , ub


j là chỉ số nhỏ nhất sao cho v(2)<sub>i+1</sub>uj là đường tiếp tuyến của biên Ri.
Chúng ta sẽ xét hai trường hợp:


ˆ Trường hợp 1 : j ≤ a (xem Hình 1.11 a))


– Xố hết các cạnhulul+1 với 0 ≤ l ≤ j − 1.
– Thêm cạnh ujv(2)<sub>i+1</sub>.


ˆ Trường hợp 2 : j > a (xem Hình 1.11 b))


– Xoá hết các cạnh ujul+1với 0 ≤ l ≤ j − 1.
– Thêm cạnh ujv(2)<sub>i+1</sub>.


– Miền Ri+1 sẽ nhận uj là đỉnh mới.


3: Bước kết thúc: Sau khi xây dựng được SPn−3, đường chéo dn−2 chia P thành hai miền, và một


trong hai miền này sẽ chứa điểm đích t.


- Gán v<sub>n−2</sub>(2) = t.


- Áp dụng bước tổng quát cho từng trường hợp với i = n−3 và SPn−2= SP (s, v
(1)


n−2)∪SP (s, t).
- SP (s, t) ⊂ SPn−2.


Ví dụ 1.4.1. Xét một đa giác đơn P với 13 đỉnh, một điểm nguồn s và
điểm đích t (xem Hình 1.12). Tìm đường đi ngắn nhất từ s tới t bằng cách
sử dụng thuật tốn Lee và Preparata.


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

Hình 1.13 Đa giác đơn P được tam giác phân bởi các đường chéo nét đứt.


Hình 1.14 Cây đối ngẫu của đa giác đơn P là đường màu đỏ.


Hình 1.15 Miền P0 màu xanh lá là hình ống tay chứa đường đi ngắn nhất từ s tới t.


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

Hình 1.17 Phễu thứ hai giới hạn bởi SP (s, q11), SP (s, q3) và đường chéo [q3, q11] có chóp là s.


Hình 1.18 Phễu thứ ba giới hạn bởi SP (s, q11), SP (s, q4) và đường chéo [q4, q11] có chóp là s.


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

Hình 1.20 Phễu thứ năm giới hạn bởi SP (s, q4), SP (s, q9) và đường chéo [q4, q9] có chóp là s.


Hình 1.21 Phễu thứ sáu giới hạn bởi SP (s, q5), SP (s, q9) và đường chéo [q5, q9] có chóp là s.


Hình 1.22 Phễu thứ bảy bị suy biến, miền trong bằng rỗng, SP (s, q9) là đường màu hồng.



</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

Chương 2



TÌM ĐƯỜNG ĐI NGẮN NHẤT


TRÊN BỀ MẶT CỦA KHỐI ĐA


DIỆN



Trong chương này, luận văn trình bày thủ tục lật phẳng một dãy
mặt tam giác theo các cạnh chung và việc xác định đường đi ngắn nhất từ
một điểm nguồn s tới các đỉnh còn lại trên bề mặt của một khối đa diện
mà các mặt đã được tam giác phân trong không gian ba chiều bằng cách
sử dụng một thuật tốn nguồn sáng và bóng [10]. Bên cạnh đó, luận văn
cũng trình bày một ví dụ minh hoạ cho thuật toán.


2.1 PHÉP LẬT


Xét P là một mặt đa diện với các mặt đã được tam giác phân trong
không gian ba chiều, với s là một đỉnh của khối đa diện P cần tìm ra một
đường ngắn nhất từ điểm nguồn stới các đỉnh còn lại trên bề mặt khối đa
diện P. Luận văn sẽ trình bày lại một số khái niệm về dãy mặt, dãy cạnh
mà Mitchell đưa ra năm 1987 [9].


F = (f1, f2, . . . , fm+1) và E = (e1, e2, · · · , em) lần lượt là một dãy


các mặt và một dãy các cạnh, fi∩ fi+1 = ei, f1 là tam tam giác chứa đỉnh


nguồns. Ngoại trừ các trường hợp cụ thể khác, các dãy mặt tam giác được
đề cập đến sau đây đều dãy mặt mà các tam giác khác nhau từng đôi một.
Kĩ thuật phép lật phẳng (planar unfolding) là phương pháp được
sử dụng để tìm đường đi ngắn nhất. Ta thực hiện lật phẳng các mặt



</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

Hình 2.1 Một dãy các mặt tam giác (f1, f2, . . . , fm+1) lần lượt liền kề theo các cạnh (e1, e2, · · · , em).


Thủ tục của phép lật dãy mặt F được mô tả như sau [10]:


Thủ tục lật phẳng


1: F = {f1}.


2: For i:=1 to m do


Quay F quanh ei cho tới khi F và fi+1 cùng nằm trên một mặt phẳng và khác phía với mặt
fi+1 so với cạnh ei;


F := F ∪ {ei, fi+1}.


3: End


Quy trình này dừng lại khi các mặt f1, f2, . . . , fmcùng nằm trên mặt phẳng chứa mặt fm+1.


Ưu điểm của phép lật khi sử dụng để giải bài tốn tìm đường đi ngắn
nhất là giúp chúng ta đưa bài tốn từ khơng gian ba chiều về bài tốn
trong khơng gian hai chiều mà khơng mất đi độ chính xác về khoảng cách
giữa hai điểm trên một mặt và độ lớn các góc trong cùng một mặt phẳng.


Bổ đề 2.1.1. Với một dãy mặt F = (f1, f2, · · · , fm+1) và dãy cạnh chung


E = (e1, e2, · · · , em) khi thực hiện phép lật phẳng các mặt f1, f2, . . . , fm


lên mặt phẳng chứa mặt phẳng fm+1 thì độ lớn của các góc trong một mặt



tam giác fi và khoảng cách hai điểm p và q (với p, q ∈ fi, 1 ≤ i ≤ m + 1)


được bảo tồn.


Ví dụ 2.1.1. Xét dãy mặt tam giác F = {4v0v1v2, 4v1v2v3, 4v1v3v4} và dãy


cạnh E = {[v1, v2], [v1, v3]} như hình 2.2, các đỉnh v0(0, 0, 3), v1(0, 0, 0),


v2(0, −3, 0), v3(3, 0, 0), v4(0, 0, −3). Thực hiện lật mặt phẳng mặt 4v0v1v2


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

Hình 2.2 Minh hoạ dãy mặt tam giác {4v<sub>0</sub>v1v2, 4v1v2v3, 4v1v3v4}.


Ta thực hiện theo đúng quy trình phép lật phẳng dãy mặt tam giác:


ˆ Bước 1: Ta chọn F := {4v0v1v2}, quay F quanh cạnh [v1, v2] tới


khi mặt 4v0v1v2 và mặt 4v1v2v3 cùng nằm trên một mặt phẳng và


hai mặt phẳng này nằm khác phía so với cạnh v1v2. Khi đó, F :=


F ∪ {[v1, v2], 4v1v2v3}.


Nhận thấy rằng hai mặt4v0v1v2, 4v1v2v3 tạo với nhau một gócψ = 90o,


khi thực hiện quay mặt chứa F lên mặt phẳng chứa 4v1v2v3 bằng ma


trận quay [14] ta có thể tính được toạ độ của I[v1,v2](x


0<sub>, y</sub>0<sub>, z</sub>0<sub>)</sub> <sub>- là ảnh</sub>



của của v0 sau khi lật ứng với cạnh [v1, v2], x0, y0, z0 lần lượt là toạ độ


của I<sub>[v1,v2]</sub> theo các trục Ox, Oy, Oz.
Ta có



x0
y0
z0
1


 =




cos φ 0 sin φ 0


0 1 0 0


− sin φ 0 cos φ 1


0 0 0 1


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Hình 2.3 Minh hoạ phép lật mặt phẳng 4v0v1v2 lên mặt phẳng chứa 4v1v2v3 qua cạnh [v1, v2].


Mặt khác khi lật chúng ta cần mặt chứa 4v3v0v1 nằm ở mặt còn lại



của cạnh v1v2 nên φ = −(180o − ψ).





x0
y0
z0
1


 =




0 0 −1 0


0 1 0 0


1 0 0 0


0 0 0 1









0
0
3
1


.


Vậy toạ độ của I<sub>[v1v2]</sub> là (−3, 0, 0).


ˆ Bước 2: Với F := F ∪ {[v1, v2], 4v1v2v3}, quay F quanh cạnh [v2, v3]


tới khi F và mặt 4v2v3v4 cùng nằm trên một mặt phẳng, F và


mặt 4v2v3v4 nằm ở hai bên của cạnh [v2, v3]. Khi đó, F := F ∪


{[v2, v3], 4v2v3v4}.


Nhận thấy rằng F và 4v2v3v4 tạo với nhau một góc ψ = 90o, khi thực


hiện quay F lên mặt phẳng chứa 4v1v2v3 ta có thể tính được toạ độ


của I[v2,v3](x00, y00, z00) - là ảnh của của I[v1,v2] sau khi lật, x00, y00, z00 lần


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

Hình 2.4 Minh hoạ dãy mặt tam giác {4v<sub>0</sub>v1v2, 4v1v2v3, 4v1v3v4}.
Ta có



x00


y00
z00
1


 =




1 0 0 0


0 cos φ − sin φ 0


0 sin φ cos φ 0


0 0 0 1








−3
0
0
1



.


Ở đây, φ = 90o.



x00
y00
z00
1


 =




1 0 0 0


0 0 −1 0


0 1 0 0


0 0 0 1









−3
0
0
1


.


Vậy toạ độ của I[v2,v3] là (−3, 0, 0).


2.2 THUẬT TOÁN DÙNG NGUỒN SÁNG VÀ BĨNG


Thuật tốn dùng nguồn sáng và bóng là một thuật toán xác định
đường đi ngắn nhất từ một điểm nguồn tới các đỉnh còn lại trên bề mặt
của khối đa diện. Thuật toán sử dụng kĩ thuật lật phẳng, lật tất cả các


mặt f1, f2, . . ., fm lên mặt phẳng chứa mặt fm+1 lần lượt theo các cạnh


chung ei. Kí hiệu fi là ảnh của fi với 1 ≤ i ≤ m, Iei là ảnh của của điểm


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

Định nghĩa 2.2.1. [10] Hình chiếu của Iei lên cạnh ei là một đoạn thẳng


nằm trên cạnh ei và được kí hiệu là P roj
I<sub>ei</sub>


ei sao cho đường ngắn nhất từ


điểm nguồn s tới điểm t với t ∈ P rojeiIei đi qua dãy các cạnh e1, e2, . . . , ei−1



được lật thành một đoạn thẳng (hay chính là đường trắc địa). Điều này có
nghĩa là với bất kì t ∈ P rojeiIei có thể nối Iei và t với nhau bằng một đoạn


thẳng chỉ đi qua dãy các cạnh e1, e1, . . . , ei−1 (xem Hình 2.5).


Hình 2.5 Hình chiếu của Ie<sub>i</sub> lên cạnh ei.


Tính chất sau về đường đi ngắn nhất [10]:


1. Một đường ngắn nhất đi qua một mặt không quá một lần.


2. Hai đường ngắn nhất không thể cắt nhau ngoại trừ tại hai điểm: điểm
nguồn và điểm tới.


Định nghĩa 2.2.2. [10] Nguồn sáng ứng với cạnh ei là tập hợp tất cả các


đường đi ngắn nhất từ ảnh điểm nguồn s là Iei tới t với t ∈ P roj
I<sub>ei</sub>
ei .


Định nghĩa 2.2.3. [10] Bóng của hình chiếu P rojeIi−1ei−1 trên mặt fi là miền


giới hạn bởi các đường đi ngắn nhất từ ảnh nguồn Iei tới cạnh ei và các


hình chiếu của ảnh nguồn Iei lên các cạnh của mặt fi chứa nguồn sáng


</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

Hình 2.6 Bóng của hình chiếu P rojeIei−1i−1 trên mặt fi.


Hình 2.7 Phân tích cạnh chung e về hai phía.



</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

Thuật toán sau đây xây dựng một cây được gọi là cây tuần tự,
một nút trong cây tuần tự này sẽ là một bộ ba và được kí hiệu là n =


(e, I, P roj<sub>e</sub>Ie) với Ie là ảnh nguồn của e. Ta nói nút n nằm trên cạnh e, e


là cạnh của n và bóng của n là bóng của P rojIe
e .


Xuất phát từ một điểm nguồn s, tìm tất cả các đường đi ngắn nhất
từ điểm nguồn s tới các đỉnh còn lại của khối đa diện P, chúng tơi đặt ra
bài tốn:


Bài tốn: Xét một khối đa diện P mà các mặt của khối đa diện đã
được tam giác phân thành m mặt (xem Định nghĩa 1.1.2), 4vpq là một
mặt của khối đa diệnP. Tìm đường đi ngắn nhất từ một đỉnh nguồn s tới
các đỉnh cịn lại của khối đa diện đó.


Algorithm 2 (Thuật toán Thơ ngây)


1: root:= s;


For tất cả các cạnh e đối diện với điểm nguồn s do
thêm nút (e, s, e) là con của gốc s:


/*e là cạnh của mặt có điểm nguồn s*/


/*s là một đỉnh của một mặt tam giác thuộc khối đa diện.*/


2: For i:= 1 to m do



/*m là số các mặt của khối đa diện sau khi các mặt đã được tam giác phân .*/
For tất cả các lá (e, I, P rojeI) tại mức ith do


Begin


lật I quanh cạnh e nhận được I:
/* I cùng mặt phẳng với 4vpq,*/
/* mặt bóng của cạnh e.*/
For e0:= [v, p], [q, v]


tính P rojI
e0;
If P rojI


e0 khác rỗng then
thêm (e0, I, P rojI


e0) là con của (e, I, P roj<sub>e</sub>I).
End.


Ví dụ 2.2.1. Xét một khối đa diện mà các mặt đã được tam giác phân
thành 6 mặt (xem Hình 2.8) và các đỉnh s(0, 0, 3), v1(0, 0, 0), v2(3, 0, 0),


v3(0, 3, 0), v4(1.5, 1.5, −3). Tìm đường đi ngắn nhất từ đỉnh nguồn S


tới các đỉnh còn lại trên bề mặt của khối đa diện bằng cách sử dụng
thuật tốn 2.


Trong ví dụ này ta có thể chỉ ra được đường đi ngắn nhất trên bề
mặt khối đa diện từ đỉnh S lần lượt tới các đỉnh v1 bằng 3, đường đi ngắn



nhất từ s tới v2, v3 đều bằng 4.24, đường đi ngắn nhất trên bề mặt khối


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

Hình 2.8 Minh hoạ khối đa diện trong không gian ba chiều trong Ví dụ 2.2.


ˆ Bước 1: Ta gán: root:= s;


Các cạnh: [v1, v2], [v1, v3], [v2, v3] là các cạnh đối diện với gốc s.


Khi đó: ([v1, v2], s, [v1, v2]), ([v1, v3], s, [v1, v3]), ([v2, v3], s, [v2, v3]) là


con của gốc s.


ˆ Bước 2: Do khối đa diện này sau khi các mặt được tam giác phân sẽ
có tất cả 6 mặt nên cây chúng tôi xây dựng sẽ có 6 mức.


Mức 1: Đối với([v1, v2], s, [v1, v2]),([v1, v3], s, [v1, v3]),([v2, v3], s, [v2, v3])


là lá ta thực hiện lật s lần lượt quanh các cạnh [v1, v2], [v1, v3], [v2, v3]


lên mặt phẳng chứa các mặt 4v1v2v3, 4v3v4v6, 4v4v5v6, 4sv1v5 và


ảnh của s tương ứng trên mỗi mặt phẳng lật là I[v1,v2], I[v1,v3], I[v2,v3].


– Đối với 4sv1v3 và 4v1v3v4 sau khi đồng phẳng, ta gán e0 :=


[v1, v4], [v3, v4] và thực hiện tính hình chiếu P roj


I<sub>[v1,v4]</sub>



[v1,v4] của ảnh


nguồn I[v1,v4] lên cạnh [v1, v4] và P roj
I<sub>[v3,v4]</sub>


[v3,v4] của ảnh nguồn I[v3,v4]


</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

Thêm



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]








[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]





là con của ([v1, v3], s, [v1, v3]). Nguồn sáng từ điểm nguồn s tới


đỉnh v4 được tính bằng 6.18 và cắt cạnh [v1, v3] tại điểm có toạ độ


là (0, 0.74, 0)



– Đối với 4sv1v2 và 4v1v2v4 sau khi đồng phẳng, ta gán e0 :=


[v1, v4], [v2, v4] và thực hiện tính hình chiếu P roj


I<sub>[v1,v4]</sub>


[v1,v4] của ảnh


nguồn I<sub>[v1,v4]</sub> lên cạnh [v1, v4] và P roj
I<sub>[v2,v4]</sub>


[v2,v4] của ảnh nguồn I[v2,v4]


lên cạnh [v2, v4].


Thêm



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]








[v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>


[v2,v4]





là con của ([v1, v2], S, [v1, v2]). Nguồn sáng từ điểm nguồn s tới


đỉnh v4 được tính bằng 6.18 và cắt cạnh [v1, v2] tại điểm có toạ độ


là (0.74, 0, 0)


– Đối với 4sv2v3 và 4v2v3v4 sau khi đồng phẳng, ta gán e0 :=


[v2, v4], [v3, v4] và thực hiện tính hình chiếu P roj


I<sub>[v2,v4]</sub>


[v2,v4] của ảnh


nguồn I<sub>[v2,v4]</sub> lên cạnh [v2, v4] và P roj
I<sub>[v3,v4]</sub>


[v3,v4] của ảnh nguồn I[v3,v4]


lên cạnh [v3, v4].


Thêm



[v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>


[v2,v4]








[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]





là con của ([v2, v3], S, [v2, v3]). Nguồn sáng từ điểm nguồn s tới


đỉnh v4 được tính bằng 6.64 và cắt cạnh [v2, v3] tại điểm có toạ độ


là (1.5, 1.5, 0)


Mức 2:


– Đối với lá



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]






ở mức 1 ta lại tiếp tục thực
hiện việc lật I[v1,v4] quanh cạnh [v1, v4] hoặc [v3, v4] để được ảnh


nguồn mới tương ứng là I<sub>[v1,v4]</sub> và I<sub>[v3,v4]</sub>.
Thêm





[v1, v2], I[v1,v2], P roj
I<sub>[v1,v2]</sub>
[v1,v2]








[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]





là con của



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]






. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v2 và bằng 6 và


đi qua dãy cạnh [v1, v3], [v1, v2].


– Đối với lá



[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]





</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

tương ứng là I[v2,v3] và I[v2,v4].


Thêm



[v2, v3], I[v2,v3], P roj
I<sub>[v2,v3]</sub>
[v2,v3]









[v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>
[v2,v4]





là con của



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]





. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v2 và bằng 6 và


đi qua dãy cạnh [v1, v3], [v3, v4]


– Đối với lá [v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]





ở mức 1 ta lại tiếp tục thực
hiện việc lật I<sub>[v1,v4]</sub> quanh cạnh [v1, v3] hoặc [v3, v4] để được ảnh


nguồn mới tương ứng là I[v1,v3] và I[v3,v4].



Thêm



[v1, v3], I[v1,v3], P roj
I<sub>[v1,v3]</sub>
[v1,v3]








[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]





là con của



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]





. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v3 và bằng 6 và



đi qua dãy cạnh [v1, v2], [v1, v4].


– Đối với lá [v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]





ở mức 1 ta lại tiếp tục thực
hiện việc lật I<sub>[v1,v4]</sub> quanh cạnh [v1, v3] hoặc [v3, v4] để được ảnh


nguồn mới tương ứng là I[v1,v3] và I[v3,v4].


Thêm



[v1, v3], I[v1,v3], P roj
I<sub>[v1,v3]</sub>
[v1,v3]








[v3, v4], I[v3,v4], P roj
I<sub>[v3,v4]</sub>
[v3,v4]






là con của



[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]





. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v3 và bằng 6 và


đi qua dãy cạnh [v1, v2], [v1, v4].


– Đối với lá [v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>
[v2,v4]





ở mức 1 ta lại tiếp tục thực
hiện việc lật I<sub>[v2,v4]</sub> quanh cạnh [v2, v1] hoặc [v4, v1] để được ảnh


nguồn mới tương ứng là I[v2,v1] và I[v4,v1].


Thêm




[v2, v1], I[v2,v1], P roj
I<sub>[v2,v1]</sub>
[v2,v1]








[v4, v1], I[v4,v1], P roj
I<sub>[v4,v1]</sub>
[v4,v1]





là con của



[v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>
[v2,v4]





. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v3 và bằng 7.88


và đi qua dãy cạnh [v2, v3], [v2, v4].


– Đối với lá [v3, v4], I[v3,v4], P roj


I<sub>[v3,v4]</sub>
[v3,v4]





ở mức 1 ta lại tiếp tục thực
hiện việc lật I<sub>[v3,v4]</sub> quanh cạnh [v3, v1] hoặc [v4, v1] để được ảnh


nguồn mới tương ứng là I[v3,v1] và I[v4,v1].


Thêm



[v3, v1], I[v3,v1], P roj
I<sub>[v3,v1]</sub>
[v3,v1]








[v4, v1], I[v4,v1], P roj
I<sub>[v4,v1]</sub>
[v4,v1]


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

là con của



[v2, v4], I[v2,v4], P roj


I<sub>[v2,v4]</sub>
[v2,v4]





. Từ đây ta sẽ tính được
đường đi ngắn nhất từ ảnh nguồn I[v1,v4] tới đỉnh v3 và bằng 7.88


và đi qua dãy cạnh [v2, v3], [v3, v4].


Tương tự thực hiện từng bước thêm lá và tính các hình chiếu của ảnh
nguồn trên cạnh tương ứng ở các mức tiếp theo ta thu được kết quả là
đường đi ngắn nhất từ đỉnh nguồn s tới các đỉnh còn lại trên bề mặt
của khối đa diện.


</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

Chương 3



TÌM ĐƯỜNG ĐI NGẮN NHẤT


GIỮA HAI ĐIỂM TRONG MỘT


DÃY MẶT TAM GIÁC TRONG


KHƠNG GIAN BA CHIỀU



Chương này trình bày lại một thuật tốn hữu hiệu trong việc tìm
đường đi ngắn nhất giữa hai điểm trong một dãy mặt tam giác trong không
gian ba chiều bằng cách sử dụng “phễu” tương ứng với các cạnh chung của
dãy mặt tam giác và lật phẳng mỗi “phễu” đó. Tác giả cũng chỉ ra rằng
ảnh của “phễu” sau khi lật sẽ không đè lên nhau [5].


3.1 ĐƯỜNG TRẮC ĐỊA THẲNG NHẤT VÀ CÁC PHỄU



DỌC THEO DÃY MẶT TAM GIÁC TRONG KHÔNG
GIAN BA CHIỀU


Một đường nối hai điểm p và q trong một dãy mặt tam giác của


F = {f1, f2, . . . , fm, fm+1}là một đường gấp khúc∪mi=0[vi, vi+1]vớiv0 = p,


vm+1 = q, mỗi đoạn thẳng [vi, vi+1] nằm trên một tam giác nào đó của F,


đỉnh vi (với 1 ≤ i ≤ m) của đường nối giữa p và q thuộc một cạnh chung


trong dãy mặt F.


Định nghĩa 3.1.1. [5] Một đường ∪m


i=0[vi, vi+1] trong một dãy các tam


giác của F = {f1, f2, . . . , fm, fm+1} với v0 = u, vm+1 = v, đoạn thẳng


[vi, vi+1] nằm trên một tam giác nào đó của F, mỗi đỉnh vi của đường này


</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

tới v trong F nếu tổng độ lớn các góc của đường này tại các đỉnh vi bằng


π. Đường trắc địa thẳng nhất như thế được kí hiệu là CF(u, v).


Hình 3.1 Đường trắc địa thẳng nhất màu đỏ trên bề mặt khối lập phương tại điểm v1, v3; v1, v3 là
trung điểm của các cạnh chứa nó.


Chúng ta cũng có thể gọi một đoạn thẳng trên một tam giácfi là một



đường trắc địa thẳng nhất. Xét điểm u là một điểm thuộc F và e = [p, q]


là một cạnh chung trong F, xét s là điểm chung xa nhất của đường ngắn


nhất SP (u, q) nối hai điểm u và q trong F và đường ngắn nhất SP (u, p)


nối hai điểm u và p trong F tương ứng với điểm u. Kí hiệu Fpq(s) là miền


con của F được bao bởi SP (s, p) và SP (s, q) và [p, q].


Định nghĩa 3.1.2. [5] Miền Fpq(s) được gọi là phễu dọc theo F tương


ứng với cạnh chung [p, q], s là chóp của phễu và SP (s, p) và SP (s, q) (để
ngắn gọn chúng tơi kí hiệu là B1 và B2) là biên của phễu. Trong trường


hợp đơn giản, chúng tơi sẽ kí hiệu phễu là F.


Từ Định nghĩa 3.1.2 có thể thấy rằng một phễu có thể được xây dựng
lên từ một dãy mặt tam giác. Giả sử rằng 4vpq là một tam giác thuộc F


nằm khác phía với điểm u qua cạnh chung [p, q]. Tập hợp bF = F ∪ 4pqv


</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

Hình 3.2 Phễu được tạo bởi biên B1= SP (s, p) và B2= SP (s, q) và cạnh chung [p, q]; bF = F ∪ 4pqv
là miền được xử lí.


Lấy u, u0 ∈ F hoặc u, u0 ∈ Fb, việc xây dựng bF cũng giống như việc
hình thành dãy mặt tam giác, từ đó chúng ta có thể thay thế F bằng bF.
Khi đó, đường trắc địa thẳng nhất trong phễu mới hình thành sẽ được
kí hiệu là C



b


F(u, u


0<sub>)</sub><sub>. Giả sử rằng khơng có phễu nào rỗng thì</sub> <sub>F</sub>


pq(s) với


s /∈ [p, q], B1 ∩ B2 = {s}, B1 ∩ [p, q] = {p}, B2∩ [p, q] = {q}, chúng ta có


mệnh đề sau:


Mệnh đề 3.1. [5] Cho một phễu F = Fpq(u) dọc theo dãy mặt tam giác


F, z /∈ [p, q], với mỗi i ∈ {1, 2} tồn tại một đường trắc địa thẳng nhất


được kí hiệu là Ti trong bF đi qua một đỉnh của Bi và gặp đoạn [p, q] tại


một điểm duy nhất.


Tiếp theo, luận văn sẽ trình bày lại định lý về các phễu mới sau khi
lật không bị đè lên nhau, việc này sẽ làm giảm được các bước tính tốn
trong q trình tìm đường đi ngắn nhất giữa hai điểm trên dãy mặt của
một tam giác.


Định lý 3.1.1. [5] Ảnh của phễu Fpq(u) thông qua phép lật dọc theo dãy


</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

Hình 3.3 z là điểm ảnh duy nhất tương ứng với miền đơn Rz= 4zw1w2và z0 là điểm ảnh duy nhất
tương ứng với miền đơn Rz0 = 4z0w0<sub>1</sub>w<sub>2</sub>0.



Chứng minh. Đầu tiên, ta cần chứng minh điểm z và ảnh của nó z¯là duy
nhất tương ứng với miền phễu chứa điểmz. Ta lấy z ∈ F \ [p, q]. Từ Mệnh
đề 3.1, chúng ta giả sử rằng: w1 = T ∩ [p, q]; w2 = T ∩ [p, q].


Ta gọi: Ti := C<sub>F</sub><sub>b</sub>(z, wi) với i = 1, 2.


Vì T1(z) và T2(z) là các đường đi trắc địa thẳng nhất và dài nhất


xuất phát từ điểm z nên T1(z) và T2(z) là duy nhất.


Từ đó, ta có thể thấy rằng điểm z là điểm duy nhất tương ứng với
miền đơn Rz được hình thành bởi các đường trắc địa thẳng nhất T1(z) và


T2(z) và [p, q].


Chính vì thế, độ lớn của tất cả các góc của một đường sẽ được bảo
tồn qua phép lật phẳng và ảnh của miền Rz tức là Rz là 4¯zw1w2, dẫn


tới ảnh của điểm z là z¯cũng là duy nhất tương ứng với tam giác Rz.


Giả sử tồn tại hai điểm z, z0 ∈ F \ [p, q] sao cho Rz = Rz0 thì bằng


cách đưa ra số tam giác trong phễuFpq(u)mà T1(z)vàT2(z) đi qua, chúng


ta có thể chứng minh được rằngT1(z) = T1(z0) vàT2(z) = T2(z0)hay điểm


z ≡ z0.


Ta suy ra được ảnh của phễu Fpq(u) thông qua phép lật dọc theo



dãy các cạnh của phễu lên mặt phẳng chứa tam giác4pqv không bị đè lên
nhau. Do độ lớn của tất cả các góc của hai biên B1 và B2 được bảo toàn


</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>

3.2 THUẬT TỐN TÌM CHÍNH XÁC ĐƯỜNG ĐI NGẮN
NHẤT GIỮA HAI ĐIỂM DỌC THEO DÃY MẶT TAM
GIÁC


Thuật tốn tìm chính xác đường đi ngắn nhất giữa hai điểm dọc theo
dãy mặt tam giác trong không gian ba chiều được giới thiệu trong [11]. Từ
Định lý 3.1.1 thuật tốn được trình bày bằng việc sử dụng ý tưởng phễu
tương ứng với các cạnh chung dọc theo dãy mặt tam giác và lật phẳng
từng phễu đó, ta gọi thuật tốn đó là NFU.


Ta xét F = Fpq(u) là một phễu trong F và B1 = SP (u, p), B2 =


SP (u, q)là hai biên của phễu; v là điểm tới và bF là miền được xử lí của F.


"Phễu" được trình bày như một hàng đợi kết thúc kép mà các đỉnh
được sắp xếp theo thứ tự: F = (pr, pr−1. . . . , p1, u, q1, . . . , qs−1, qs), ở đó


u = p0 = q0, q = qs, [p, q] là một cạnh chung của F, B1 đi qua các đỉnh


p0, p1, . . . , pr và B2 đi qua các đỉnh q0, q1, . . . , qs của F. Phễu dọc theo F


tương ứng với cạnh [v, q] (cạnh chung [p, v] cũng tương tự như thế) của F


là một phễu mới được xây dựng từ Fpq(u) và điểm tới v.


Giả sử rằng [v, q] là một cạnh chung của F. Quy trình lật phễu mới



NFU (F, v, q, u, SP (u, v)) dưới đây để xây dựng một phễu mới tương ứng


với cạnh chung [v, q] theo Định lí 3.1.1. Sau khi lật phẳng phễu Fpq(u) lên


mặt phẳng chứa 4pqv, đường đi ngắn nhất từ chóp u đến điểm tới v sẽ
được tính tốn, chúng ta thực hiện kẻ các đường tiếp tuyến từ v tới các
đường lồi hướng ra ngoài B1 và B2 trên mặt phẳng chứa 4pqv.


Bài toán: Xét một phễu F ⊂ F = {f1, f2, . . . , fm, fm+1}, u là chóp


của phễu F, 4pqv ∈ F, phễu F và 4pqv có cạnh chung [p, q]. Xây dựng
một phễu mới bF = F ∪ 4pqv để tìm đường đi ngắn nhất SP


b


F(u, v) từ u


</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

Algorithm 3 (Thủ tục lật phễu mới (F, v, q, u, SP
b
F(u, v)))


1: Procedure NEWFUNNEL-UNFOLDING (F, v, q, u, SP
b
F(u, v))


2: Lật F dọc theo dãy các cạnh chung tương ứng của F giữa u và [p, q] lên mặt phẳng chứa 4pqv.
Đặt B1 và B2là ảnh sau khi lật của các biên tương ứng B1và B2 của F .


/*Theo Định lý 3.1.1, B1và B2 là những đường gấp khúc lồi hướng ra phía ngồi của 4upq.*/



3: Xác định đường tiếp tuyến từ v tới một trong hai đường gấp khúc B1 và B2 trên mặt phẳng
chứa 4pqv và vf là tiếp điểm.


4: Chọn đường trắc địa thẳng nhất C


b


F(vf, v) mà ảnh của nó là một đoạn thẳng [vf, v] và chọn
đường ngắn nhất SP


b


F(u, vf) nối u và vf trong bF (kí hiệu là B(u, vf) của biên B1(nếu vf ∈ B1)
hoặc B2 (nếu vf ∈ B2) giữa u và vf.


5: SP
b


F(u, v) = SPFb(u, vf) ∪ CFb(vf, v).


6: Lật tất cả các đỉnh kết thúc phía bên trái (pr) của F cho tới khi chạm vào vf.


7: If chóp của F được lật then chóp của phễu mới sẽ là vf.


8: Thêm v vào điểm kết thúc bên trái của F .


9: Set u := vf, p := v


10: Return < Fpq(u), SP
b


F (u,v) >
/*F = Fpq(u), SP


b


F(u, v) được cập nhật*/


/*F là một phễu mới tương ứng với cạnh chung F [p, q]).*/


11: End procedure.


Ví dụ 3.2.1. Xét một dãy mặt tam giác gồm có 10 mặt và 12 đỉnh, các
đỉnh v0(−3, 3, 3), v1(−3, 0, 3), v2(0, 3, 3), v3(0, 0, 3), v4(0, 0, 0), v5(0, 3, 0),


v6(3, 3, 0), v7(3, 0, 0),v8(3, 0, −3), v9(0, 0, −3),v10(0, −3, −3),v11(3, −3, −3).


Tìm đường đi ngắn nhất từ đỉnh v0 tới đỉnh v10 trên dãy mặt tam giác đã


cho bằng cách sử dụng thuật toán 3.


</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

Xây dựng một phễu ban đầu F := 4v0v1v2, chóp phễu là đỉnh v0,


hai biên của phễu là hai cạnh của tam giác B1 = SP (v0, v1) = [v0, v1] và


B2 = SP (v0, v2) = [v0, v2], cạnh chung là [v1, v2]. Với phễu đầu tiên ứng


với cạnh [v1, v2] ta tính được đường đi ngắn nhất từ chóp phễu v0 tới các


đỉnh v1, v2 đều bằng 3.



Hình 3.5 Phễu có chóp là v0tương ứng với cạnh chung [v1, v2].


Tiếp tục việc tìm phễu mới bằng việc thực hiện việc lật phễu F


lên mặt phẳng chứa tam giác 4v1v2v3. Trong trường hợp này, phễu F


và 4v1v2v3 cùng nằm trên một mặt phẳng, ta xác định miền được xử lí


là bF := F ∪ 4v1v2v3, phễu mới (F, v3, v1, v0, SPFb(v0, v3)). Khi đó phễu


mới hình thành có chóp là v0, biên mới là B1 = SP (v0, v3) = [v0, v3] và


B2 = SP (v0, v2) = [v0, v2] và cạnh chung là [v2, v3]. Với phễu mới hình


</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>

Hình 3.6 Phễu (F, v2, v3, v0, SP
b


F(v0, v3)) tương ứng với cạnh chung [v3, v2].


Thực hiện việc tìm phễu mới trên dãy mặt tam giác đã cho tương ứng
với cạnh [v2, v4] bằng việc lật F lên mặt phẳng chứa 4v3v2v4. Sau khi xác


định được miền được xử lí bF := F ∪4v3v2v4, phễu mới(F, v4, v3, v0, SP<sub>F</sub><sub>b</sub>(v0, v4)).


Khi đó phễu mới hình thành có chóp là v0, biên mới là B1 = SP (v0, v4)


và B2 = SP (v0, v2) = [v0, v2] và cạnh chung là [v2, v4], ta tính được đường


đi ngắn nhất từ v0 tới đỉnh v4 là 6.71.



Tương tự như vậy, khi lật phễu mới hình thành theo cạnh chung


[v4, v5], khi đó ta xác định được chóp là v0, miền xử lí bF := F ∪ 4v2v4v5,


phễu mới (F, v5, v4, v0, SP<sub>F</sub><sub>b</sub>(v0, v5)) biên mới là B1 = SP (v0, v4) và B2 =


SP (v0, v5) và cạnh chung là [v4, v5], ta tính được đường đi ngắn nhất từ


</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

Hình 3.7 Phễu (F, v4, v2, v0, SP
b


F(v0, v4)) tương ứng với cạnh chung [v2, v4].


</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>

Hình 3.9 Phễu (F, v6, v4, v0, SP
b


F(v0, v6)) tương ứng với cạnh chung [v4, v6].


Hình 3.10 Phễu (F, v7, v4, v0, SP
b


</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>

Hình 3.11 Phễu (F, v9, v7, v0, SP
b


F(v0, v9)) tương ứng với cạnh chung [v7, v9].


Hình 3.12 Đường đi ngắn nhất từ v0 tới đỉnh v4 và phễu (F, v8, v9, v4, SP
b


</div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46>

Hình 3.13 Đường đi ngắn nhất từ v0 tới đỉnh v4 và phễu (F, v11, v9, v4, SP


b


F(v4, v11)) tương ứng với
cạnh chung [v9, v11].


</div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47>

3.3 ỨNG DỤNG THUẬT TỐN NFU TÌM ĐƯỜNG ĐI
NGẮN NHẤT TỪ MỘT ĐIỂM TỚI TẤT CẢ CÁC ĐIỂM
TRÊN BỀ MẶT KHỐI ĐA DIỆN


Thuật tốn NFU tìm đường đi ngắn nhất giữa hai điểm trên dãy
mặt tam giác trong không gian ba chiều khơng những giúp giảm số phép
tốn trong q trình tìm đường đi ngắn nhất mà cịn có ứng dụng khi tìm
đường đi ngắn nhất giữa hai đỉnh của một khối đa diện. Đối với thuật
toán thơ ngây trong Ví dụ 2.2.1, việc lật ra nhiều dãy mặt mất rất nhiều
thời gian tính tốn cũng như là những dãy mặt khơng hữu dụng, tức là có
những dãy mặt được lật ra không xác định đường đi ngắn nhất. Thay vì
việc tìm đường đi ngắn nhất từ một điểm nguồn cho trước tới các đỉnh còn
lại trên bề mặt một khối đa diện, bài tốn được chuyển thành tìm đường
đi ngắn nhất từ điểm nguồn cho trước tới một đỉnh cịn lại của khối đa
diện và sử dụng thuật tốn NFU.


Ví dụ sau đây sẽ làm rõ được tính ứng dụng của thuật tốn NFU so
với thuật tốn thơ ngây.


Ví dụ 3.3.1. Xét một khối đa diện mà các mặt đã được tam giác phân
thành 16 mặt (xem hình 2.8) và các đỉnhs(1.5, 1.5, 6), v1(0, 0, 3),v2(3, 0, 3),


v3(3, 3, 3) v4(0, 3, 3),v5(0, 0, 0), v6(3, 0, 0), v7(3, 3, 0),v8(0, 3, 0),v9(1.5, 1.5, −3).


Tìm đường đi ngắn nhất từ đỉnh nguồn s tới các đỉnh còn lại trên bề mặt


của khối đa diện bằng cách sử dụng thuật toán dùng nguồn sáng và thuật
toán NFU.


Bây giờ ta sẽ thực hiện giải ví dụ trên bằng hai thuật toán: thuật
toán thơ ngây và thuật toán NFU.


Sử dụng thuật tốn “thơ ngây” để giải bài tốn:


Trong ví dụ này ta có thể chỉ ra được đường đi ngắn nhất trên bề
mặt khối đa diện từ đỉnh s lần lượt tới các đỉnh v1, v2, v3, v4 đều bằng
3.67, đường đi ngắn nhất từ s tới v5, v6, v7, v8 đều bằng 6.5287, đường


đi ngắn nhất trên bề mặt khối đa diện từ s tới v9 bằng 9.7 và đi qua dãy


</div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48>

Hình 3.15 Minh hoạ khối đa diện trong khơng gian ba chiều trong Ví dụ 3.3.1.


ˆ Bước 1: Ta gán: root:= s;


Các cạnh:[v1, v2], [v2, v3], [v3, v4], [v4, v1]là các cạnh đối diện với gốc s.


Khi đó: ([v1, v2], s, [v1, v2]), ([v2, v3], s, [v2, v3]), ([v3, v4], s, [v3, v4]),


([v4, v1], S, [v4, v1]) là con của gốc s.


Khoảng cách từ đỉnhstới lần lượt các đỉnh v1, v2, v3, v4 đều bằng 3.67.


</div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49>

ˆ Bước 2: Do khối đa diện này sau khi các mặt được tam giác phân sẽ
có tất cả 16 mặt nên cây chúng tôi xây dựng sẽ có 16 mức.


Mức 1: Đối với([v1, v2], s, [v1, v2]),([v2, v3], s, [v2, v3]),([v3, v4], s, [v3, v4]),



([v4, v1], s, [v4, v1]) là lá ta thực hiện lật s lần lượt quanh các cạnh


[v1, v2], [v2, v3], [v3, v4], [v4, v1], ta nhận thấy (xem hình 3.16):


∠(4Sv1v2, 4v1v2v5) = 153o43o; ∠(4Sv3v4, 4v3v4v7) = 153o43o;


∠(4Sv2v3, 4v2v3v6) = 153o43o; ∠(4Sv4v1, 4v4v1v8) = 153o43o.


Ở mức 1 này, ta thực hiện lật s lần lượt qua các cạnh [v1, v2], [v2, v3],


[v3, v4],[v4, v1]lên mặt phẳng chứa các mặt4v1v2v5,4v2v3v6,4v3v4v7,


4v4v1v8 và ảnh của s tương ứng trên mỗi mặt phẳng lật là I[v1,v2],


I[v2,v3], I[v3,v4], I[v4,v1].


Đối với4sv1v2và4v1v2v5 sau khi đồng phẳng, ta gáne0 := [v1, v5], [v2, v5]


và thực hiện tính hình hình chiếu P roj<sub>[v1,v5]</sub>I[v1,v5] của ảnh nguồn I<sub>[v1,v5]</sub> lên
cạnh [v1, v5] và P roj


I<sub>[v2,v5]</sub>


[v2,v5] của ảnh nguồn I[v2,v5] lên cạnh [v2, v5].


Thêm



[v1, v5], I[v1,v5], P roj


I<sub>[v1,v5]</sub>
[v1,v5]








[v2, v5], I[v2,v5], P roj
I<sub>[v2,v5]</sub>
[v2,v5]





là con
của ([v1, v2], s, [v1, v2]).


Từ đây, ta tính được đường đi ngắn nhất từ s tới đỉnh v5 bằng 6.5287


đi qua cạnh [v1, v2].


Tương tự đối với 4sv2v3 và 4v2v3v6, 4sv3v4 và 4v3v4v7, 4sv4v1 và


4v4v1v8 ta sẽ tính được đường đi ngắn nhất từ s tới các đỉnh v6, v7,


v8 và cùng bằng 6.5287.


Mức 2: Đối với lá




[v2, v5], I[v2,v5], P roj
I<sub>[v2,v5]</sub>
[v2,v5]





ta lại tiếp tục thực hiện
việc lật I[v2,v5] quanh cạnh [v2, v5] hoặc [v1, v5] để được ảnh nguồn mới


tương ứng là I[v2,v5] và I[v1,v5]. Từ đây ta sẽ tính được đường đi ngắn


nhất từ I<sub>[v2,v5]</sub> tới đỉnh v6 và bằng 6.5287.


Các lá khác ở mức này ta cũng làm tương tự để tìm được đường đi
ngắn nhất từ ảnh nguồn tới các đỉnh v7, v8.


Mức 3: Đối với lá



[v5, v6], I[v5,v6], P roj
I<sub>[v5,v6]</sub>
[v5,v6]





ta lại tiếp tục thực hiện
việc lật I[v2,v5] quanh cạnh [v5, v6] để được ảnh nguồn mới tương ứng


là I[v5,v6]. Từ đây ta sẽ tính được đường đi ngắn nhất từ I[v5,v6] tới đỉnh



</div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50>

Hình 3.17 Minh hoạ đường đi ngắn nhất từ I[v1v2] đến v5 trong khơng gian ba chiều.


Hình 3.18 Minh hoạ đường đi ngắn nhất từ I[v2,v5] đến v6 trong không gian ba chiều.


</div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51>

Hình 3.19 Minh hoạ đường đi ngắn nhất từ I[v5,v6] đến v9 trong không gian ba chiều.


Sử dụng thuật toán NFU để giải bài toán:


Đối với thuật toán NFU, để tìm đường ngắn nhất từ điểm nguồn


s tới các đỉnh còn lại trên bề mặt của khối đa diện, ta chuyển bài toán
thành các bài toán nhỏ. Đối với các đỉnh kề với đỉnh s như v1, v2, v3,v4 ta


có thể tìm ra ln được đường đi ngắn nhất từ điểm nguồn s tới các đỉnh
đó. Đối với các đỉnh v5, v6, v7, v8, v9, ta cần tìm tất cả các dãy mặt chứa


các đỉnh s hoặc v5, s hoặc v6, s hoặc v7, s hoặc v8, s hoặc v9 và sử dụng


thuật tốn NFU để tìm đường đi ngắn nhất trên từng dãy mặt. Sau khi
tìm được các đường đi ngắn nhất đó ta so sánh các đường đi ngắn nhất có
cùng điểm nguồn và điểm tới với nhau và chọn ra đường đi ngắn nhất.


</div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52>

Hình 3.20 Đường đi ngắn nhất màu đỏ từ đỉnh nguồn s tới các đỉnh trên bề mặt khối đa diện.


Để lược bỏ những dãy mặt mà đường đi ngắn nhất từ đỉnh nguồn
tới đỉnh cần tìm khơng phải là đường ngắn nhất trên bề mặt của khối đa
diện, ta cùng xét lại dãy mặt trong Ví dụ 3.2.1 là một dãy mặt tam giác
của khối đa diện như Hình 3.21.


</div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53>

Trong Ví dụ 3.2.1 đường đi ngắn nhất v0 tới v10 là đường màu đỏ đi



qua đỉnh v4 và đỉnh v9 nhưng đối với khối đa diện dưới đây thì nó khơng


cịn là đường đi ngắn nhất từ đỉnh v0 tới đỉnh v10 trên bề mặt của khối đa


diện.


Hình 3.22 Đường đi ngắn nhất màu đỏ thuộc dãy mặt màu xanh đã chọn trên bề mặt khối đa diện.


</div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>

Hình 3.23 Chọn dãy mặt mới màu tím xoay quanh đỉnh v5 chứa đường đi ngắn nhất giữa hai đỉnh
v0 và v10 khác.


Sử dụng thuật tốn NFU để tìm đường đi ngắn nhất từ đỉnh v0 tới


đỉnh v10 trên dãy mặt tam giác mới cập nhật ta thu được đường đi ngắn


nhất tốt hơn đường đi ngắn nhất khi chưa cập nhật dãy mặt tam giác
(xem Hình 3.24).


</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>

KẾT LUẬN



Luận văn này được trình bày theo ba chương với nội dung chính là
giải quyết bài tốn tìm đường đi ngắn nhất giữa hai điểm trên dãy mặt tam
giác trong không gian ba chiều bằng ý tưởng “phễu” có sử dụng kĩ thuật
lật phẳng. Từ đó phát triển thuật tốn bằng việc xây dựng tìm đường đi
ngắn nhất từ một điểm nguồn tới các đỉnh còn lại trên bề mặt của khối
đa diện bằng việc lựa chọn một dãy mặt tam giác khác.


ˆ Chương 1: Nội dung chính trong chương này là giải quyết bài tốn tìm
đường đi ngắn nhất giữa hai điểm trong một đa giác đơn. Đây là bài


toán được giải trong khơng gian hai chiều có sử dụng kỹ thuật “phễu”.


ˆ Chương 2: Chương này trình bày về kỹ thuật lật phẳng một dãy mặt
tam giác của một dãy mặt tam giác đã cho trước và sau đó đưa ra
thuật tốn dùng nguồn sáng và bóng (thuật tốn Thơ ngây) để xác
định đường đi ngắn nhất từ một điểm nguồn tới các đỉnh còn lại trên
bề mặt của một khối đa diện. Sau đó, luận văn cũng đưa ra một ví dụ
để minh hoạ cho thuật toán, đồng thời cũng cho thấy được sự cồng
kềnh của số các phép toán trong việc tính tốn đường đi ngắn nhất.


</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>

Tài liệu tham khảo



[1] P. K. Agarwal, S. Har-Peled, M. Karia. Computing approximate
short-est paths on convex polytopes. Algorithmica. 2002;33(2):227–242.


[2] J. A. Sethian. Fast marching methods. SIAM Rev. 1999;41(2):199–235.


[3] S. Nazari, M. R. Meybodi, M. A. Salehigh, S. Taghipour. An advanced
algorithm for finding shortest path in car navigation system. 2008 First
International Conference on Intelligent Networks and Intelligent
Sys-tems. 2008;671-674.


[4] V. Akman. Geometry and graphics applied to robotics.
Theoreti-cal foundations of computer graphics and CAD NATO ASI Series.
1988;40:619-638.


[5] P. T. An. Finding Shortest paths in a sequence of triangles in 3D by
the planar unfolding. Numerical Functional Analysis and Optimization.
2019; 40(8):1532-2467.



[6] V. P. Trong, N. Szafran, L. Biard. Pseudo-geodesics on
threedimen-sional surfaces and pseudo-geodesic meshes. Numerical Algorithms.
2001;26(4):305-315.


[7] D. T. Lee, F. P. Preparata. Euclidean shortest paths in the presence of
rectilinear barries. NETWORKS. 1984;14(3):393-410.


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


</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>

[10] J. Chen, Y. Han. Shortest paths on a polyhedron, Part I: Computing
shortest paths. International Journal of Computational Geometry and
Applications. 1990; 6(2):360-369.


[11] D. M. Mount. On finding shortest paths on convex polyhedra.
Mary-land Univ College Park Center for Automation Research. 1985.


[12] P. T. An. Finding shortest paths in a sequence of triangles in 3D by
method of orienting curves. Optimization. 2018; 67(1):159-177.


[13] E. W. Dijkstra. A note on two problems in connection with graphs.
Numerische Mathematik. 1959;1:269–271.


[14] P. R. Evans. Rotations and rotation matrices. Acta Crystallographica
Section D, Acta Cryst. 2001;57:1355-1359.


</div>

<!--links-->

×