ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHIỆ THÔNG TIN CHUYÊN ĐỀ LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO BÀI THU HOẠCH ỨNG DỤNG MAPLE GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN N
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆ THÔNG TIN
CHUYÊN ĐỀ
LẬP TRÌNH SYMBOLIC CHO TRÍ TUỆ NHÂN TẠO
BÀI THU HOẠCH
ỨNG DỤNG MAPLE GIẢI BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT
HƯỚNG DẪN
PGS TS ĐỖ VĂN NHƠN
HỌC VIÊN THỰC HIỆN
LÊ CUNG TƯỞNG (CH1101152)
Tp Hồ Chí Minh, 2013
Trang 2LỜI MỞ ĐẦU
Ngày nay, Công nghệ thông tin(CNTT) đã thật sự đi vào trong cuộc sống Tất
cả lĩnh vực đều cần phải áp dụng CNTT để có thể đạt được hiệu quả cao trong công việc Toán học cũng không ngoại lệ
Ngày nay, các công cụ dành riêng cho toán học rất phổ biến như Mathematica, Matlab, Maple, và nhiều chương trình chuyên dụng cho từng bộ môn của toán học khác Những phần mềm trên giúp ích rất nhiều cho việc giảng dạy toán, học toán cũng như việc ứng dụng toán trong các ngành kỹ thuật, kinh tế, và vì thế tại các nước phát triển chúng trở thành cẩm nang của nhiều sinh viên, kỹ sư và các ngành nghiên cứu khoa học
Trong bài thu hoạch, tôi tìm hiểu về ứng dụng của Maple trong tìm đường đi ngắn nhất với thuật toán Dijkstra
Trang 3Mục lục
LỜI MỞ ĐẦU i
Mục lục ii
1.1 Giới thiệu bài toán 1
1.2 Thuật toán Dijkstra 1
1.2.1 Cấu trúc dữ liệu 1
1.2.2 Giải thuật 2
1.2.3 Thủ tục 3
1.2.4 Dữ liệu thử nghiệm 4
TÀI LIỆU THAM KHẢO 8
Trang 41.1 Giới thiệu bài toán
Trong lý thuyết đồ thị, bài toán đường đi ngắn nhất là bài toán tìm một đường đi giữa hai đỉnh trong một đồ thị sao cho tổng các trọng số của các cạnh tạo nên đường đi
đó là nhỏ nhất Định nghĩa một cách hình thức, cho trước một đồ thị G = (V, E) có trọng số (nghĩa là một tập đỉnh V, một tập cạnh E, và một hàm trong số có giá trị thực f: E → R), cho trước một đỉnh v thuộc V, tìm một đường đi P từ v tới mỗi đỉnh v' thuộc
V sao cho ∑
p ∈P
f ( p) là nhỏ nhất trong tất cả các đường nối từ v tới v' Bài toán đường đi
ngắn nhất giữa mọi cặp đỉnh là một bài toán tương tự, trong đó ta phải tìm các đường
đi ngắn nhất cho mọi cặp đỉnh v và v'.
Ví dụ: chúng ta dùng các đỉnh của đồ thị để mô hình các thành phố và các cạnh để
mô hình các đường nối giữa chúng Khi đó trọng số các cạnh có thể xem như độ dài
của các con đường (và do đó là không âm) Chúng ta cần di chuyển từ thành phố s đến thành phố t Bài toán tìm đường đi ngắn nhất sẽ giúp chỉ ra đường đi ngắn nhất chúng
ta có thể đi
Ngoài ra, trọng số của các cạnh của đồ thị còn mang tính chất tổng quát hơn khoảng
cách hình học giữa hai đỉnh đầu mút của chúng Ví dụ, với 3 đỉnh A, B, C đường đi A-B-C có thể tốn ít thời gian hoặc độ phức tạp hơn so với đường đi trực tiếp A-C.
1.2 Thuật toán Dijkstra
1.2.1 Cấu trúc dữ liệu
Cấu trúc dữ liệu của thuật toán bao gồm:
- Graph G: bao gồm tập đỉnh (V), cạnh (E) và trọng số tương ứng của mỗi
cạnh
- Đỉnh s là đỉnh xuất phát
- T là tập đỉnh
1
Trang 5- L là tập chứa trọng số nhỏ nhất đi từ đỉnh xuất phát tới các đỉnh khác.
- W là tập lưu vết các đỉnh
1.2.2 Giải thuật
Input: Đồ thị có hướng và có trọng số G và đỉnh bắt đầu s
Bước 1: kiểm tra
- Kiểm tra tính liên thông của đồ thị
- Kiểm tra tính có trọng số của đồ thị
- Kiểm tra tính có hướng của đồ thị
- Kiểm tra đỉnh s có thuộc đồ thị hay không
Bước 2: Khởi tạo
m = s // đỉnh xuất phát
T = G.V \ {s} // tập đỉnh trừ đi đỉnh xuất phát
L[m] = ∞ với 0 < m <= V.size // trọng số
W[m] = “undefined” với 0 < m <= V.size // cạnh
L[s] = 0 // gán trọng số của đỉnh thứ s bằng 0
Bước 3: trong khi T ≠ thì
S = {những điểm có thể đi đến từ m} T
if S ≠ then
foreach i thuộc S
Nếu L[i] > L[i] , L[m] + Weight[m,i] thì
L[i] := min ( L[i] , L[m] + Weight[m,i] )
2
Trang 6W[i] = m
Kết thúc if Kết thúc foreach
Tìm m tronng T sao cho L[m] là nhỏ nhất
T = T \ m
Kết thúc else
1.2.3 Thủ tục
3
Trang 7Hình 1 Thủ tục thuật toán Dijkstra
1.2.4 Dữ liệu thử nghiệm
Thử nghiệm 1:
Cho đồ thị gồm 7 đỉnh và ma trận trọng số ở hình 2 Kết quả của thuật toán thu được ở Hình 3
4
Trang 8Hình 2 Ma trận trọng số của thử nghiệm 1
Hình 3 Đồ thị thử nghiệm 1 và đồ thị kết quả của thuật toán Dijkstra
Thử nghiệm 2:
Cho đồ thị gồm 7 đỉnh và ma trận ở hình 4 Kết quả của thuật toán thu được ở hình 5
Hình 4 Ma trận trọng số của thử nghiệm 2
5
Trang 9Hình 5 Đồ thị thử nghiệm 2 và đồ thị kết quả
Thử nghiệm 3:
Cho đồ thị gồm 10 đỉnh và ma trận ở hình 6 Kết quả của thuật toán thu được ở hình 7
Hình 6 Ma trận trọng số của thử nghiệm 3
6
Trang 10Hình 7 Đồ thị thử nghiệm 3 và đồ thị kết quả
7
Trang 11TÀI LIỆU THAM KHẢO
[1] PGS.TS Đỗ Văn Nhơn, Bài giảng Lập Trình Symbolic cho Trí Tuệ Nhân Tạo [2] Peter Adam-Ken Smith-Rudolf Vyborny, Introduction to Mathematics with
Maple, 2005
[3] Nguyễn Hữu Điển, giáo trình Maple
8