3. Hƣớng nghiên cứu của đề tài
3.3. Mô hình thuật toán
Bây giờ ta có thể mô tả các bƣớc chính của thuật toán nhánh cận giải bài toán ngƣời du lịch trong thủ tục đệ quy TSP sau đây. Thủ tục TSP xét hành trình bộ phận với Edges cạnh đã đƣợc chọn và tiến hành tìm kiếm tiếp theo. Ta sử dụng các biến:
Edges - số cạnh trong hành trình bộ phận;
A - ma trận chi phí tƣơng ứng với kích thƣớc (n-edges) X (n-edges); cost - chi phí của hành trình bộ phận;
MinCost - chi phí của hành trình tốt nhất đã tìm đƣợc.
Trong thủ tục sử dụng hàm Reduce(A, k) và thủ tục BestEdge(A, k, r, c, beta) đã mô tả ở trên.
54
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
procedure TSP(edges, cost, A); begin [5]
cost:= cost + Reduce(A, n-edges); if cost < MinCost then
if edges = n-2 then begin
<Bổ sung nốt hai cạnh còn lại>; MinCost := Cost;
<Ghi nhận hành trình tốt nhất>; end
else begin
BestEdge(A,n-edges,r,c.beta); LowerBound:= cost + beta;
NewA := <A loại bỏ dòng r cột c>
TSP(edges+1 ,cost,NewA); (* đi theo nhánh trái *)
<Khôi phục A bằng cách bổ sung lại dòng r
cột k>; ^
if LowerBound < MinCost then begin (* đi theo nhánh phải *)
A[r,c]:= ∞;
TSP(edges, cost, A); A[r,c]:=0;
end; end;
<Khôi phục ma trận A> ; (* thêm lại các hằng số rút gọn vào các dòng và cột tương ứng *)
55
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
KẾT LUẬN
Luận văn đã trình bày và hệ thống một cách tổng quát về các kĩ thuật nhánh cận, cũng nhƣ các kĩ thuật cài đặt chung của thuật toán nhánh cận.
Ứng dụng thuật toán nhánh cận vào các bài toán mang tính chất tiêu biểu cho các lớp bài toán thông dụng. Từ đó, giúp minh họa chi tiết cách áp dụng các kĩ thuật nhánh cận vào từng bài toán cụ thể, bƣớc đầu hình thành những kĩ năng cơ bản, cần thiết để có thể áp dụng thuật toán nhánh cận để giải bài toán tối ƣu.
56
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Hồ Sĩ Đàm (chủ biên), Đỗ Đức Đông, Lê Minh Hoàng, Nguyễn Thanh Hùng, Tài liệu giáo khoa ch , NXB Giáo dục, 2009.
[2] Lê Minh Hoàng, Giải thuật và lập trình, http://www.jaist.ac.jp/~hoangle/, 2006.
[3] Nguyễn Xuân Huy, Sáng tạo trong thuật toán và lập trình, NXB Thông tin và truyền thông, 2011.
[4] Nguyễn Xuân My (chủ biên), Hồ Sĩ Đàm, Trần Đỗ Hùng, Lê Sĩ Quang,
Một số vấn đề chọn lọc trong môn tin học, NXB Giáo dục, 2002.
[5] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, Toán rời rạc, NXB ĐH Quốc gia Hà Nội, 2004.
[6] Tài liệu hội thảo phát triển chuyên môn giáo viên tin học trường THPT
(tài liệu lƣu hành nội bộ), Bộ giáo dục và đào tạo, 2011. [7] Một số thông tin, tài liệu trên website http://Wikipedia.org
năm 201
Học viên