THỰC TẬP CƠ SỞĐề tài: TÌM HIỂU THUẬT TOÁN SẮP XẾP HEAP SORT VÀ ỨNG DỤNG GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG GIẢNG VIÊN HƯỚNG DẪN : TS.. NỘI DUNG CHÍNHKIẾN THỨC CƠ SỞ 1 THUẬT TOÁN HEAP SORT 2 Ứ
Trang 1THỰC TẬP CƠ SỞ
Đề tài:
TÌM HIỂU THUẬT TOÁN SẮP XẾP HEAP SORT
VÀ ỨNG DỤNG GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG
GIẢNG VIÊN HƯỚNG DẪN : TS ĐẶNG THỊ OANH
SINH VIÊN THỰC HIỆN : NGUYỄN HỮU THI
LỚP : CNTT_K12D
Trang 2NỘI DUNG CHÍNH
KIẾN THỨC CƠ SỞ
1
THUẬT TOÁN HEAP SORT
2
ỨNG DỤNG VÀ CHƯƠNG TRÌNH
3
Trang 3 BÀI TOÁN SẮP XẾP
• Khái niệm bài toán sắp xếp
• Nội dung bài toán sắp xếp
BÀI TOÁN SẮP XẾP
• Khái niệm bài toán sắp xếp
• Nội dung bài toán sắp xếp
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C
• Sự phát triển của ngôn ngữ lập trình C
• Cấu trúc chương trình C
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C
• Sự phát triển của ngôn ngữ lập trình C
• Cấu trúc chương trình C
CHƯƠNG 1 KIẾN THỨC CƠ SỞ
Trang 4Ý TƯỞNG
1
2
3
5
NỘI DUNG THỦ TỤC LƯU ĐỒ THUẬT TOÁN
ĐỘ PHỨC TẠP CỦA THUẬT TOÁN CHƯƠNG 2 THUẬT TOÁN HEAP SORT
Trang 5Ý TƯỞNG THUẬT TOÁN
HeapSort là một thuật toán sắp xếp hiệu quả,nó xây dựng một cấu trúc dữ liệu quan trọng để biểu diễn hàng đợi
có độ ưu tiên: Cấu trúc dữ liệu Heap
10
7
3
1
8
2
9
9
7
3
1
5
8
5
6
Đảo giá trị k[1] cho k[n]
và xét phần còn lại
Vun phần còn lại thành đống rồi lại đảo trị k[1] cho k[n-1]
Trang 6NỘI DUNG THUẬT TOÁN HEAP SORT
Các tính chất:
Giả sử xét trường hợp sắp xếp tăng dần, khi đó heap được định nghĩa là một dãy
ai a2i
ai a2i1 {( a ai, 2i),( a ai, 2i1) là các cặp phần tử liên đới}
• Tính chất 1: Nếu a ,a ,….a là một heap thì khi cắt bỏ một số phần tử ở hai đầu của heap, dãy còn lại vẫn là một heap.
• Tính chất 2: Nếu a ,a ,….a là một heap thì phần tử a (đầu heap) luôn là phần tử lớn nhất trong heap.
• Tính chất 3: Mọi dãy a ,a ,….a dãy con aj, aj+1,…, a tạo thành một heap với j=(q div 2 +1).
Trang 7Giải thuật Heap Sort:
Giải thuật Heap Sort trải qua 2 giai đoạn.
• Giai đoạn 1: Hiệu chỉnh dãy số ban đầu thành heap.
• Giai đoạn 2: Sắp xếp dãy số dựa trên heap.
Bước 1: Ðưa phần tử lớn nhất về vị trí đúng ở cuối dãy
r = n; Hoánvị (a , a )
Bước 2: Loại bỏ phần tử lớn nhất ra khỏi heap: r = r-1;
Hiệu chỉnh phần còn lại của dãy từ a , a2 a thành một heap
Bước 3: Nếu r > 1 (heap còn phần tử ): Lặp lại Bước 2 Ngược lại: Dừng
Trang 8THỦ TỤC
đống trong điều kiện hai cây gốc 2.root và 2.root + 1 đã là đống rồi Các nút từ endnode + 1 tới n đã nằm ở vị trí đúng
và không được tính tới nữa
khoá theo ý tưởng trên
Trang 9ĐỘ PHỨC TẠP CỦA THUẬT TOÁN
Độ phức tạp trung bình của HeapSort là O(nlgn).
Trang 10 BÀI TOÁN NGƯỜI BÁN HÀNG
• Bài toán
• Phân tích bài toán
• Độ phức tạp của thuật toán
BÀI TOÁN NGƯỜI BÁN HÀNG
• Bài toán
• Phân tích bài toán
• Độ phức tạp của thuật toán
CÀI ĐẶT CHƯƠNG TRÌNH
• Công cụ lập trình
• Kết quả thực hiện
CÀI ĐẶT CHƯƠNG TRÌNH
• Công cụ lập trình
• Kết quả thực hiện
CHƯƠNG 3 ỨNG DỤNG VÀ CHƯƠNG TRÌNH
Trang 11BÀI TOÁN NGƯỜI BÁN HÀNG
Phát biểu bài toán:
Một người bán hàng xuất phát từ thành phố 1, muốn
đi qua tất cả các thành phố còn lại mỗi thành phố đúng 1 lần và cuối cùng quay lại thành phố 1 Hãy chỉ ra cho người đó hành trình với chi phí ít nhất
Trang 12Phân tích bài toán:
Đây là bài toán tìm chu trình có trọng số nhỏ nhất trong một đơn đồ thị có hướng có trọng số Thuật toán tham lam cho bài toán là chọn thành phố có chi phí nhỏ nhất tính từ thành phố hiện thời đến các thành phố chưa qua.
Trang 13CÀI ĐẶT CHƯƠNG TRÌNH
Công cụ lập trình:
Ta sử dụng phần mềm DEV C++ để viết chương trình
Trang 14Kết quả thực hiện:
Trang 15Thank You!
CẢM ƠN THẦY CÔ VÀ CÁC BẠN
ĐÃ CHÚ Ý LẮNG NGHE