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>
<i>LUẬN VĂN THẠC SĨ TOÁN HỌC </i>
<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>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
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
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.
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
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
[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
Hiện nay, một trong những vấn đề đang được các nhà khoa học
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.
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:
Đị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].
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
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
Đị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.
Đị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
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.
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)).
Đị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
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.
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
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
- 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.
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.
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.
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.
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
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
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
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
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
Hình 2.4 Minh hoạ dãy mặt tam giác {4v<sub>0</sub>v1v2, 4v1v2v3, 4v1v3v4}.
Ta có
x00
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
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
Đị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
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.
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
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]
Thêm
[v1, v4], I[v1,v4], P roj
I<sub>[v1,v4]</sub>
[v1,v4]
và
[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]
và
[v2, v4], I[v2,v4], P roj
I<sub>[v2,v4]</sub>
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>
và
[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]
và
[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]
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]
và
[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]
và
[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]
và
[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]
và
[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
ở 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]
và
[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
. 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.
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
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
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
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
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
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
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.
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
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ừ
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].
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
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
Hình 3.13 Đường đi ngắn nhất từ v0 tới đỉnh v4 và phễu (F, v11, v9, v4, SP
F(v4, v11)) tương ứng với
cạnh chung [v9, v11].
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
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
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.
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
và
[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
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.
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.
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.
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.
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).
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
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.
[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.
[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.