CẤU TRÚC DỮ LIỆU
VÀ GIẢI THUẬT
Giới thiệu môn học
Môn học CTDL> cung cấp :
Các kiến thức cơ bản về cấu trúc dữ liệu và thuật toán;
Kĩ năng xây dựng, lựa chọn các cấu trúc dữ liệu và các
thuật toán hợp lí.
Giới thiệu về môn học
Số tín chỉ: 3 (60 tiết)
Số
tiết lý thuyết: 30
Số tiết bài tập và thực hành: 30
Hình thức kiểm tra: 2 bài
Bài
tập lớn (nhóm)
Viết (trên máy)
(Điểm điều kiện dưới 3 sinh viên không được thi học phần)
Chuyên cần:
≥80%
số tiết học (10)
≤80% số tiết học (0- không được thi học phần)
Cấu trúc dữ liệu và giải thuật
1
MỞ ĐẦU
2
ĐỆ QUY VÀ GIẢI THUẬT ĐỆ QUY
3
MẢNG VÀ DANH SÁCH
4
STACK VÀ QUEUE
5
CẤU TRÚC DỮ LIỆU KIỂU CÂY
6
ĐỒ THỊ
7
SẮP XẾP (SORTING)
8
TÌM KIẾM (SEARCHING) VÀ BẢNG BĂM
8
4
CHƯƠNG 1. MỞ ĐẦU
Chương 1. Mở đầu
A - BÀI TOÁN VÀ THUẬT TOÁN
Cấu trúc dữ liệu và giải thuật
Khái niệm bài toán
Khái niệm về giải thuật (thuật toán, thuật giải).
Mối quan hệ giữa cấu trúc dữ liệu và giải thuật.
Cấu trúc dữ liệu và các vấn đề liên quan
Khái niệm về cấu trúc dữ liệu.
Định nghĩa kiểu dữ liệu.
Các kiểu dữ liệu.
6
Chương 1. Mở đầu
B – THIẾT KẾ VÀ PHÂN TÍCH GIẢI THUẬT
Thiết kế giải thuật
Chia để trị.
Phân tích giải thuật
Phân tích tính đúng đắn của giải thuật.
Phân tích tính đơn giản.
Đánh giá thời gian thực hiện của giải thuật
Thời gian thực hiện của giải thuật.
Một số quy tắc cơ bản
7
Khái niệm bài toán
Bài toán?
Trong phạm vi Tin học
In dòng chữ ra màn hình
Giải phương trình bậc 2
Quản lý hồ sơ cán bộ
…
Dùng máy tính giải bài toán, 2 yếu tố quan tâm
INPUT
OUTPUT
8
Phát biểu bài toán
Ví dụ 1: Bài toán tìm ước chung lớn nhất?
Ví dụ 2: Bài toán tìm nghiệm của đa thức 1 biến?
Ví dụ 3: Bài toán kiểm tra tính nguyên tố?
Ví dụ 4: Bài toán quản lý hồ sơ cán bộ?
Ví dụ 5: Bài toán sắp xếp?
INPUT
INPUT
BLACK
BLACK
BOX
BOX
OUTPUT
OUTPUT
9
Khái niệm giải thuật
Giải thuật hay còn gọi là thuật toán, thuật giải.
Định nghĩa: Là tập hữu hạn có thứ tự các bước tác động trên
một đối tượng dữ liệu Input để sau một số hữu hạn lần thực
hiện sẽ cho ta kết quả Output.
10
Ví dụ về giải thuật
Bài toán: Cho 3 số nguyên a, b, c. Mô tả giải thuật tìm số lớn
nhất trong 3 số đã cho.
Phân tích:
Input: 3 số nguyên a, b, c.
Output: số lớn nhất trong 3 số.
11
Ví dụ về giải thuật
Bài toán: Cho 3 số nguyên a, b, c. Mô tả giải thuật tìm số lớn
nhất trong 3 số đã cho.
Thuật toán:
Bước 1. Gán max := a;
Bước 2. Nếu b > max thì gán max := b;
Bước 3. Nếu c > max thì gán max := c;
Tư tưởng của thuật toán là duyệt lần lượt giá trị của từng số và
giữ lại giá trị lớn nhất vào biến max.
Kết thúc thuật toán max cho số nguyên lớn nhất trong 3 số đã
cho.
12
Bước 1: Gán max=a
Bước 2: nếu max
max=b
Bước 3: nếu max
max=c
Bước 4: Output: max
Max =a ;
If (max
If (max
Printf (so lon nhat la:, max);
return
13
Ví dụ về giải thuật
Bài toán: Cho 3 số nguyên a, b, c. Mô tả giải thuật tìm số lớn
nhất trong 3 số đã cho.
Theo dõi quá trình thực hiện của thuật toán với giá trị cụ thể
của a, b, c.
a := 1;
b := 5;
c := 3;
14
Ví dụ về giải thuật
a = 1
b = 5
c = 3
Bước 1. Gán giá trị của a vào biến max
max = 1
Bước 2. Do b > max (5 > 1) nên max gán bằng b
max = 5
Bước 3. Do c < max (3 < 5) nên ko thực hiện
gán
max = 5
15
Ví dụ về giải thuật
Một vài nhận xét:
Giải thuật nhận đầu vào là 3 số a, b, c và đưa kết quả ở đầu
ra là Max.
Các bước của giải thuật được mô tả chính xác.
Giải thuật kết thúc sau 3 bước và đưa ra lời giải của bài
toán, vì vậy giải thuật là hữu hạn
Nếu đầu vào là đã xác định, kết quả tại mỗi bước của giải
thuật được xác định duy nhất.
Giải thuật luôn đưa ra giá trị của số lớn nhất trong 3 số bất
kì, như vậy giải thuật có tính tổng quát.
16
Các đặc trưng của giải thuật
Đầu vào (Input): Giải thuật nhận dữ liệu vào từ một tập nào
đó.
Đầu ra (Output): 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 (Precision): Các bước của giải thuật được mô tả
chính xác.
Hữu hạn (Finiteness): Giải thuật 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ị (Uniqueness): Các kết quả trung gian của từng bước
thực hiện giải thuật đượ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 (Generality): Giải thuật có thể áp dụng để giải
17
mọi bài toán có dạng đã cho.
i=1
Do
i=i*i
While (i==1)
i = 1;
s = 1;
While (s > 0)
s := s + i;
EndWhile
18
Biểu diễn thuật toán
Có nhiều phương pháp biểu diễn thuật toán.
Có thể biểu diễn bằng liệt kê các bước.
Có thể biểu diễn bằng sơ đồ khối.
Có thể mô tả giải thuật dùng giả mã
…
Một chương trình là sự biểu diễn của một thuật toán
trong ngôn ngữ lập trình đã chọn.
Thông thường các trình bày các thuật toán bởi các thủ
tục và hàm trong ngôn ngữ tựa Pascal.
19
Biểu diễn thuật toán bằng 3 cách?
Bài toán 1: Cho 3 số nguyên a, b, c. Mô tả giải thuật tìm số lớn
nhất trong 3 số đã cho?
Bài toán 2: Tìm ước chung lớn nhất của hai số tự nhiên?
20
Mối liên hệ giữa CTDL và Giải thuật
Giải thuật chính là phép xử lý.
Đối tượng của giải thuật chính là dữ liệu được tổ chức thành
các cấu trúc.
CTDL & GT gắn chặt với nhau. Niklaus Wirth đã tổng kết:
Cấu trúc dữ liệu + Giải thuật = Chương trình
Nếu ta thay đổi cấu trúc dữ liệu thì giải thuật cũng sẽ thay đổi
theo.
21
Mối liên hệ giữa CTDL và Giải thuật
Ví dụ: Danh bạ điện thoại
Họ và tên
Số điện thoại
22
Mối liên hệ giữa CTDL và Giải thuật
Ví dụ: Danh bạ điện thoại
Nếu danh bạ không có tổ chức gì
cả thì dẫn đến giải thuật là tìm
tuần tự từ đầu đến cuối (Cho họ
tên và tìm số điện thoại)
Họ và tên
SĐT
Nguyễn Văn D
098123456
Vũ Thị B
091557799
Trần Xuân A
090333999
Quách Thái C
093886868
23
Mối liên hệ giữa CTDL và Giải thuật
Ví dụ: Danh bạ điện thoại
Nếu danh bạ (Họ và tên) tổ chức
theo thứ tự a,b,c thì ta có thể tìm
kiếm theo giải thuật tìm kiếm nhị
phân.
Họ và tên
SĐT
Trần Xuân A
090333999
Vũ Thị B
091557799
Quách Thái C
093886868
Nguyễn Văn D
098123456
24
Mối liên hệ giữa CTDL và Giải thuật
Ví dụ: Danh bạ điện thoại
Nếu danh bạ vừa xếp thứ tự
vừa có một bảng mục lục
A
- Trang 10
B - Trang 40
C - Trang 100
Thì: Tìm trong bảng mục
lục trước.
Nếu thấy thì chỉ cần tìm
trong một vần.
Họ và tên
SĐT
Trần Xuân A
098123456
Vũ Thị A
091662288
Quách Thái A
090333999
Nguyễn Văn A
093886668
Họ và tên
SĐT
Trần Xuân B
012321432
Vũ Thị B
094325325
Quách Thái B
091987412
Nguyễn Văn B
096666666
25