lưu văn giang Trung tâm biên tập vμ công nghệ cao Nhμ xuất bản Bản đồ Tóm tắt: Bμi báo nói về kỹ thuật tìm đường đi có độ dμi ngắn nhất của hai điểm bất kỳ trên bản đồ vμ đề xuất một
Trang 1Kỹ thuật tìm đường đi ngắn nhất
trên bản đồ
KS lưu văn giang
Trung tâm biên tập vμ công nghệ cao Nhμ xuất bản Bản đồ
Tóm tắt: Bμi báo nói về kỹ thuật tìm đường đi có độ dμi ngắn nhất của hai điểm bất kỳ
trên bản đồ vμ đề xuất một số ứng dụng kỹ thuật nμy trong thực tế
Summary: In this paper we consider the details of the routing algorith (the shortest path
on the graph) and some applications from the result in the practice
i đặt vấn đề
Trong một số trường hợp sử dụng bản đồ để tra cứu đường đi tới điểm nào đó thường xuất hiện câu hỏi làm thế nào để xác định đường đi đến đó là ngắn nhất? Trong phạm vi hẹp hoặc mạng lưới giao thông đơn giản ít đường đi thì có thể tìm ngay được câu trả lời Hầu hết các trường hợp còn lại là khó khăn Vấn đề đặt ra là cần xây dựng cơ sở kỹ thuật tìm đường đi ngắn nhất giữa hai điểm xác định trên bản đồ trong thời gian nhỏ nhất đáp ứng ngay yêu cầu sử dụng
ii cơ sở của kỹ thuật tìm đường đi ngắn nhất trên bản đồ
Phát biểu bài toán: Cho hai điểm bất kì trên bản đồ Hãy chỉ ra đường đi có độ dài ngắn nhất giữa hai điểm đó trên cơ sở hệ thống giao thông của bản đồ
1 Cơ sở toán học giải bài toán
Cơ sở toán học của vấn đề này thực ra đã được toán học giải quyết từ rất lâu Có rất nhiều phương pháp khác nhau, trong bài này giới thiệu kỹ thuật tìm đường đi ngắn nhất dựa trên lý thuyết toán đồ thị Phương pháp này có nhiều ưu điểm hơn khi áp dụng trong các bản đồ số bởi vì các bản đồ số dạng véc tơ đều xây dựng trên cơ sở lý thuyết đồ thị
V là tập đỉnh
E là tập cạnh
C{u,v} là ma trận trọng số
u,v ∈ V
(xem hình vẽ 1)
Trang 2
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎢
⎣
⎡
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
∞
0 1 4
0 4
1 2 0
5 0 2
3 2 0
1 0
6 5 4 3 2 1
6 5 4 3 2 1
5
5 4
2
1 3
2 1
4 1
2
Hình 1.
Tất cả các thuật toán tìm đường đi ngắn nhất trên đồ thị đều dựa trên một tính chất “Mọi
đường con của đường đi ngắn nhất cũng là đường đi ngắn nhất” Giả sử tìm đường đi ngắn nhất
từ đỉnh s tới đỉnh t, s, t ∈ V người ta luôn tìm được đỉnh v trước t sao cho khoảng cách từ s đến t
sẽ bằng (d(s,t) = d(s,v) + c(v,t) Đỉnh v sẽ là trước t ngắn nhất: Mọi đoạn sẽ từng bước kiến thiết một cây đường đi “ngắn nhất”, có gốc tại nút nguồn hay còn gọi nút khởi đầu cho tới khi nút cuối cùng trong đồ thị đã được đưa vào ở bước thứ k các con đường “ngắn” nhất tới k nút gần nguồn nhất sẽ được tính Các nút đó được định nghĩa thuộc một tập N Có thể kể ra các thuật toán tiêu biểu như Dijkstra, ford - Bellman, hoặc thuật toán Floyd v.v Dưới đây trình bày thuật toán Dijkstra để minh họa cho cách giải bài toán này
- Thuật toán Dijkstra
Giả sử nút 1 là nút nguồn Để tìm các con đường ngắn nhất từ nút 1 tới các nút còn lại của đồ thị
ta bắt đầu duyệt đồ thị tại đỉnh 1 cho độ dài đỉnh 1 tới 1 là 0, xét tới hai đỉnh kề liên thông với 1
Độ dài đường đi được cộng liên tiếp sau một bước tính nếu tổng độ dài ngắn nhất được đưa vào tập N:
Bước 0 (khởi động)
N0 = {1}
= C(1,v) v ∉ N
Bước k (tính vμ cập nhật)
∪ {u}
Nk = Nk-1
(v), v ≠ N (u) = minD
Dk(v) = min[D (v), D (u) + C(u,v)] k-1 k-1
v ≠ Nk
Thuật toán dừng lại khi tất cả các nút đã nằm trong N Kết quả giải thuật cho phép tìm
đường đi ngắn nhất từ một đỉnh cho trước tới tất cả đỉnh còn lại
Chẳng hạn với đồ thị hình 1 chọn điểm xuất phát là đỉnh 1 Thuật toán Dijkstra sẽ chỉ ra
đường đi ngắn nhất xuất phát từ đỉnh 1 tới đỉnh còn lại
Trang 3Kết quả thể hiện hình 2a đường đi ngắn nhất được tô đậm
1
1
1 2 2
3
5 2 1
3
6
5
5 4
2
1 3
2 1
4 1
2
1
1
1
2 2
2
3
3
5
10 2
1
3
6
Hình 2
Trong trường hợp đồ thị là vô hướng cách tính cũng tương tự Trong trường hợp này trọng
số được tính cho cả hai chiều chẳng hạn ta cho đồ thị hình 2b sau, trọng số tính được cả hai chiều nút khởi đầu tại 1 Kết quả thể hiện hình 2c đường đi ngắn nhất được tô đậm
Nhận xét:
- Người ta đã chứng minh rằng thuật toán Dijkstra tìm được đường đi ngắn nhất trên đồ thị
tính toán sẽ rất hạn chế
- Nếu ta áp dụng lần lượt n đỉnh ta sẽ tìm được đường đi ngắn nhất ở bất kỳ cặp đỉnh nào Trong trường hợp này người ta còn dùng thuật toán Ford – Bellman hoặc thuật toán Floyd Chi tiết các thuật toán này có thể xem thêm trong lý thuyết toán đồ thị Độ phức tạp của các thuật toán này cỡ O(n3), O(n4)
2 Xây dựng kỹ thuật tìm kiếm đường đi ngắn nhất trên bản đồ
Trong bài toán này cần giải quyết hai vấn đề:
- Xây dựng mô hình đồ thị để áp dụng
- Chỉ ra đường đi thực tế trên bản đồ
- Khắc phục độ phức tạp của bài toán
2.1 Xây dựng mô hình đồ thị
Trong lý thuyết bản đồ số mọi đối tượng đồ họa trong bản đồ đều quy về ba đối tượng cơ bản là: điểm, đường, vùng (point, polyline, polygon) chúng được lưu trữ và biểu thị theo lý thuyết
đồ thị Mối quan hệ giữa ba đối tượng này đã được phân tích định nghĩa trong lý thuyết bản đồ
số ở đây nêu lại khái niệm segment có liên quan tới bài toán
- Một đoạn đường độc lập (không rẽ nhánh) được gọi segment (tạm dịch phân đoạn) tương
đương với đường đi độ dài của đồ thị với điều kiện các đỉnh có bậc không vượt quá 2 (bậc của
đỉnh là số cạnh nối các đỉnh kề) Trong một segment luôn tồn tại một điểm đầu và điểm cuối
a
b
c
d e g
f
i
j
h m
n
Hình 3 dưới đây là cấu trúc véc tơ
của một đoạn đường giao thông cùng
loại cùng lớp (a,b,c,d,e), (e,j,h,m) được
gọi là một segment
Đồ thị G ={V,E} đươc lập như sau:
Hình 3.
Trang 4Tập đỉnh V∈G tạo bởi những điểm giao nhau của hệ thống giao thông Tức là nó sẽ là các ngã ba, ngã tư trên bản đồ
Tập cạnh E ∈ G tạo bởi cặp đỉnh có đường giao thông đi qua
Ma trận trọng số {cij} được xác lập theo công thức:
∑
=
+
ư
n
1 k
2 1 k k 2 1 k
x (
C =S =ij ij
là chiều dài đại số của một segment
Sij
xk, yk là các giá trị tọa độ phẳng của véc tơ thứ k thuộc segment S
= ∞
Hình vẽ sau mô tả một đoạn giao thông đô thị dùng tạo lập ra đồ thị G, chiều đi đường giao thông chính là hướng của đồ thị (hình 4) Giả thiết các trọng số cho như hình 4
5
5 4
2
1
3
2 1
4 1
2
2
1
4
6
5 3
Hình 4
Hai điểm bất kỳ được chọn trên bản đồ chẳng hạn là S, T khi đó xảy ra hai trường hợp:
- S,T ∈ V thì bài toán tìm đường đi ngắn nhất trên bản đồ giống như bài toán cơ bản đã nêu trên
- S,T∉V
Trong trường hợp này xét bài toán bổ sung là cho một điểm S(x,y) tìm tại lân cận S một
đỉnh u ∈ V; V ∈ G sao cho khoảng cách S → u là ngắn nhất Sau khi có u xét tất cả cạnh qua u với điều kiện khoảng cách từ S đến các cạnh qua u nhỏ nhất tìm ra S’ (hình 5b) Tương tự như vậy với điểm T tìm ra đỉnh v và T’ Như vậy bài toán sẽ được đưa về bài toán cơ bản ở trên Khoảng cách ngắn nhất giữa hai điểm S,T sẽ là d(sT) = d(ss’) + d(s’u) + d(uv) + d(vv’) + d(v’T) (hình 5)
5
5 4
2
1
3
2 1
4
1
2
T
T' s'
s s'
u
Hình 5.
2.2 Khắc phục độ phức tạp tính toán
Trang 5Để giảm độ phức tạp tính toán tức là làm giảm thời gian tìm ra kết quả của bài toán Trong trường hợp cụ thể áp dụng trên bản đồ nhận thấy mạng lưới giao thông là cố định hay đồ thị G
đã cho là cố định vì vậy có thể tính trước mọi khả năng có thể hay tìm đường đi cho cặp đỉnh bất
kỳ sau đó lập bảng tra Khi tình huống yêu cầu thì không phải tính nữa mà chỉ cần tra kết quả Chiến lược thứ 2 làm giảm độ phức tạp bài toán tức là làm cho đồ thị G có số đỉnh phù hợp Trong trường hợp này người ta chia đồ thị G có số đỉnh lớn ra nhiều đồ thị con có số đỉnh nhỏ hơn Với bài toán cụ thể ở hình 4, áp dụng thuật giải trên triển khai dạng bảng có kết quả sau:
0,1 1,1*
5
3,2* 4,2*
4,3*
5 Tiếp tục cho đến hết ta có kết quả sau dạng cây khung sau:
2
5
3
4
1
6
s
s
s s
s
s
Hình 6
Cuối cùng ta lập được bảng tra sẵn cho cặp đỉnh bất kỳ lưu lại dưới dạng file số liệu:
Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh 5 Đỉnh 6
Đỉnh1 0 1,2 1,2,3 1,2,4 1,2,4,6,5 1,2,4,6
Đỉnh3 3,1 3,1,2 0 3,1,2,4 3,1,2,4,5 3,1,2,4,6
Đỉnh4 4,5,3,1 4,5,3,1,2 4,5,3 0 4,5 4,6
Đỉnh5 5,3,1 5,3,1,2 5,3 5,3,4 0 5,3,4,6
Trang 6Đỉnh6 6,5,3,1 6,5,3,1,2 6,5,3 6,5,3,4 6,5 0
- Khi số điểm quá lớn tiến hành chia đồ thị lớn
thành các đồ thị con sao cho số đỉnh chung nhau
là nhỏ nhất Trong một số trường hợp chỉ ra một
đỉnh nào đấy làm đỉnh chung
Nếu hai điểm đưa vào xét thuộc một đồ thị
con Gi bài toán về dạng cơ bản đã xét ở trên
Nếu hai điểm đưa vào xét thuộc hai đồ thị
khác nhau khi đó coi các đồ thị con và các đỉnh
chung đã phân tích ở trên như đỉnh của đồ thị mới (hình 8)
đồ thị này cũng được thiết kế từ trước, trọng số được tính
lại theo các trường hợp cụ thể Bài toán chia thành hai bài
toán con
G1 G2 G3
Hình 7
v1
v3
v2
v4
v5
v6
G3
G4
- Tìm đường đi ngắn nhất giữa các đồ thị con theo mô
hình tổng thể (hình 8) kết quả chỉ ra các đỉnh chung và tập
đỉnh là các đồ thị con
- Tìm đường đi ngắn nhất lần lượt của tất cả cặp trong
các đồ thị thành phần và các đỉnh chung kề nhau của đồ
- Cả hai bài toán này đều có thể tính trước và lập bảng tra như đã trình bày ở trên như vậy bài toán lặp lại cách giải như đã trình bày
2.3 Chỉ ra đường đi
Kỹ thuật này rất đơn giản, tập cạnh đồ thị G đã biết thiết lập mối liên kết với các segment thiết lập nên cạnh đó Khi đã xác định các đỉnh chứa đường đi ngắn nhất tức là xác định được các segment gọi lại thủ tục vẽ các véc tơ của segment đó tức là đã vẽ đồ họa lại chính con
đường đó trong hệ giao thông của bản đồ (bài toán đang xét trong bản đồ số và ứng dụng sự trợ giúp tính toán của máy tính)
III Kết luận
Thuật toán đã trình bày ở trên không phải là duy nhất mà còn rất nhiều thuật toán khác nhau trong chiến lược tìm đường đi ngắn nhất Vì vậy việc giới thiệu mang tính chất tham khảo, tùy từng trường hợp cụ thể mà áp dụng Có thể kể ra một số ứng dụng kỹ thuật tìm đường đi ngắn nhất như:
- Dịch vụ chỉ dẫn đường đi qua mạng điện thoại cố định hoặc di động Tại tổng đài cài đặt sẵn máy tính có ứng dụng trên khi đó sẽ sẵn sàng trả lời khi có yêu cầu
- Trợ giúp cho các phương án tác chiến quân sự, an ninh, phòng cháy chữa cháy
- Các ứng dụng trên có thể phát triển thêm các điều kiện là phương tiện đi là khác nhau như ô tô, xe máy, hay một phương tiện nào đó v.v khi đó chỉ thay các mô hình đồ thị Và thực
tế sinh ra nhiều ứng dụng khác nữa
Tài liệu tham khảo
Trang 7[1] Nguyễn Đức Nghĩa, Nguyễn Tô Thμnh Toán rời rạc Nhà xuất bản Đại học quốc gia Hà nội, 2003 [2] TS Vũ Bích Vân Bản đồ học điện toán Giáo trình cao học ngành bản đồ Hà nội, 2000♦