BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM TP... Cài đặt.Hướng dẫn chạy chương trình:Sau khi giải nén thầy chọn mục Grap_Theory.sln và chạy bằng MS Visual StudioSau đó sẽ được như hình
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM TP HCM
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CUỐI KỲ MÔN PHÂN TÍCH THIẾTKẾ VÀ GIẢI THUẬT
CHỦ ĐỀ THUẬT TOÁN QUY HOẠCH ĐỘNG Giảng viên hướng dẫn: GV Văn Thế Thành
Sinh viên thực hiện: Lê Phan Gia MinhLớp học phần: COMP140101MSSV: 45.01.104.143
Năm 2021 – 2022
1
Trang 31 Trình bày thuật toán.
Khởi tạo lấy điểm 1 làm điểm xuất phát
C1: từ điểm 1 ta có đường đi đến điểm 2 và điểm 4 => ở điểm 2 và điểm 4 lần lượt ta có (3,1), (10,1) với 3 và 10 là khoảng cách giữa 2 điểm lần lượt là 2 và 4 so với điểm 1 Và do khoảng cách từ 1 -> 2 ngắn hơn từ 1 -> 4 nên tại đây ta chốt ở điểm 2.
C2: từ điểm 2 có 2 đường đi đến là 3 và 4 và do đã có khoảng cách từ 1 ->2 ở C1 nên ta sẽ cộng dồn vào khoảng cách ở tại điểm 3, 4 lần lượt là (4, 2), (6, 2) Khoảng cách từ 2->3 ngắn hơn nên ta sẽ chốt tại 3 với (4, 2)
C3: tương tự như C1, C2 ta có 4 (11, 4) và kết thúc Yêu cầu tìm đường đi ngắn nhất từ 1->3 nên ta có: =>lấy đường đi 1 -> 2 -> 3
2 Phân tích độ phức tạp.
3
Trang 4C2=1 public int[,] maTran = new int[100, 100];
public void dijkstra(int dinhDau, int dinhCuoi)
C10= n(n+1)/2 if (maTran[v, k] != 0 && thuocT[k] == true && (length[k] == voCuc || length[k] > length[v] + maTran[v, k]))
Trang 5Khi ta có 1 đồ thị như hình, ta có quy về 1 ma trận với số đỉnh và giá trị khoảng cách của từng cạnh như ví dụ ở Input và tìm đường đi ngắn nhất giữa các đỉnh bất kì
- Gán vô cực = -1 (vô cực khi không có đường đi giữa 2 điểm) - Khởi tạo mảng 2 chiều cho ma trận [100,100]
- Tạo hàm đọc tạo ma trận [i,j] của đồ thị
public void docMaTran( [,] _maTran, _soDinh)intint
Trang 6(maTran[v, k] != 0 && thuocT[k] == iftrue && (length[k] == voCuc || length[k] > length[v] + maTran[v, k]))
Trang 75 Cài đặt.
Hướng dẫn chạy chương trình:
Sau khi giải nén thầy chọn mục Grap_Theory.sln và chạy bằng MS Visual Studio
Sau đó sẽ được như hình:
7
Trang 8Sau khi bấm start:
Trang 9Ngoài ra còn có các tính năng “xóa đỉnh”, “xóa cạnh”, “Set/Đổi trọng số”(thay đổi
“Đỉnh cuối”, “Trọng số” sau đó double click vào “Set/Đổi trọng số” )
(Do đây là phần code em đã làm bên môn lý thuyết đồ thị ở học kỳ trước nên còn một số tính năng em chưa kịp remove em mong thầy thông cảm giúp em ạ) Kết quả các test case:
Test case1:
Test case 2:
9
Trang 10Test case 3:
Test case 4:
Test case 5:
Trang 11Test case 6:
Test case 7:
Test case 8:
11
Trang 12Test case 9:
Test case 10: