Chương trình = Thuật toán + Cấu trúc dữ liệu * Một số phương pháp diễn đạt thuật toán e Liệt kê từng bước e Sơ đồ khối e Gia ma pseudo — code ¥ Nguyén tac dién dat thuat toan: e Tinh l
Trang 1
DAI HOC QUOC GIA HA NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
HORII IKI III IK
BAO CAO CUOI KY
CHUYÊN NGÀNH: KHOA HỌC DỮ LIỆU
BO MON: TOAN ROI RAC VA THUAT TOÁN
Nguyễn Thị Hường 20007918 Nguyễn Trường Sơn 20007910
NGÀY 10 THÁNG 09 NĂM 2021
TIT rang
Trang 21.2.8 Phuecong phéip ngGU MIEN ccccccccscccecsesesesecsescsesesececscsesecesacsssesesscasseseseeessssseseeaes 13
1.3.1 Những khái niệm cơ bđn ch khi 14
1.3.2 Cấu trúc dế liệu biểu diển đô thị cà àSEtsrrrrrrrrrrerie 17 1.3.3 Mô hình và ¿ng dựng ca đồ th/ trong bài toán thực tiển - -: 19 1.4 Bài toán tìm đường đi ngắn nhất .à S2 2S HH HH hệ 20
1.4.1 Bài toán tìm đường đi trên đồ thị .ằ TS SA SH HH HH hư, 20 1.4.2 Bài toán /n đường đi ngắn nhát trên đồ thị c5 ScSx2iessikerrerrree 21
1.5 Tô màu đỗ Vhị ST ST TT TH TH HT HH Hà HH TH TH HH HH diệt 24
IÊN? 1l lnaaaaaitaaiiiiiảaaaảỶÝÝ 24
ca 1n sa 25 1.5.3 Ý zướng và tóm tắt thuát tOÁn: cc cv gi 26
1.6 Thuật toán Fleury tìm chu trình Euler trong đô th¿ liên thông có bác c¿a mọợi
1.6.1 Khái niệm và các yếu tá liên quan - c- 2S 22 E22 xESESxexskesrrrerersee 27
1.6.2.¥ tưởng và lược 2777218777, PERERERRRRRE 27 1.7 Cây nh phân LH kh KT KH kh 27 1.7.1 Khái niệm - L1 111 nhọ nen nh 27
1.7.2 Một số tính Chất L1 1111111111 TT TY TH TH HT TH TH TH Tư Hà HH 28
2lTrang
Trang 31.7.3 Thuét toán duyé¿t cây NNi PNAN cc cceccceeecsseeecesssssseeeeeesssessseeeeesseneeeeesensaes 28
1.7.4 Một số ¿ng dựng cây nh phân 2:2: St 2121121211111 Ekkrrre 29 1.8 CAy a0 trUmm tél thi@U .aáỲỪỪ T+T 29
9/010 0n .Ả 30
1.8.3 Thuớf TOÁN: - LH nen ki ng nen pH 31 1.8.4 Các hướnG ứnG „nQ: ác HH ng kg nghi 36 1.9 Những nói đưung tóm lược về mật mã học à ScS St s se 37
1.9.2 Một số thuát toán phổ biến - ¿c2 12121111 E3 E11 E1 E2 111 E1 rxcrrrrcrrưệu 38
80000580 T .4 40 2.1 Giới thiệu vấn để, bài †Ođni: cành nh TH HH TH TH HH HH ng ho 40 2.2 Cơ sở lí thuyết, phương pháp, công cụ để giải quyết bài toán: 40
2.3 LOi Gidi CHA DAI TOUT ng Ầe -5 44
31T rang
Trang 41 Tóm lược một số chủ đề đã lĩnh hội được từ môn học (về lí thuyết, thuật toán và
ứng dụng)
1.1 Một số kiến thức cơ sở về thuật toán
“Giải bài toán bằng thuật toán” là quá trình thực hiện chương trình bằng cách dùng thuật toán kết hợp cầu trúc dữ liệu
Chương trình = Thuật toán + Cấu trúc dữ liệu
* Một số phương pháp diễn đạt thuật toán
e Liệt kê từng bước
e Sơ đồ khối
e Gia ma (pseudo — code)
¥ Nguyén tac dién dat thuat toan:
e Tinh logic: Hiéu r6 tinh than, cac buéc thuat toan
e Tính có thẻ cài dat: Kha nang co thé lập trình
e Pseudo - code: Sử dụng ngôn ngữ tự nhiên tựa ngôn ngữ lập trình
v Phân tích thuật toán:
e Chứng minh tính đúng của thuật toán:
o_Chiến lược chứng minh tính đúng của thuật toán:
- Kiêm thử: Chạy thử thuật toán với các dữ liệu vào cụ thể
- Chimg minh tính đúng: Chứng minh bằng toán học
- Kết hợp kiêm thử và chứng minh tính đúng => hiệu quả hơn
4lITrang
Trang 5o Cac phuong phap chimg minh tinh dung:
- Déi voi thuat toán đệ quy: Dùng quy nap
- Déi voi thuat toan khéng dé quy: Tinh ding nam ở các vòng lặp, sử dụng bát bién vong lap
¥ Xac dinh tinh hiệu quá của thuật toán:
e_ Độ phức tạp thời gian: Số lượng các bước tính toán
se Dộ phức tạp không gian: Tài nguyên sẽ được sử dụng khi thuật toán thi hành
1.2 Một số phương pháp thiết kế thuật toán cơ bản
1.2.1 Giải thu¿ đệ quy
1.2.1.1 Các đặc trưng cơ bản
v Giải thuật đệ quy
e Nếu một bài toán T được thực hiện bằng giái thuật của một bài toán T” có dạng
giống như T
e Tính dừng:
© T phải đơn giản hơn T
o TT giải được (không cần đệ quy) trong một số trường hợp nào đó (suy biến)
* Đặc trưng của các bài toán có thẻ giái bằng đệ quy
e Các bài toán phụ thuộc tham số
e Ứng với các giá trị đặc biệt nào đó của tham số thì bài toán có giải thuật đề giái (trường hợp suy biên)
e Trong trường hợp tổng quát bài toán có thẻ quy về dạng tương tự với một bộ giá trị mới của tham số và sau hữu hạn lan sé dan tới trường hợp suy biến
5lTrang
Trang 61.2.1.2 Luoc dé thuat toan
Recursive Algorithm(p,) =
if (p, = Pp») //TH suy bién
<Thực hiện giải thuật trường hợp suy biên>;
1.2.1.3 Xác định quan hệ truy hổi rong phép đệ quy
*“ Gọi T(n) là độ phức tap của giải thuật đệ quy với kích thước bài toán n
*ˆ_c = const là độ phức tạp trong trường hợp suy biến khi n = nạ; T(nạ) = ©
* Với f(n) là hàm biến đôi tham só n, nếu giái thuật được thực hiện a lan bài toán con với tham số f(n) thì:
¥ T(n) = a.T(f(n)) + g(n) voi g(n) la độ phức tạp các thao tác ngoài lời gọi đệ quy
* Công thức truy hồi xác định độ phức tạp giải thuật đệ quy
* Phương pháp thiết kế thuật toán dựa trên 2 thao tác chính:
e Chia (divide): phân rã bài toán ban đầu thành các bài toán con có kích thước nhỏ hơn, có cùng cách giải
e Trị (conque): giái từng bài toán con (theo cách tương tự bài toán đầu - đệ qui) rồi
tổng hợp các lời giải để nhận kết quả của bài toán ban đầu
6lTrang
Trang 7Y Viéc “Phan ra”: thyc hién tr6én mién dit ligu (chia mién dé ligu thanh các miền nhỏ
hon tuong duong | bai toan con)
1.2.2.2 M6 hinh, luoc do:
Xét bai toan P trén mién dé ligu R
Goi D&C (R) là thuật giái P trên miền dữ liệu R
Nêu R có thẻ phân rã thành n miền con (R= R1UR2U URn)
Với R0 là miền đủ nhỏ để D&C(RO) có lời giải thì lược đồ giái thuật chia để trị:
1.2.2.3 Phân tích và đánh giá độ phúc tạp thuật toán :
v Xây dựng công thức truy hôi đánh giá độ phức tạp thuật toán
v Giải công thức truy hồi xác định độ phức tạp thuật toán
e_ Phép thé liên tiếp
se Sử dụng định lí chính
1.2.2.4 Bài toán
Ví dụ: Sắp xếp băng thuật toán merge sort:
*_ Bài toán: Sử dụng thuật toán chia dé trị để giải bài toán săp xếp một dãy số bằng
phuong phap merge sort
ZlTrang
Trang 8Y Y tuéng thuat toán:
e Chia máng lớn thành những mảng con nhỏ hơn bằng cách chia đôi máng lớn và
tiếp tục chia đôi các mảng con cho đến khi mảng con nhỏ nhất chỉ còn 1 phản tử
se So sánh 2 mảng con có cùng mảng cơ sở (khi chia đôi mảng lớn thành 2 mảng con
thì máng lớn đó gọi là máng cơ sở của 2 máng con đó)
e Khi so sánh chúng vừa sắp xếp vừa ghép 2 máng con đó lại thành mảng cơ sở, tiếp tục so sánh và ghép các máng con lại đến khi còn lại máng duy nhát, đó là máng
đã được Sắp xép
=P [>be [=
1.2.3.Phương pháp quay lui (Back tracking)
Theo nguyên tắc vét cạn, nhưng chỉ xét những trường hop “kha quan”
8lTrang
Trang 9* Dùng đề giải bài toán liệt kê các cấu hình:
e Mỗi cấu hình được xây dựng bằng cách xác định từng phân tử
e_ Mỗi phản tử được chọn bằng cách thử các khả năng có thể
e_ Độ dài cáu hình tùy thuộc bài toán
© Xác định trước: sinh dãy độ đài n
6 Không xác định trước: đường di
1.2.3.2 Lược đô giái thuật
Try(i) = /Sinh thành phân thứ ¡ của cấu hình
for (v thuộc tập khả năng thành phần nghiệm x,)
if ( x, chap nhận được giá trị v)
xX, = Vv;
<Ghi nhdn trang thai chap nhAan v>;
if(gặp điều kiện dừng) //i=n hodc x, thoa man dk ditng
Trang 10¥ Giai céng thirc truy hdi: T(n) = O(d”)
e Là trường hop xau nhat (vét can)
e Trong trién khai thuật toán thời gian thực tế có thẻ giám xuống
for (v thuộc tập khả năng thành phần nghiệm x;)
if ( x; chấp nhận được giá trị v)
1.2.4 Phương pháp nhánh cận
Lược đồ thuật toán như sau:
Try(i,S )= Sinh thành phân thứ ¡ của câu hình với chi phí hiện thời S
for (v thuộc tập khả năng thành phần nghiệm x;)
if( v là chấp nhận được)
T = S ‡ Chỉ phí nghiệm khi có thêm thành phần v;
if (T tốt hơn Toptimize) /Tôt hơn chỉ phí tốt nhát hiện có
e Giải tất cả các bài toán con (một lần)
© Lưu lời giải của bài toán vào một bảng
e_ Phối hợp các bài toán con đê nhận lời giải bài toán ban dau
10lT rang
Trang 11¥ Cach phat biéu khac: 1 bai toan giai bang QHD duoc phan ra thanh cac bai toan con
và bài toán lớn hơn sẽ được giải quyết thông qua các bài toán con nay (bang các phép truy hỏi)
¥ Phuong phap QHĐ thường dùng cho các bài toán tìm giá trị (hoặc giá trị tối ưu) 1.2.5.2 Cac bude gidi bai toan bang OHP
Bước 1: Nhận dạng bài toán giái bằng QHĐ
Bước 2: Xây dựng công thức truy hài
Bước 3: Xác dinh co so QHD
Bước 4: Dựng bảng phương án
Bước 5: Tìm kết quả tôi ưu
Bước 6: Truy vét liệt kê thành phần nghiệm
1.2.5.3 Đánh giá độ phúc tạp
« Độ phúc tạp thời gian:
e Thời gian tính toán, xác định giá trị các phản tử trong báng phương án, phụ thuộc
vào số chiều của bảng phương án
e Tín) = O(*) - k là số chiều của bảng phương án
e Thời gian truy vét tìm nghiệm: Độ phức tạp thuật toán quay lui
«Độ phức tạp không gian
e© Kích thước bảng phương án - thường lớn
e_ Giảm kích thước bảng phương án trong triển khai thuật toán
1.2.6 Phương pháp tham lam
1.2.6.1 Ý neong
Xây dựng lời giái của bài toán với việc chấp nhận những lựa chọn “có vẻ” tốt nhất
của từng giai đoạn
son ge
Lựa chọn tối ưu cục bộ => lời giái tối ưu toàn cục cho bài toán
11IT rang
Trang 12* Hai tính chất mang lại hiệu quả của chiến lược tham
e_ Tính chát của sự lựa chọn tham lam: Một giái pháp tối ưu toàn cục có thê đạt được bằng cách thực hiện những chọn lựa tối ưu cục bộ
e_ Tính chát cầu trúc con tôi ưu: Một giải pháp tối ưu của bài toán chưa trong nó các
giải pháp tối ưu của bài toán con
* Để đạt được những hiệu quá đó thì sự lựa chọn ở mỗi bước càn thỏa mãn:
e Khả thi: Thỏa mãn các ràng buộc của bài toán
e Tôi ưu cục bộ: Là lựa chọn tốt nhát trong các lựa chọn khá thi
e Không thẻ thay đổi: Một khi đã chọn, thì lựa chọn không thẻ thay đổi ở các bước tiếp theo
1.2.6.2 Lược đồ thuật toán
Greedy (A) = //Tìm lời giải tôi ưu trên bộ dữ liệu A
1.2.6.3 Độ phúc tap cua thudt toán
*ˆ Hai giai đoạn của thuật toán tham
e Xử lí dữ liệu: Tạo tập đối tượng A
Trang 13¥ Độ phúc tạp (max):
e Thường phụ thuộc vào giai đoạn xử lí dữ liệu
e Trong trường hợp sắp xép: O(nlogn)
e_ So sánh với thuật toán sinh cáu hình nghiệm bằng phương pháp thử sai: O(2")
1.2.7 Phương pháp trực tuyến
1.2.7.1 Tổng quan
* Dữ liệu input không được nhập một lần toàn bộ trước khi thuật toán thực hiện: Do
điều kiện về không gian nhớ hoặc tính chất dữ liệu
* Tại mỗi bước thực hiện thuật toán phái có phương án kết quả mà không biết dữ liệu tiếp theo sẽ ra sao:
e_ Dự đoán quy luật phân bó dữ liệu
e Xử lí trong trường hợp xâu nhất
1.2.7.2 Độ phúc tạp cua thuát toán
Tuyền tính theo kích thước dữ liệu vào do xử lí lần lượt, liên tiếp
1.2.8 Phương pháp ngấu nhiên
Trang 14+ Có 2 dạng của thuật toán ngẫu nhiên:
e Với bài toán tối ưu: đưa ra một lời giải tốt nhát với thời gian trung bình tốt nhát
e Với bài toán quyết định: lời giải có thê mắc sai sót nhưng với xác suất nhỏ phụ thuộc vào thời gian thực hiện
* Tính thỏa hiệp: Chấp nhận kết quả với mục tiêu hiệu quá thời gian thực hiện thuật
toán
1.2.8.2 Phân loại
v Thuật toán ngấu nhiên Monte Carlo:
e Thuật toán áp dụng đối với các bài toán quyết định
e Luôn cho ra lời giải của bài toán, nhưng kết quả có thê có sai sót
e Xác suất cho ra lời giải đúng tỉ lệ với thời gian thực hiện
* Thuật toán ngấu nhiên Las Vegas
e_ Thuật toán áp dụng đối với các bài toán tối ưu
e Lời giải nhận được là tốt nhát (chính xác)
e_ Thời gian thực hiện trung bình của thuật toán có giới hạn (tốt)
1.3 Ly thuyét dé thi
1.3.1 Những khái niệm cơ ban
Định nghĩa 1 Một graph (hay một đồ thị) là tập các đinh và các cạnh nói một số đinh
với nhau Kí hiệu G = (V, E) với V là tập đinh và E là tập cạnh
Ví dụ: Có 11 graph khác nhau với tập đinh có 4 phản tử Biêu diễn của các graph như
Trang 15Định nghĩa 2 Hai đỉnh được gọi là kè nhau nếu có 1 cạnh nói 2 đinh này
Kí hiệu cạnh nói 2 đinh A, B là (AB), nói chung (AB) khác (BA), néu ta coi 2 cạnh
này là 1 thì ta có graph vô hướng, néu coi chúng khác nhau thì ta có graph có hướng Nếu giữa hai đinh của đồ thị chỉ có 1 cạnh nối thì ta có đơn đô thị, ngược lại ta có đa
Vô hướng Có hướng Vô hướng Có hướng Don dé thi Da dé thi
Định nghĩa 3 Một graph đầy đủ với n dinh, ki hiệu là Kn, là graph ma 2 dinh bat ki
đều có cạnh nói giữa chúng, khi đó có tất cá Ê,cạnh
Định nghĩa 4 Kí hiệu d(v) hoặc deg(v) cho bậc của đinh v, là số cạnh mà v là đầu mút Một điểm gọi là chan néu nó có bậc chăn và được gọi là lẻ nếu nó có bậc lẻ Với đồ thị có hướng,
Bán bac ra (deg+(v)) — $6 cung đi ra từ đính v°
Bán bậc vào (deg-(V)) - số cung đi vào từ đỉnh Và
Ví dụ: Graph sau có d(v1) = 4 hay d(v5) = 4
Kết quá 1 Trong một graph có nhiều hơn 1 đỉnh luôn có 2 đinh có cùng bậc Kết quá 2 Trong một Graph vô hướng G tùy ý tông bậc của tất cá các đinh gấp đôi
số cạnh của Graph
15lTrang
Trang 16Kết quá 3 Trong một Graph có hướng G có số cạnh bằng m thì tổng bậc lẻ = tông bậc chan = m
Định nghĩa 5 Dường ổi trong graph là một dãy các cạnh liên tiếp (hai cạnh liên tiếp nếu chúng có chung đinh) Với đô thị đơn, nếu đường đi đi qua các đỉnh vị, Ve, ., vn theo thứ tự thì ta kí hiệu (v1, v2, ., va), nếu đường đi di qua các cạnh e, ©a, ., en theo thứ tự thì
Định nghĩa 8 Đường đi Ole là 1 đường đi qua tất cả các cạnh, mỗi cạnh đúng 1 làn
Vi du trong graph sau, đường di 1, 2, 3, 4, 5, 6, 7 là I đường đi Ole
Đường đi này có thê đi qua 1 đính nhiều lần, cần chú ý điều này để so sánh với đường
đi Hamilton ở phần sau
Dinh nghia 9 Duong di Ole được gọi là chu trình Ole nếu điểm đầu và điểm cuối
trùng nhau
16lT rang
Trang 17Định nghĩa 10 Đường đi Hamilton là đường di di qua tat cá các đính, mỗi đính đúng
1 lần Một đường đi Hamilton có điểm đầu và cuối trùng nhau được gọi là chu trình Hamiltonian
Ví dụ 1: Graph sau có đường di 1, 2, 3, 4, 5 1a 1 đường đi Hamilton.Đường di 1, 2, 3, 4,5, 6 là 1 chu trinh Hamilton
1.3.2 Cấu trúc dữ liệu biểu diền đô thị
¥ Biéu dién dé thi bang ma tran ké
Ma tran ké A = [aij]nxn Trong đó:
aij = 1 néu (i, j)E E
aij = 0 néu (i, j) EE
Quy ước aii = 0 với mọi ¡; đây là ma trận đối Xứng qua đường chéo
171T rang
Trang 18Ma trận kè - Trực quan, dễ cài đặt Không gian lưu trữ O(n®)
- Kiểm tra đinh kề O(1)
Danh sách cạnh | - Không gian lưu trữ O(m) Kiểm tra đỉnh kề phải
- Duyệt tất cả cạnh (Kruskal) duyệt toàn bộ cạnh
Danh sách kè _ | - Tiết kiệm không gian Cài đặt phức tạp
- Dễ duyệt các đinh kè đỉnh cho trước
- Dễ duyệt các cạnh
18lTrang
Trang 191.3.3 Mô hình và ¿ng dựng czø đô th trong bài toán thực tiền
+“ Ứng dụng trong khoa học máy tính:
D6 thi duoc sử dụng đề biểu diễn mạng lưới truyền thông, tô chức dữ liệu, thiết bị tính toán, luồng tính toán, v.v Ví dụ: cau trúc liên kết của một trang mạng có thê được biêu diễn bằng biểu đồ có hướng, trong đó các đỉnh đại diện cho các trang web và các cạnh có hướng đại diện cho liên két từ trang này sang trang khác Một cách tiếp cận tương tự có thê
được áp dụng đối với các vấn đè trên mạng xã hội như: facebook, tiktok
ke Listens Watches Friends with
¥ Ung dung trong sinh học:
Tương tự, lý thuyết đồ thị hữu ích trong sinh học và các nỗ lực báo tồn, trong đó đinh
có thẻ đại diện cho các khu vực có một số loài nhát định tồn tại (hoặc cư trú) và các cạnh thể hiện các con đường di cư hoặc sự di chuyên giữa các khu vực Thông tin này rất quan
trọng khi xem xét các mô hình sinh sản hoặc theo dõi sự lây lan của dịch bệnh, ký sinh
trùng hoặc những thay đổi đối với phong trào có thê ảnh hưởng đến các loài khác như thế
nào
* Ứng dụng trong công nghệ phan mem:
Toàn bộ tiền đề của Google Maps là sử dụng một graph khống lồ với các nút và cạnh
để tìm ra con đường nhanh nhát hoặc ngắn nhát đê di chuyên Biểu đồ được Google Maps
191T rang
Trang 20sử dụng sẽ bao gòm rát nhiều nút khác nhau, từ các thành phó lớn và các thành phó nhỏ hơn đến các làng mạc hoặc thậm chí là các giao lộ trên đường phó
1.4 Bài toán tim đường đi ngắn nhất
1.4.1 Bài toán tìm đường di trên đồ thị
1.4.1.1 Bài toán
Đinh xuất phát: S = 1 e V, đinh kết thúc F = 5 e V
Đường ởi tìm được là dãy S = 1-2-3-6-4-5=F
1.4.1.2 Mô t¿ đữ liệu
Đánh chỉ số các đỉnh của đồ thị từ 1 n
+ Biểu diễn đồ thị G bằng ma trận kẻ M = (m;;) cỡ n xn
mm; = 1 nêu có cạnh nói đỉnh ¡ với đỉnh j
Mi = 0 néu ngược lai
v¥ Mang: Daquaf[l n] danh dau dinh i da duoc di qua trên đường đi hay chưa?
Daqualï] = true néu dinh i đã có trên đường đi
Daqualï] = false nếu ngược lại, đỉnh i chưa có trên đường đi
Khởi tạo: Daqua[T n] = false
20lT rang
Trang 211.4.1.3 Thut toán — sve dung thudt toan quay lui
Try(i) =
for (v=l1 n) duyét qua cac dinh
if ((m[x,_,,v]=1)&(not Daqua[v])) /¥v chap nhận được
đinh v thuộc V, tìm một đường đi P từ v tới mỗi đinh v' thuộc V sao cho }) AP)
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'
Một bài toán có liên quan là bài toán người đưa hàng: Một người bán hàng trên hệ thống n thành phố Giữa các thành phố có thê có hoặc không các đường nồi, mỗi đường nối
có chỉ phí xác định từ trước Người bán hàng xuất phát từ một thành phó, đi tới tất cả các thành phố khác và mỗi thành phô đi qua một lần và quay trở lại thành phố ban đầu Xác
định một hành trình sao cho tông chi phí trên đường đi là nhỏ nhất
21lTrang
Trang 22
1.4.2.2 Phan tich bai toan
Mạng lưới giao thông giữa các thành phô như một đồ thị có trọng số G =(V,E)
e Mỗi thành phô là một nút của đồ thị (đánh số 1, ,n)
e© Mỗi đường ổi giữa các thành phó là một cạnh nói giữa các nút của đồ thị, có thể có
hướng hoặc vô hướng, trên đó có ghi trọng số là chỉ phí đường đi
e Cac cap cạnh không có đường đi trọng Số là œ
Có rất nhiều thuật toán dé giải bài toán tìm đường đi (ngắn nhất) trên đồ thị, nhưng
tiếp sau đây sẽ trình bày ba thuật toán, trong đó có hai thuật toán được đi sâu tìm hiểu trong phạm vi môn học là: Thuật toán nhánh cận và thuật toán Dijkstra Thuật toán còn lại là thuật toán tìm kiếm theo chiều rộng (BFS)
1.4.2.3.1 Thuát toán nhánh cán
1.4.2.3.1.1 Phát biểu thuát toán
v Chỉ phí tốt nhất đã tìm được (BestCost) Ban đầu BestCost = +œ
* Tại mỗi bước chọn xi: Chi phí đường di từ x; đến x;_¡ là ©
e Voi mdi kha nang v, tinh chi phi C, = C + chi phí từ x;_¡ tới v
22lTrang
Trang 23e Nếu Œ¡ xấu hơn (lớn hơn) BestCost hoặc không có khả năng nào chấp nhận được
cho x; thì lùi lại bước trước để xác định lại thành phân z;_¡
e Néu C1 tốt hơn (nhỏ hơn) BestCost thì chap nhan x; theo kha nang v
e Tiép tuc xac dinh Xitdiuers
e Dén khi gap nghigm (i=n+1 & x; =S):
o Cap nhật đường đi tốt nhát hiện tại đã tìm được
o Cap nhật giá trị BestCost mới: BestCost = C,
v Kết thúc tìm kiếm nêu BestCost = +œ => không có đường đi
v¥ Mang: Daqua[1 n] đánh dấu đính ¡ đã được đi qua trên đường đi hay chưa?
Daqua[i] = true nêu đỉnh ¡ đã có trên đường đi
Daqua[ï] = false nếu ngược lại, đỉnh ¡ chưa có trên đường đi
Khoi tao: Daqua[1 n] = false
1.4.2.3.1.3 Lược đồ thuật toán