Tải bản đầy đủ (.pdf) (35 trang)

Cấu Trúc Dữ Liễu Và Giải Thuật Chapter1 Introduction

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 (646.05 KB, 35 trang )

Môn học
CTDL & GT
1


Nội dung môn học
Những khái niệm cơ bản.

Cấu trúc danh sách, ngăn xếp, hàng đợi.
Cấu trúc cây.

Đồ thị.
Tập hợp.

Các giải thuật tìm kiếm, sắp xếp.

2


Tài liệu tham khảo
CTDL>, Đinh Mạnh Tường, Đại học
Công nghệ, ĐHQG Hà Nội.
Giải thuật và lập trình, Bài giảng chuyên
đề, Lê Minh Hoàng, Đại học Sư phạm.

CTDL>, Đỗ Xuân Lôi, Nhà xuất bản
ĐH Quốc Gia Hà Nội, 2010 (Tái bản).

3



Tài liệu tham khảo
Slide bài giảng CTDL>, GS.TS Hồ Sỹ
Đàm, ĐH Công nghệ.
Slide bài giảng CTDL>, Mai Xuân
Hùng, ĐH CNTT.

Một số tác giả khác.

4


Chương 1:
Những khái niệm cơ bản
5


III. Cấu trúc dữ liệu
Giải bài toán trên máy tính
Khái niệm mô hình dữ liệu
Cấu trúc dữ liệu
Các tiêu chuẩn của CTDL
Vai trò của CTDL
Bài toán và thuật toán
 Độ phức tạp của thuật toán

6


1. Giải bài toán trên máy tính
Bước 1: Xác định bài toán: input, output.

Bước 2: Thiết kế, mô tả thuật toán
Bước 3: Viết chương trình
 Chọn CTDL, ngôn ngữ lập trình.

Bước 4: Hiệu chỉnh
 Xây dựng các bộ dữ liệu test đặc trưng.
 Chạy thử.

Bước 5: Viết tài liệu
 Hướng dẫn sử dụng.
 Thuật toán, CTDL.

7


2. Mô hình dữ liệu
Là các trừu tượng :đồ thị, tập hợp, danh
sách, cây...
Hai khía cạnh:
 Giá trị (kiểu dữ liệu)
 Các phép toán ( operation)

Chương trình có thể truy xuất đến các
vùng lưu trữ.

8


3. Cấu trúc dữ liệu
Là các đơn vị cấu trúc (construct) của

NNLT dùng để biểu diễn các mô hình dữ
liệu.
Ví dụ: mảng, xâu, bản ghi, file...
CTDL + Thuật giải = chương trình

Các tiêu chuẩn đánh giá CTDL
 Phản ánh đúng thực tế
 Phù hợp với các thao tác xử lý
 Tiết kiệm tài nguyên hệ thống
9


4. Thuật toán/Giải thuật
Thuật toán để giải một bài toán là một dãy
hữu hạn các thao tác đươc sắp xếp theo
một trật tự xác định sao cho sau khi thực
hiện dãy thao tác đó, từ Input của bài toán
này, ta nhận được Output cần tìm.

10


4.1. Sự cần thiết của thuật toán
Tại sao sử dụng máy tính để xử lý dữ
liệu?
 Nhanh hơn.
 Nhiều hơn.
 Giải quyết những bài toán mà con người
không thể hoàn thành được.


Là m sao đạt được những mục tiêu đó?
 Nhờ vào sự tiến bộ của kỹ thuật: tăng cấu
hình máy  chi phí cao.
 Nhờ vào các thuật toán hiệu quả: thông minh
và chi phí thấp.
11


4.2. Các đặc trưng của thuật toán
 Đầu vào: Dữ liệu được cung cấp cho thuật toán.
 Đầu ra : Với một tập các dữ liệu đầu vào, giải thuật đưa
ra các dữ liệu tương ứng với lời giải của bài toán.
 Chính xác: Các bước của thuật toán được mô tả chính
xác.
 Hữu hạn: Thuật toán phải đưa được đầu ra sau một số
hữu hạn bước với mọi đầu vào.
 Đơn trị: Các kết quả trung gian của từng bước thực
hiện thuật toán được xác định một cách đơn trị và chỉ
phụ thuộc đầu vào và các kết quả của các bước trước.
 Tổng quát: Giải thuật có thể áp dụng để giải mọi bài
toán có dạng đã cho.
 Tính hiệu quả: Thời gian, không gian.
12


4.3. Mô tả thuật toán
Dạng ngôn ngữ tự nhiên
Dạng lưu đồ (sơ đồ khối)
Dạng mã giả
Ngôn ngữ lập trình


13


