Kỹ thuật tìm đờng đi ngắn nhất trên bản đồ KS. lu 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: Bi báo nói về kỹ thuật tìm đờng đi có độ di 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 ny 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ị. Cho đồ thị G = {V,E} có trọng số không âm là các c ij 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) 014 04 120 502 320 10 6 5 4 3 2 1 654321 2 3 5 5 4 2 1 3 2 1 4 1 2 1 6 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 N k là tập hợp tạo thành bởi k +1 phần tử: Nguồn và k nút gần nguồn nhất sau k bớc thực hiện giải thuật. Dk(n) là độ dài từ nguồn đến nút n theo con đờng ngắn nhất bao hàm trong N k . 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) N 0 = {1} = C(1,v) v N D 0 0 Bớc k (tính v cập nhật) {u} N k = N k-1 (v), v N(u) = minD trong đó u luôn thoả mãn biều thức: D k-1 k-1 k-1 D k (v) = min[D (v), D (u) + C(u,v)] k-1 k-1 v N k 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 Kết quả thể hiện hình 2a đờng đi ngắn nhất đợc tô đậm. 1 1 1 2 2 2 3 3 5 2 1 3 4 5 6 2 3 5 5 4 2 1 3 2 1 4 1 2 1 6 1 1 1 2 2 2 3 3 5 10 2 1 3 4 5 6 a b c 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ị sau khoảng thời gian cỡ O(n 2 ). Điều này cảnh báo nếu số đỉnh của đồ thị mà lớn thì khả năng 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(n 3 ), O(n 4 ). 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 lu 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. Tập đỉnh VG 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 1k 2 1kk 2 1kk )yy()xx( C =S = ij ij là chiều dài đại số của một segment S ij x k , y k là các giá trị tọa độ phẳng của véc tơ thứ k thuộc segment S. = . Các đỉnh không kề nhau có trọng số C ij 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. 2 3 5 5 4 2 1 3 2 1 4 1 2 1 6 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,TV. 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(su) + d(uv) + d(vv) + d(vT) (hình 5). 2 3 5 5 4 2 1 3 2 1 4 1 2 1 6 s T T' s' u v s s' u ab Hình 5. 2.2. Khắc phục độ phức tạp tính toán Để 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: Bớc lặp Đỉnh 1 Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh 5 Đỉnh 6 0,1 1,1* Đỉnh1 Khởi tạo ,1 ,1 ,1 ,1 1 - - 3,2* 4,2* ,1 ,1 2 - - - 7,3 ,1 ,1 3 - - - - 6.4 5,4* 4 - - - - 6,6* - 5 Bớc lặp Đỉnh 2 Đỉnh 3 Đỉnh 4 Đỉnh 5 Đỉnh 6 Đỉnh 1 3,2* 4,2* Đỉnh2 Khởi tạo 0,2 ,2 ,2 ,2 4,3* 1 - - 7,3 ,2 ,2 2 - - - ,2 ,2 ,2 3 - - - 6,4 5.4* - 4 - - - 6,5* - - 5 Tiếp tục cho đến hết ta có kết quả sau dạng cây khung sau: 2 2 2 2 2 2 5 5 5 5 5 5 3 3 3 3 3 3 4 4 4 4 4 4 1 1 1 1 1 1 6 6 6 6 6 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ỳ lu 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 Đỉnh2 2,3,1 0 2,3 2,4 2,4,5 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 Đỉ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 G1 G2 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 đồ thị thị lớn. Hình 8. - 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 [1]. Nguyễn Đức Nghĩa, Nguyễn Tô Thnh. 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 . 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. Kỹ thuật tìm đờng đi ngắn nhất trên bản đồ KS. lu 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: Bi báo nói về kỹ thuật tìm đờng đi có độ di ngắn nhất của. 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