Tải bản đầy đủ (.ppt) (88 trang)

Bài Giảng Cấu Trúc Dữ Liệu Và Giải Thuật

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 (920.75 KB, 88 trang )

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 maxmax=b
Bước 3: nếu maxmax=c
Bước 4: Output: max

Max =a ;

If (maxIf (maxPrintf (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


×