Tải bản đầy đủ (.pptx) (15 trang)

Slide Đề 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.02 MB, 15 trang )

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. ĐẶNG THỊ OANH

SINH VIÊN THỰC HIỆN

:

NGUYỄN HỮU THI

LỚP

:

CNTT_K12D


NỘI DUNG CHÍNH

1

2

3


KIẾN THỨC CƠ SỞ

THUẬT TOÁN HEAP SORT

ỨNG DỤNG VÀ CHƯƠNG TRÌNH


Chương 1. KIẾN THỨC CƠ SỞ

 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.



Chương 2. THUẬT TOÁN HEAP SORT

1

2

3

4

5

Ý TƯỞNG

NỘI DUNG

THỦ TỤC

LƯU ĐỒ THUẬT TOÁN

ĐỘ PHỨC TẠP CỦA THUẬT TOÁN


Ý 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.


Đảo giá trị k[1] cho k[n]

Vun phần còn lại thành đống

và xét phần còn lại

rồi lại đảo trị k[1] cho k[n-1]


NỘI DUNG THUẬT TOÁN HEAP SORT
Các tính chất:



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).


Giả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


THỦ TỤC

 Thủ tục Adjust (root, endnode) vun cây gốc root thành đố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.

 Thủ tục HeapSort mô tả lại quá trình vun đống và chọn khoá theo ý tưởng trên


ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

Độ phức tạp trung bình của HeapSort là O(nlgn).


Chương 3. ỨNG DỤNG VÀ CHƯơNG TRÌNH


 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.


BÀ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.


Phâ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.


CÀ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.


Kết quả thực hiện:


www.trungtamtinhoc.edu.vn

Thank You!
CẢM ƠN THẦY CÔ VÀ CÁC BẠN
ĐÃ CHÚ Ý LẮNG NGHE



×