Bài giảng cấu trúc dữ liệu và giải thuật giới thiệu TS đào nam anh - Pdf 45

DATA STRUCTURE AND ALGORITHM
1. INTRODUCTION
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
1. GIỚI THIỆU
Dr. Dao Nam Anh

Data Structure and Algorithm

1


Outline – Nội dung








Giải thuật
Dữ liệu
Quan hệ Dữ liệu – Giải thuật
Đánh giá độ phức tạp của giải thuật
Đánh giá độ phức tạp dữ liệu
Ký hiệu độ phức tạp

Data Structure and Algorithm

2


Algorithm

Kết quả phụ
thuộc dữ liệu
đầu vào

Simonas Šaltenis slide
Data Structure and Algorithm

4


Algorithm – Giải thuật
Wiki:



Thuật toán, còn gọi là giải thuật, là một tập hợp hữu
hạn của các chỉ thị hay phương cách được định
nghĩa rõ ràng cho việc hoàn tất một số sự việc từ một
trạng thái ban đầu cho trước; khi các chỉ thị này được
áp dụng triệt để thì sẽ dẫn đến kết quả sau cùng như
đã dự đoán.



Thuật toán là một bộ các qui tắc hay qui trình cụ thể
nhằm giải quyết một vấn đề trong một số bước hữu
hạn, hoặc nhằm cung cấp một kết quả từ một tập hợp
của các dữ kiện đưa vào.

trong tập hợp các số thực có thể là một bộ các bước sau
đây:
Nếu a = 0
b = c thì P(x) có nghiệm bất kì
b ≠ c thì P(c) vô nghiệm
Nếu a ≠ 0
P(x) có duy nhất một
nghiệm x = (c - b)/a
Data Structure and Algorithm

7


Algorithm – Giải thuật
Mục đích thiết kế Giải thuật

Mục đích triển khai

Chạy được cả khi
đầu vào có lỗi

Đúng

Thích ứng

Hiệu quả

Tái sử dụng

Simonas Šaltenis slide

9


Algorithm – Giải thuật
Ví dụ: Sắp xếp
Kết quả

Đầu vào

Dãy số theo thứ tự lớn dần

Dãy số nguyên

a1, a2, a3,….,an
2

5

4

10

7

Tính đúng đắn:
• b1 < b2 < b3 < …. < bn

Sort

b1,b2,b3,….,bn

6

8

9

1

7

2
j

5 1
n

i
Chiến lược
• Bắt đầu từ phần bên đã xếp bên trái
trống”
• Chèn vào bên phải phần đã xếp
• Thực hiện đến khi đúng thứ tự

for j=2 to length(A)
do key=A[j]
“chèn A[j] vào phần đã
sắp xếp A[1..j-1]”
i=j-1
while i>0 and A[i]>key
do A[i+1]=A[i]

n

i
Chiến lược
• Bắt đầu từ phần bên đã xếp bên trái
trống”
• Chèn vào bên phải phần đã xếp
• Thực hiện đến khi đúng thứ tự

for j=2 to length(A)
do key=A[j]
“chèn A[j] vào phần đã
sắp xếp A[1..j-1]”
i=j-1
while i>0 and A[i]>key
do A[i+1]=A[i]
i-A[i+1]:=key

Data Structure and Algorithm

12


Algorithm – Giải thuật
Insertion Sort

A

3


while i>0 and A[i]>key
do A[i+1]=A[i]
i-A[i+1]:=key

Data Structure and Algorithm

13


Algorithm – Giải thuật
Insertion Sort

A

3

4

6

8

7

1

9

2
j

3

4

6

8

7

1

9

2
j

5 1
n

i
Chiến lược
• Bắt đầu từ phần bên đã xếp bên trái
trống”
• Chèn vào bên phải phần đã xếp
• Thực hiện đến khi đúng thứ tự

for j=2 to length(A)
do key=A[j]
“chèn A[j] vào phần đã

2
j

5 1
n

i
Chiến lược
• Bắt đầu từ phần bên đã xếp bên trái
trống”
• Chèn vào bên phải phần đã xếp
• Thực hiện đến khi đúng thứ tự

for j=2 to length(A)
do key=A[j]
“chèn A[j] vào phần đã
sắp xếp A[1..j-1]”
i=j-1
while i>0 and A[i]>key
do A[i+1]=A[i]
i-A[i+1]:=key

Data Structure and Algorithm

16


Algorithm – Giải thuật
Insertion Sort


do key=A[j]
“chèn A[j] vào phần đã
sắp xếp A[1..j-1]”
i=j-1
while i>0 and A[i]>key
do A[i+1]=A[i]
i-A[i+1]:=key

Data Structure and Algorithm

17


Algorithm – Giải thuật
Insertion Sort

A

3

4

6

7

8

1


Insertion Sort

A

3

4

6

7

8

9

2

5 1

3

4

6

7

8


8

2

9

5 1

3

4

6

7

8

2

9

5 1

3

4

6



Cấu trúc dữ liệu



Khi giải một bài toán, ta cần phải định nghĩa tập
hợp dữ liệu để biểu diễn tình trạng cụ thể. Việc
lựa chọn này tuỳ thuộc vào vấn đề cần giải quyết
và những thao tác sẽ tiến hành trên dữ liệu vào.



Có những thuật toán chỉ thích ứng với một cách
tổ chức dữ liệu nhất định, đối với những cách tổ
chức dữ liệu khác thì sẽ kém hiệu quả hoặc không
thể thực hiện được. Chính vì vậy nên bước xây
dựng cấu trúc dữ liệu không thể tách rời bước tìm
kiếm thuật toán giải quyết vấn đề.
Data Structure and Algorithm

20


Các tiêu chuẩn khi lựa chọn cấu trúc dữ liệu



Cấu trúc dữ liệu trước hết phải biểu diễn được
đầy đủ các thông tin nhập và xuất của bài toán


Việc tổ chức dữ liệu như thế nào có ảnh hưởng rất
lớn đến cách thức xử lý dữ liệu đó cũng như tốc
độ thực thi và sự chiếm dụng bộ nhớ của chương
trình.

Data Structure and Algorithm

22


Cấu trúc dữ liệu



Việc đặc tả bằng các cấu trúc tổng quát (generic
structures) và các kiểu dữ liệu trừu tượng
(abstract data types) còn cho phép người lập trình
có thể dễ dàng hình dung ra các công việc cụ thể
và giảm bớt công sức trong việc chỉnh sửa, nâng
cấp và sử dụng lại các thiết kế đã có.

Data Structure and Algorithm

23


Kiểu dữ liệu cơ bản




Structure
•Structure
(struct)

•Queue

State
Structure

•Stack

Nor Bahiah Hj Ahmad, Software Engineering Department, FSKSM, UTM
Data Structure and Algorithm

25



Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status