4.3 Biểu diễn thuật toán
Ví dụ: Tìm giá trị lớn nhất của mảng a1,
a2,..…,aN,
Input: Số nguyên dương N và mảng a1, a2, ,...,
aN.
Output: Tìm Max (giá trị lớn nhất) của mảng đã cho.
Ý tưởng:


Khởi tạo Max = a1.

• Với mỗi i, nếu ai > Max thì thay giá trị Max= ai.
14


4.3 Biểu diễn thuật toán
Biểu diễn bằng ngôn ngữ tự nhiên:
 NN tự nhiên thông qua các bước được tuần tự liệt
kê để biễu diễn thuật toán.
B1. Nhập N và dãy a1, ..., aN
B2. Đặt Max = a1, i = 2.
B3.
Đơn
giản,
Nếu
i > không

N thì cần
đếnkiến
b. 5.thức về về cách biểu
diễn (mã giả, lưu đồ,...)
B4.
4.1. Nđiểm:
ếu ai > Max thì Max = ai.
Nhược
4.2. Đặt i=i+1 rồi quay b.3.
 Dài dòng, không cấu trúc.
B5. Đưa ra Max rồi kết thúc.
Ưu điểm:

 Đôi lúc khó hiểu, không diễn đạt được thuật toán.
15


4.3 Biểu diễn thuật toán
Biểu diễn ở dạng lưu đồ
 Sử dụng hệ thống các nút, cung hình dạng khác
nhau thể hiện các chức năng khác nhau.

16


4.3 Biểu diễn thuật toán

17



4.3 Biểu diễn ở dạng mã giả
Ngôn ngữ tựa ngôn ngữ lập trình:
 Dùng cấu trúc chuẩn hóa, chẳng hạn tựa
Pascal, C.
 Dùng các ký hiệu toán học, biến, hàm.

Ưu điểm:
 Đỡ cồng kềnh hơn lưu đồ khối.

Nhược điểm:
 Không trực quan bằng lưu đồ khối.

18


4.3 Biểu diễn ở dạng mã giả
Một số quy ước
 1. Các biểu thức toán học
 2. Lệnh gán: “=” (AB hoặc A = B )
 3. So sánh: “==”, “!=”

Khai báo hàm (thuật toán)
Thuật toán <tên TT> (<tham số>)
Input: <dữ liệu vào>
Output: <dữ liệu ra>
<Các câu lệnh>
End
19



4.3 Biểu diễn ở dạng mã giả
Các cấu trúc:
 Cấu trúc chọn:
if … then … [else …]
 Vòng lặp:
while … do
do … while (…)
for … do …

 Một số câu lệnh khác:
Trả giá trị về: return [giá trị]
Lời gọi hàm: <Tên>(tham số)

20


4.3 Biểu diễn ở dạng mã giả
Amax = a0;
i =1;
while (iif (amax< ai) amax = ai;
i++;
end while;

21


4.4. Biểu diễn bằng NNLT
Dùng ngôn ngữ máy tính (C, Pascal,...) để
diễn tả thuật toán, CTDL thành câu lệnh.

Kỹ năng lập trình đòi hỏi cần học tập và
thực hành (nhiều).
Dùng phương pháp tinh chế từng bước để
chuyển hoá bài toán sang mã chương
trình cụ thể.

22


5. Ước lượng thời gian thực hiện
Thời gian chạy của một chương trình phụ
thuộc các yếu tố:
 Dữ liệu đầu vào.

 Chất lượng của mã máy được tạo ra bởi
chương trình dịch.
 Tốc độ thực thi của lệnh máy.

 Độ phức tạp về thời gian của thuật toán.

23


5.1 Độ phức tạp thuật toán
Lựa chọn thuật toán
 Dễ hiểu, dễ cài đặt và dễ ghi chép ?
 Sử dụng các tài nguyên hiệu quả?

 Tùy đặc tính của bài toán


Phân tích theo kinh nghiệm
 Thực hiện và kết luận  dễ mắc lỗi
 Kích thước dữ liệu đầu vào là quan trọng: T(n)

24


5.1 Phương pháp thực nghiệm
Cài thuật toán rồi chọn các bộ dữ liệu thử
nghiệm.
Thống kê các thông số nhận được khi chạy
các bộ dữ liệu đó.
Ưu điểm: Dễ thực hiện.
Nhược điểm:
 Chịu sự hạn chế của ngôn ngữ lập trình.
 Ảnh hưởng bởi trình độ của người lập trình.
 Chọn được các bộ dữ liệu thử đặc trưng cho
tất cả tập các dữ liệu vào của thuật toán  khó
khăn và tốn nhiều chi phí.
 Phụ thuộc vào phần cứng.
25


×