Là hàm ứng với mỗi trạng thái hay mỗi sự chọn lựa một giá trị có ý nghĩa đối với vấn đề để dựa vào giá trị hàm này ta chọn lựa hành động.
a. Các nguyên lý của hàm heuristic Vét cạn thông minh
Cách hành động tương tự như vét cạn để tìm kiếm trong một không gian lớn nhưng có sự hạn chế vùng không gian tìm kiếm và có sự định hướng để nhanh chóng tìm đến mục tiêu.
- Tạo miền D’ rất nhỏ so với D - Vét cạn trên D’
Nguyên lý thứ tự
Trong quá trình hành động để thực hiện việc chọn lọc các cách làm các trạng thái ta có thể dựa trên một thứ tự hợp lý để giải pháp đạt tính hiệu quả cao.
Nguyên lý tham lam
Trong nhiều vấn đề cần phải đạt đến một mục tiêu tối ưu, toàn cục mà không nhìn thấy được toàn bộ quá trình hành động. Hơn nữa, trong từng bước ta phải lựa chọn hành động dựa trên những thông tin cục bộ. Khi đó trong từng bước của quá trình hành động người ta dựa trên mục tiêu tối ưu toàn cục để định ra mục tiêu cục bộ và dựa theo đó chọn lựa hành động.
b. Heuristic chính xác
Nếu hàm heuristic đúng bằng khoảng cách đường đi tối ưu, A* sẽ mở rộng thêm vài nút nữa, khi đó, nếu h(n) hợp với g(n) giá trị của hàm f không thay đổi dọc theo đường đi. Tất cảc các nút trên đường đi sai sẽ có giá trị f cao hơn so với các nút trên đường đi đúng (tối ưu). A* sẽ không được xem xét tại những nút làm cho giá trị f lớn cho đến khi xét đến những nút làm cho f có giá trị nhỏ vá khi đó luôn luôn có đường đi ngắn nhất.
- Tính lại hàm heuristic chính xác: để xây dựng hàm heuristic chính xác, ta tính lại đường đi ngắn nhất giữa các cặp điểm. Điều này thì không khả
thi cho hầu hết các bản đồ game. Tuy nhiên, có nhiều cách để đánh giá gần đúng cho hàm heuristic này:
Kết hợp một lưới thô trên đỉnh một lưới mịn. Tính lại đường đi ngắn nhất giữa mỗi cặp lưới.
Tính lại đường đi ngắn nhất giữa các cặp điểm waypoints.
- Việc thêm hàm heuristic h’ để đánh giá chi phí di chuyển từ bất kỳ điểm liên quan nào đến waypoints. Cái sau cùng cũng có thể được tính lại nếu chúng ta mong muốn sẽ đạt được cái tốt hơn. Hàm heuristic trong trường hợp này sẽ là:
h(n) = h’(s, w1) + distance (w1, w2), h’(w2, t) Với: w1, w2 là các điểm waypoints; s: điểm bắt đầu; t: điểm đích
c. Đánh giá thuật toán
Độ phức tạp thời gian của A* phụ thuộc vào đánh giá heuristic. Trong trường hợp xấu nhất, số nút được mở rộng theo hàm mũ của độ dài lời giải, nhưng nó sẽ là hàm đa thức khi hàm heuristic h thỏa mãn điều kiện sau:
|h(x) – h*(x) |≤ O(log h*(x))
Trong đó h* là heuristic tối ưu, nghĩa là hàm cho kết quả là chi phí chính xác để đi từ x tới đích. Nói cách khác, sai số của h không nên tăng nhanh hơn logarit của "heuristic hoàn hảo" h * - hàm trả về khoảng cách thực từ x tới đích.
Vấn đề sử dụng bộ nhớ của A* còn rắc rối hơn độ phức tạp thời gian. Trong trường hợp xấu nhất, A* phải ghi nhớ số lượng nút tăng theo hàm mũ. Một số biến thể của A* đã được phát triển để đối phó với hiện tượng này, một trong số đó là A* lặp sâu dần (iterative deepening A*), A* bộ nhớ giới hạn (memory-bounded A* - MA*) và A* bộ nhớ giới hạn đơn giản (simplified memory bounded A*).
Trong phần này hai thuật toán tìm đường đi tốt nhất được xem xét: Thuật toán FSA do Petrik và cộng sự đề xuất và thuật toán tìm đường đi tốt nhất trên cơ sở số mờ do Kiran Yadav và cộng sự đề xuất.
2.2.2.1 Thuật toán FSA
Xem xét một đồ thị mờ G với tập đỉnh mờ V. Gọi là tập tất cả các đường đi từ đỉnh va tới đỉnh vb và độ dài “mờ” của tuyến đường được tính theo công thức:
với P , ek là các cạnh của G.
Tập mờ các đường đi ngắn nhất là tập mờ S trên với hàm thành viên
S cho bởi công thức:
với P , Q .
Support bao gồm tất cả các đường đi có thể với độ dài tối thiểu
Thuật toán đường đi ngắn nhất “mờ” (Fuzzy Shortest Path Algorithm - FSA) được mô tả như sau:
Bước 1: tạo các đồ thị Gvà G đồng nhất với G và trọng số trên các cạnh của G và G có thể được tính như sau:
Với G: a sup{supp(a)} Với G: a inf{supp(a)}
Bước 2: Tìm đường đi ngắn nhất p từ va đến vb trong G, vấn đề tìm đường đi ngắn nhất có thể được giải quyết bởi một trong số các thuật toán tìm đường đi ngắn nhất. Gọi k là độ dài của đường đi p.
Bước 3: Gọi S là tập tất cả các đường đi từ va đến vb trong G, có độ dài nhỏ hơn k. Gọi S là tập tất cả các đường đi trong G. Hình ảnh các đường đi này
trong cả S và Slà tương đồng. Vì thế, S là tập tất cả các đường đi mờ ngắn nhất. Cuối cùng tính hàm thành viên cho mỗi đường đi mờ trong S có tính đến k.
Hình 2.4 Đồ thị mờ G minh họa thuật toán FSA
Hình 2.4 biểu diễn trọng số của đồ thị mờ. Đỉnh a là đỉnh xuất phát và f là đỉnh kết thúc của đường đi. Trọng số có thể chỉ là một số hoặc bộ ba số “mờ”. Độ dài mờ cho 4 đường đi từ a đến f được của đồ thị biểu diễn trên hình 2.4 với k=8 – là các đường abdf có hàm thành viên S(abdf)=1, đường đi abef có hàm thành viên S(abef)=2/5, và các đường khác có hàm thành viên S(acdf)=S(acef)=0 trong tập các đường đi mờ ngắn nhất. Hình 2.5 minh hoạ các đường đi mờ ngắn nhất này.
2.2.2.2 Thuật toán tìm đƣờng đi ngắn nhất trên cơ sở số mờ
Thuật toán được đề xuất bởi A. Kiran Yadav, B. Ranjit Biswas để giải quyết vấn đề không chắc chắn, không chính xác thường gặp trong thực tế như giao thông vận tải, định tuyến, thông tin liên lạc… Thuật toán trên cơ sở logic mờ này được sử dụng để kết hợp đồng thời nhiều chi phí hơn cho các cung, nhưng tính năng mới này làm gia tăng sự tính toán.
Giả sử có ba đường đi rõ là p1= 5 , p2 = 9, p3 = 3, chúng ta có thể thấy rằng, quãng đường ngắn nhất là 3. Nhưng trong thế giới thực, chiều dài cung (Cạnh) trong đường đi của một mạng có các thông số không chính xác (như chi phí, năng lực, nhu cầu, thời gian, giao thông ...). Trong trường hợp này việc sử dụng các số mờ để mô hình hóa vấn đề là khá thích hợp.
Nhắc lại một vài khái niệm cơ sở về logic mờ
Trong phần này, một số khái niệm cơ bản liên quan đến tập mờ được nhắc lại.
Định nghĩa 2.1: X là tập vũ trụ, sau đó một tập mờ được định nghĩa là: A = {[x, μA (x)] x є X}
Điều này được đặc trưng bởi một hàm thành viên (hàm thuộc) như sau: μA: X → [0 1],
với: μA (x) biểu thị mức độ thành viên của phần tử x trong tập A.
Định nghĩa 2.2: Số mờ là một tập mờ A có các đặc điểm sau: - Là tập mờ chuẩn, tức là Hight(A)=1
- Mọi tập mức A, (0, 1], là các khoảng đóng - Support(A) là tập giới nội hay là một đoạn hữu hạn.
Định nghĩa 2.3: Cho A(a1,a2.a3),) và B(b1,b2,b3)là hai số tam giác mờ, sau đó tổng mờ của hai số là:
) , , (a1 b1 a2 b2 a3 b3 B A
Một hàm thành viên tam giác được mô tả là A (a,b,c). Hình 2.6 chỉ ra cách mà 1 số mờ được biểu diễn
Hình 2.6 Số mờ tam giác
Nếu a và c tương ứng là giá trị giới hạn nhỏ nhất và lớn nhất, b là tâm của số mờ. Theo đó, hàm thành viên của nó được định nghĩa là:
Thuật toán
Ở đây, chiều dài cung trong một mạng được coi là một số mờ, cụ thể là, số mờ tam giác. Chiều dài đường đi ngắn nhất được tính toán theo phương pháp do Chuang và Kung đề xuất, như sau:
1
Tính tất cả các độ dài đường có thể Litừ i=1,2 …n, với
) ' , ' , ' ( i i i i a b c L 2 Đặt Lmin (a,b,c)L1 (a1',b1',c1') 3 đặt i=2 4 Tính ); ' , min( ); ' , min( ' a b neu ; ) ' a (a ) ' b (b ) ' a (a ) ' b (b ' a b neu ; 1 i i i i 1 i i b c c a a a b b
5 Gán Lmin (a,b,c)như đã tính trong bước 4 6 i=i+1
7 nếu i<n+1, tới bước 4
Để minh họa cho cách thức trên, hãy xét một ví dụ nhỏ về mạng lưới trong hình 2.7, nơi mà mỗi chiều dài cung được đại diện bởi số tam giác như thể hiện trong bảng dưới đây.
Hình 2.7 Ví dụ mạng lưới
Trong mạng lưới như hình 2 có ba đường đi có thể và chiều dài đường đi tương ứng như sau:
Cung(i , j ) Độ dài lij (1 ,2) (1, 3, 4) (1, 3) (2, 4, 5) (2, 4) (1, 2, 3) (2, 5) (2, 4, 6) (3, 5) (2, 5, 6) (4, 6) (2, 3, 8) (5, 6) (3, 5, 7)
Cách thức có thể được thực hiện như sau: Bước 1: P1: 1-2-4-6 → L1 = (4, 8, 15)
P2: 1-2-5-6 → L2 = (6, 12, 17) P3: 1-3-5-6 → L3 = (7, 14, 18)
Bước 2: Lmin = (a, b, c) = L1= (a1',b1',c1') = (4,8,15)
Bước 3: đặt i=2 Bước 4: tính (a,b,c) 12 ) 12 , 15 min( 4 ) 6 , 4 min( 2 . 7 ) 4 6 ( ) 8 12 ( ) 4 6 ( ) 8 12 ( c a b Bước 5: đặt Lmin=(4,7.2,12) Bước 6: đặt i=3(i=i+1) 12 ) 14 , 12 min( 4 ) 7 , 4 min( 1 . 7 ) 7 4 ( ) 14 2 . 7 ( ) 7 4 ( ) 14 2 . 7 ( c a b
Bước 7: khi i=4. Quá trình kết thúc
Lmin = (4, 7.1, 12). Bây giờ chúng ta phải quyết định con đường ngắn nhất bằng các tính toán sau.
Mục tiêu là xác định chiều dài mờ ngắn nhất Lmin và đường đi ngắn nhất cần thiết để đi qua từ nguồn tới đích, thuật toán được đề xuất như sau:
1 Tìm tất cả quãng đường có thể từ nút nguồn S tới nút đích D và tính độ dài quãng đường liên quan Li, với i= 1,2…..n.
2 Tính Lmin bằng cách sử dụng phương pháp độ dài đường mờ nhỏ nhất (bảng 1)
3 Tìm khoảng cách Euclide di với i=1,2…..n giữa tất cả đường có thể và Lmin
4 Xác định đường ngắn nhất với đường có khoảng cách Euclide nhỏ nhất
Trong việc thực hiện các thuật toán trên với mạng như hình 2.7: Hai bước đầu tiên đã được đã được được tính như mô tả trên đây.
Bước tiếp theo, mức độ tương tự S (Lmin, Li) giữa Lmin, và Li khi i = 1,2,3 được tính toán tương tự
Để tính toán độ chính xác ở mức độ tương tự, ta nên để một phần tử chung U ký hiệu là μi = (i = 1,2 ... 10), như sau:
Từ kết quả tính toán như đã mô tả trên đây, chúng ta có ba chiều dài đường dẫn như trong hình 2 là:
P1 = (4, 8, 15) P2 = (6, 12, 17)
P3= (7, 14, 18)
Và chiều dài đường đi tối thiểu là Lmin = (4, 7.13, 12).
Bây giờ ta chuyển sang bước 3 của thuật toán trong trên, tức là tìm khoảng cách Euclide giữa tất cả các chiều dài đường dẫn và Lmin. Đối với đường đi 1 với chiều dài là (4, 8, 15) và Lmin là (4, 7.13, 12), ta có khoảng cách Euclide như sau:
d (đường 1, Lmin) = √ (4-4)2
+ (8-7.13) 2 + (15-12) 2 = 3.12
Theo cách tương tự, sau khi tính toán khoảng cách Euclide của các đường đi còn lại, ta được
d (đường 2, Lmin) = 7.25 và d (đường 3, Lmin) = 9.59.
Tiếp theo, ta phải quyết định đường đi ngắn nhất bằng cách kiểm tra khoảng cách Euclide giữa Lmin và di với i = 1, 2, 3. Từ các tính toán ở trên, chúng ta có thể thấy rằng đường đi 1 có khoảng cách Euclide ít nhất, và ta chọn đường 1-2-4-6 là con đường ngắn nhất.
Chƣơng 3
PHÁT TRIỂN CHƢƠNG TRÌNH THỬ NGHIỆM
Trong chương này, học viên phát triển thuật toán tìm đường đi ngắn nhất trên cơ sở số mờ (ở cuối chương 2, phần 2.2.2.2) để minh hoạ cho những lý thuyết đã trình bày.
3.1. Môi trƣờng phát triển chƣơng trình
Phần cứng
Môi trường phát triển sử dụng máy tính có bộ vi xử lí Pentium 4 tốc độ 2.4 GHz, 2 GB RAM.
Phần mềm
Chương trình thử nghiệm được phát triển trên bộ công cụ cho Java là NetBeans IDE với phiên bản 6.9.1, với JDK 1.6.
3.2. Các chức năng của chƣơng trình
Chương trình thử nghiệm mô phỏng lại thuật toán với một đồ thị có hướng gồm 6 đỉnh. Đỉnh nguồn là 1 và đỉnh đích là 6. Chương trình sẽ tìm tất cả các đường đi có thể từ đỉnh nguồn tới đích, sau đó tính toán độ dài mờ của chúng, xác định độ dài đường đi mờ tối thiểu, tính toán khoảng cách Euclide giữa các đường đi tới đường đi mờ và sau cùng là đưa ra được đường đi ngắn nhất có khoảng cách với đường đi mờ tối thiểu là nhỏ nhất.
Việc nhập dữ liệu được cung cấp thực hiện bằng tay. Chương trình cũng cho phép sửa đổi lại dữ liệu sau khi nhập.
3.3. Một số giao diện của chƣơng trình
Hình 3.1 Giao diện chính của chương trình thử nghiệm
Hình 3.3 Giao diện chức năng tính toán
3.4. Một số kết quả thử nghiệm
Bộ thử nghiệm đầu tiên như trong ví dụ của chương 2, với một đồ thị 6 đỉnh và các giá trị được cho như trong bảng.
Hình 3.4 Ví dụ mạng lưới
Trong mạng lưới như hình 2 có ba đường đi có thể và chiều dài đường đi tương ứng như sau:
Cung (i, j) Độ dài lij (1, 2) (1, 3, 4) (1, 3) (2, 4, 5) (2, 4) (1, 2, 3) (2, 5) (2, 4, 6) (3, 5) (2, 5, 6) (4, 6) (2, 3, 8) (5, 6) (3, 5, 7)
Hình 3.5 Nhập dữ liệu cho cung (1,2)
Kết quả thu được thể hiện ở hình 3.6, giống như đã trình bày ở chương 2, với đường đi tốt nhất là 1-2-4-6, độ dài đường đi tối thiểu (độ dài tối ưu) là (4, 7.13, 12).
Hình 3.6 Kết quả thử nghiệm
Hình 3.7 là kết quả thử nghiệm một trường hợp khác khi không tồn tại đường đi từ nguồn tới đích, ở đây đồ thị chỉ có các cung (1,2), (2,3), (4,5), (5,6).
Hình 3.8 là kết quả thử nghiệm một đồ thị đầy đủ khi có tất cả các cung giữa các đỉnh trong đồ thị. Kết quả thu được có 65 đường đi từ nguồn tới đích.
Hình 3.8 Kết quả thử nghiệm với đồ thị đầy đủ
Đường đi tốt nhất trong trường hợp này đi qua tất cả các đỉnh (1-5-3-4- 2-6). Điều này minh hoạ rằng có những trường hợp đường đi tốt nhất có thể là đường đi qua nhiều đỉnh nhất.
KẾT LUẬN
Ngày nay, GIS được xem là một trong những công nghệ mới nhất, có nhiều ứng dụng nhất trong việc giải quyết các bài toán thực tế trong hầu hết các lĩnh vực kinh tế - xã hội của loài người. Bên cạnh đó, việc sử dụng GIS để phân tích không gian là một trong những hướng đi tiềm năng trong việc ứng dụng GIS để giải quyết các vấn đề thực tế. Một trong số những ứng dụng trong phân tích không gian là lập phương án vận chuyển tức tìm kiếm phương án tối ưu cho bài toán tối ưu. Lý thuyết tập mờ được xem như là phương tiện thiết kế các công cụ một cách hiệu quả để hỗ trợ các cách xử lý ra quyết định đối với các bài toán không gian. Trong luận văn này đã nghiên cứu sự hợp nhất của lý thuyêt tập mờ trong hệ thống cơ sở dữ liệu quan hệ GIS và ứng dụng thành quả nghiên cứu vào thực tiễn mà điển hình là bài toán Tìm đường đi ngắn nhất từ đỉnh nguồn tới đỉnh đích của đồ thị.