BÀI TOÁN ĐỊNH TUYẾN
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel (84-511) 736 949, Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn BÁO CÁO TIỂU LUẬN MÔN HỌC HỆ HỖ TRỢ RA QUYẾT ĐỊNH NGÀNH KHOA HỌC MÁY TÍNH ĐỀ TÀI : BÀI TOÁN ĐỊNH TUYẾN (Chú ý không làm thay đổi định dạng trang in) GVHD : TS Nguyễn Văn Hiệu Học viên : Trần Tấn Phước Lớp : K28-KHMT Đà Nẵng, 05/2015 Bài Toán Đinh Tuyến MỤC LỤC MỤC LỤC I TỔNG QUAN: II BÀI TOÁN ĐỊNH TUYẾN : Phát biểu toán .3 Bài toán đường ngắn 3 Bài toán đường có trọng số bé 4 Thuật toán Dijkstra tìm đường ngắn 5 Đường đồ thị phi chu trình .8 Đường ngắn tất cặp đỉnh .9 KẾT LUẬN 12 TÀI LIỆU THAM KHẢO .13 Trần Tấn Phước Trang Bài Toán Đinh Tuyến I TỔNG QUAN: Trên giới có nhiều nghiên cứu phương pháp định tuyến, với mục đích chủ yếu tìm phương pháp định tuyến thích hợp để áp dụng vào thực tế mạng lưới Trong thời gian gần đây, xu hướng định tuyến theo “giá” mạng trở thành chủ đề nghiên cứu quan trọng Thông thường, lợi ích mang lại mạng tối đa việc tối ưu hóa hàm mục tiêu Tùy thuộc vào cấu trúc đường truyền mạng mà hàm mục tiêu ràng buộc theo khác II BÀI TOÁN ĐỊNH TUYẾN : Phát biểu toán iả s x t đồ thị có hướng =(V,E) chia thành dạng chính: - Tìm đường ngắn từ nút nguồn đến nút đích - Tìm đường ngắn từ nút nguồn đến tất nút - Tìm đường ngắn hai nút đích Bài toán đường ngắn Bài toán: Cho đồ thị = (V, E) hai đỉnh a, b Tìm đường ngắn (nếu có) từ đỉnh a đến đỉnh b đồ thị Trần Tấn Phước Trang Bài Toán Đinh Tuyến Ý nghĩa thực tế: Bài toán giúp chọn hành trình tiết kiệm (quãng đường, thời gian, chi phí ) giao thông, lập lịch thi công công trình cách tối ưu, x lý truyền tin Thuật toán duyệt đồ thị theo chiều rộng cho ta lời giải toán Song ta có thêm thuật toán sau Thuật toán: Lần lượt gán nhãn cho đỉnh đồ thị, đỉnh không lần, sau: - Đỉnh a gán nhãn số - Những đỉnh kề với đỉnh a gán số - Những đỉnh kề với đỉnh gán nhãn số 1, gán số - Tương tự, đỉnh kề với đỉnh gán sối gán nhãn số i+1 Thực gán nhãn cho đỉnh b không gán nhãn Nếu đỉnh b gán nhãn k kết luận có đường ngắn từ đỉnh a tới đỉnh b với độ dài k, ngược lại trả lời Khôi phục đường đi: Nếu bước b gán nhãn k ta ngược lại theo quy tắc sau đây: Nếu đỉnh y gán nhãn j với j≥ có đỉnh x gãn nhãn j-1 cho có cạnh từ x tới y Đi ngược lại gặp đỉnh a, ta nhận đường ngắn cần tìm Bài toán đường có trọng số bé Với toán đường tổng quát, ta x t đồ thị có trọng số định nghĩa sau Định nghĩa : Đồ thị gọi đồ thị có trọng số cạnh (i, j) đồ thị gán số nguyên không âm c(i,j).Nhãn c(i,j) cạnh (i,j) Trần Tấn Phước Trang Bài Toán Đinh Tuyến đồ thị thường biểu diễn “chi phí” thực tế để qua cạnh Ta thường ký hiệu đồ thị có trọng số ( , c) Độ dài đường đồ thị có trọng số tổng trọng số cạnh đường Bài toán: Cho đồ thị có trọng số ( , c) hai đỉnh a, b thuộc Hãy tìm đường có trọng số b (nếu có) từ đỉnh a đến đỉnh b Độ dài đường ngắn từ đỉnh a đến đỉnh b gọi khoảng cách từ đỉnh a đến đỉnh b đồ thị Nếu đường từ a đến b đặt khoảng cách ∞ Thuật toán Dijkstra tìm đường ngắn Năm 1959 E W Dijkstra đưa thuật toán hiệu quảđể giải toán đường ngắn Thuật toán thực việc gán giảm giá trị nhãn l(i) đỉnh I đồ thị sau: Thuật toán : 1.Với đỉnh xuất phát a, gán nhãn l(a) := 2.Nếu có cạnh (i,j) mà đỉnh iđã gán nhãn đỉnh j chưa gán nhãn đỉnh jđã gán nhãn l(i) + c(i,j) < l(j) giảm nhãn l(j):= l(i) + c(i,j) 3.Lặp lại bước không gán giảm nhãn Định lý : Tại đỉnh b giá trị nhãn l(b) cuối (nếu có) độ dài đường ngắn từđỉnh a đến đỉnh b Chứng minh: Sau thực xong thuật toán trên, giá trị nhãn l(b) xác định ta có đường từ đỉnh a tới đỉnh b Ta khôi phục đường từađến b sau: Xuất phát từđỉnh b, tìm cạnh có đỉnh cuối b đỉnh đầu i cho: l(i) + c(i,b) = l(b) Đỉnh i chắn phải tồn xảy đẳng thức Trần Tấn Phước Trang Bài Toán Đinh Tuyến lần gán giảm giá trị nhãn l(j) cuối Cứ tiếp tục gặp đỉnh a iả s ta nhận dãy cạnh: (a, a1) , (a1, a2) , , (ak-1, b) mà đó: l(a) + c(a,a1) = l(a1) l(a1) + c(a1,a2) = l(a2) l(ak-1) + c(ak-1, b) = l(b) Cộng vế kh giá trị chung hai vế ta có: c(a,a1) + c(a1,a2) + + c(ak-1,b) = l(b) Vậy giá trị nhãn l(b) độ dài đường nói Bất kỳ đường khác từ đỉnh a đến đỉnh b có hệ thức tương tự có dấu ≥ Vậy nhãn l(b) độ dài đường ngắn Ví dụ: X t đồ thị có trọng số sau đây: Hình Đồ thị có trọng số Độ dài đường ngắn từ đỉnh a đến đỉnh b Để đơn giản việc tính toán, ta xây dựng ma trận trọng số C : Trần Tấn Phước Trang Bài Toán Đinh Tuyến Khi đó, thuật toán Dijkstra trình bày chi tiết sau: procedure DIJKSTRA(a) ; begin for j∈ V begin L[j] := C[a, j] ; Truoc[j] := a end ; T := V \ {a} ; while T ≠∅ begin chọn đỉnh i∈ T mà L[i] = {L[j] ⏐j∈T } ; T := T \ {i} ; for j∈ T if L[j] > L[i] + C[i, j] then begin L[j] := L[i] + C[I,j] truoc[j] := i ; end ; end ; end Biến mảng Truoc dùng để khôi phục đường Trần Tấn Phước Trang Bài Toán Đinh Tuyến Đường đồ thị phi chu trình Sau đánh số đỉnh đồ thị định hướng phi chu trình, ta xây dựng thuật toán ngắn gọn để tìm khoảng cách từ đỉnh nguồn tới tất đỉnh đồ thị phi chu trình Thuật toán : Dữ liệu: Biểu diễn mảng DK_V danh sách kề đồ thịđịnh hướng phi chu trình = (V, E) với tập đỉnh V = {v1, v2, , vn} đánh số mà danh sách DK_V[vj] chứa đỉnh nhận vj đỉnh kề ma trận trọng số C đồ thị G Kết quả: Mảng D số nguyên với D[vi] chứa khoảng cách d(v1,vi) , i = 2, 3, , n Begin D[v1] := ; for j := to n D[vj] := ∞ ; for j := to n for vi∈ DK_V[vj] D[vj] := min( D[vj] , D[vi] + C[vi,vj] End Tính đắn thuật toán suy từ chi tiết sau đây: tất đỉnh trung gian đường ngắn từv1 tới vjcó số nhỏ j Mỗi cạnh (vi,vj) x t dòng lệnh lần, độ phức tạp thuật toán O(m) Ta áp dụng thuật toán để tìm đường dài từ đỉnh nguồn tới đỉnh khác đồ thị tìm đường dài đồ thịđịnh hướng phi chu trình có trọng số Ví dụ : Tìm đường dài đồ thị định hướng phi chu trình có trọng số Trần Tấn Phước Trang Bài Toán Đinh Tuyến Đường ngắn tất cặp đỉnh Bài toán: Cho đồ thị có trọng số ( , c) Hãy tìm đường ngắn tất cặp đỉnh Bài toán thường gặp việc xây dựng bảng khoảng cách thành phố, bảng giá cước vận chuyển nhà ga Bài toán giải cách s dụng thuật toán Dijkstra với đỉnh đồ thị đỉnh xuất phát Tuy nhiên, ta giải trực tiếp toán nhờ thuật toán Floyd sau: Ta s dụng ma trận D để tính độ dài đường ngắn tất cặp đỉnh 1.Bắt đầu gán D := C - ma trận trọng số 2.Thực n lần lặp D Sau bước lặp thứ k, D[i,j] chứa độ dài đường ngắn từ đỉnh i đến đỉnh j mà qua đỉnh có số không vượt k Vậy bước lặp thứ k ta thực theo công thức sau đây: D(k)[i,j] := (D(k-1)[i,j] , D(k-1)[i,k] + D(k-1)[k,j]) , với k = 1, 2, , n Ví dụ : Giả s ta có đồ giao thông sau đây: Các kết tính toán: Trần Tấn Phước Trang Bài Toán Đinh Tuyến Thuật toán Floyd Dữ liệu: Ma trận trọng số C đồ thị Kết quả: Ma trận D cho biết khoảng cách tất cặp đỉnh BEGIN for i := to n for j := to n begin D[i,j] := C[i,j] ; TRUOC[i,j] := end ; for k := to n for i := to n for j := to n if D[i,k] + D[k,j] < D[i,j] then begin D[i,j] := D[i,k] + D[k,j] ; TRUOC[i,j] := k end ; END Nếu TRUOC[i,j] = đưòng ngắn từ đỉnh i đến đỉnh j cạnh (i, j) Để in đỉnh trung gian đường ngắn từ đỉnh i đến đỉnh j ta dùng thủ tục đệ quy sau đây: procedure Duong_di( i, j ) ; begin Trần Tấn Phước Trang 10 Bài Toán Đinh Tuyến k := TRUOC[i,j] ; if k = then Exit ; Duong_di( i, k ) ; write( k ) ; Duong_di( k, j ) ; end ; Trần Tấn Phước Trang 11 Bài Toán Đinh Tuyến KẾT LUẬN Trong ứng dụng thực tế, toán định tuyến có ý nghĩa to lớn Có thể dẫn toán nhiều toán thực tế quan trọng Ví dụ, toán chọn hành trình tiết kiệm (theo tiêu chuẩn khoảng cách thời gian chi phí) mạng giao thông đường bộ, đường thủy đường không; toán chọn phương pháp tiết kiệm để đưa hệ thống động lực từ trạng thái xuất phát đến trạng trạng thái đích, toán lập lịch thi công công công đoạn công trình thi công lớn, toán lựa chọn đường truyền tin với chi phí nhỏ mạng thông tin, v.v… Hiện có nhiều phương pháp để giải toán Thế nhưng, thông thường, thuật toán xây dựng dựa sở lý thuyết đồ thị tỏ thuật toán có hiệu cao Trong phạm vi đề tài môn học « Hệ hỗ trợ định » tìm hiểu nội dung thuật toán giải toán định tuyến: - Tìm đường ngắn từ nút nguồn đến nút đích - Tìm đường ngắn từ nút nguồn đến tất nút đích - Tìm đường ngắn hai nút Một lần xin g i lời cám ơn đến TS Nguyễn Văn Hiệu truyền đạt, hướng dẫn tận tình trình học, làm tiểu luận Những nội dung học tập giúp nhiều việc định hướng nghiên cứu khoa học trình học tập công việc sau Trần Tấn Phước Trang 12 Bài Toán Đinh Tuyến TÀI LIỆU THAM KHẢO [1] “Bài giảng hệ hỗ trợ định” Đại học Bách Khoa Thành Phố Hồ Chí Minh [2] “ Quy hoạch tuyến tính “ ,Lê Đức Thắng [3] “Các phương pháp tối ưu hóa”, Bùi ThếTâm – Trần Vũ Thiệu, NXB Giao thông vận tải, 1998 [4]http://vi.wikipedia.org/ Trần Tấn Phước Trang 13 [...]... toán được xây dựng dựa trên cơ sở lý thuyết đồ thị tỏ ra là các thuật toán có hiệu quả cao nhất Trong phạm vi đề tài môn học « Hệ hỗ trợ ra quyết định » tôi đã tìm hiểu được nội dung và thuật toán giải quyết bài toán định tuyến: - Tìm đường đi ngắn nhất từ một nút nguồn đến một nút đích - Tìm đường đi ngắn nhất từ một nút nguồn đến tất cả các nút đích - Tìm đường đi ngắn nhất giữa hai nút bất kỳ Một lần.. .Bài Toán Đinh Tuyến k := TRUOC[i,j] ; if k = 0 then Exit ; Duong_di( i, k ) ; write( k ) ; Duong_di( k, j ) ; end ; Trần Tấn Phước Trang 11 Bài Toán Đinh Tuyến KẾT LUẬN Trong các ứng dụng thực tế, bài toán định tuyến có một ý nghĩa to lớn Có thể dẫn về bài toán như vậy nhiều bài toán thực tế quan trọng Ví dụ, bài toán chọn một hành trình tiết kiệm nhất (theo... đạt, hướng dẫn tận tình trong quá trình học, làm tiểu luận Những nội dung học tập được sẽ giúp chúng tôi rất nhiều trong việc định hướng nghiên cứu khoa học trong quá trình học tập cũng như công việc sau này Trần Tấn Phước Trang 12 Bài Toán Đinh Tuyến TÀI LIỆU THAM KHẢO [1] Bài giảng hệ hỗ trợ quyết định Đại học Bách Khoa Thành Phố Hồ Chí Minh [2] “ Quy hoạch tuyến tính “ ,Lê Đức Thắng [3] “Các phương... không; bài toán chọn một phương pháp tiết kiệm nhất để đưa ra một hệ thống động lực từ trạng thái xuất phát đến trạng một trạng thái đích, bài toán lập lịch thi công các công các công đoạn trong một công trình thi công lớn, bài toán lựa chọn đường truyền tin với chi phí nhỏ nhất trong mạng thông tin, v.v… Hiện nay có rất nhiều phương pháp để giải các bài toán như vậy Thế nhưng, thông thường, các thuật toán. .. Thành Phố Hồ Chí Minh [2] “ Quy hoạch tuyến tính “ ,Lê Đức Thắng [3] “Các phương pháp tối ưu hóa”, Bùi ThếTâm – Trần Vũ Thiệu, NXB Giao thông vận tải, 1998 [4]http://vi.wikipedia.org/ Trần Tấn Phước Trang 13