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

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 (2.02 MB, 118 trang )

CẤU TRÚC DỮ LIÊU & GIẢI THUẬT
DÀNH CHO SINH VIÊN NGHÀNH CƠNG NGHỆ THƠNG TIN
Giảng viên: Kiều Cơng Chính Số điện thoại: 0963 909 060
Confidential

1


NỘI QUY KHĨA HỌC
Bỏ điện thoại xuống
ngay!!

Đúng giờ

Khơng hút thuốc

Giơ tay phát biểu

Không dùng ĐT

Giữ trật tự
Confidential

2


Chúng ta
mong đợi điều gì
khi tham gia Mơn học này?



MỤC TIÊU KHĨA HỌC

• Hiểu về thiết kế cấu trúc dữ liệu, phân
tích và đánh giá giải thuật, thuật tốn
• Vận dụng được một số thuật toán,
đánh giá được độ phức tạp của thuật
tốn. Sử dụng một ngơn ngữ lập trình,
cài đặt giải thuật
• Có ý thức tổ chức kỷ luật, tự học tập,
nghiêm túc trong học tập, tích cực
tham gia xây dựng bài học.

Confidential

4


NỘI DUNG CHƯƠNG TRÌNH

1. Phân tích và thiết kế giải thuật
2. Giải thuật đệ quy

NỘI
DUNG

3. Mảng, danh sách liên kết, ngăn xếp, hàng đợi
4. Cấu trúc cây
5. Sắp xếp và tìm kiếm
Confidential


5


NỘI DUNG CHƯƠNG TRÌNH

1. Phân tích và thiết kế giải thuật
2. Giải thuật đệ quy

NỘI
DUNG

3. Mảng, danh sách liên kết, ngăn xếp, hàng đợi
4. Cấu trúc cây
5. Sắp xếp và tìm kiếm
Confidential

6


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT

Cấu
trúc dữ
liệu

Giải
thuật

Chươn
g trình


?
Giải thuật: Là một dãy các câu lệnh chặt chẽ và rõ ràng xác định một trình tự các thao
tác trên một số đối tượng nào đó sao cho sau một số hữu hạn bước thực hiện ta đạt được
kết quả mong muốn

Confidential

7


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
Tính chất của giải thuật:

Input/Output
Giá trị nhập vào từ
một tập nhất định
nào đó (input), tạo
ra những giá trị
xuất (output)

Hữu hạn
giải thuật phải
luôn luôn kết
thúc sau một số
hữu hạn bước

Xác định
ở mỗi bước giải
thuật phải được

xác định rõ ràng và
phải
được
thực hiện chính
xác, nhất quán

Confidential

Hiệu quả
Các thao tác trong
giải thuật phải được
thực hiện trong một
khoảng thời gian
cho phép

Phổ dụng
giải thuật phải áp
dụng được cho lớp các
bài tốn cùng loại, chứ
khơng phải chỉ áp
dụng được cho một số
trường hợp đặc biệt
nào đó

8


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
• 13 lối đi: AB, AC, AD, BA, BC, BD, DA,


• Ví dụ: Đèn giao thơng

DB, DC, EA, EB, EC, ED

• Đầo vào: Các lối đi tại ngã năm
• Đầu ra: nhóm lối đi có thể đi đồng thời
mà khơng xảy ra tai nạn giao thơng

• 13 lối điđược viết lên mặt phẳng, hai
lối đi nào nếu đi đồng thời sẽ xảy ra
đụng nhau, ta nối lại bằng một cung

Confidential

9


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT

• Phương pháp Modul hóa

• Bài tốn của ta như một modul
• Chia thành các modul con
• chia các modul đó thành các
modul nhỏ hơn nữa tới khi thu
được những modul ứng với phần
việc cơ bản mà ta đã biết cách giải
quyết

Confidential


10


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
• Phương pháp tinh chỉnh từng bước
Chươn
g trình

Y/C
Bài tốn

Chi tiết hóa
dần dần
đến ngơn
ngữ lập
Giải thuật được trình
trình bày bằng
ngơn ngữ tự
nhiên

Thay thế bởi
các câu lệnh
của ngơn ngữ
lập trình

Confidential

Cài đặt
cụ thể


11


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
• Phân tích, đánh giá độ phức tạp của giải thuật
Chương trình

Đầu vào
n

Thuật Tốn

Đầu ra

T

• Tài ngun máy tính
• Tấc độ xử lý máy tính
• Kiểu lệnh
• Ngơn ngữ, chương trình dịch
Hàm T(n): Thời gian thực hiện (T) của một giải thuật với dữ liệu vào (n)
Confidential

12


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT

• Độ phức tạp về thời gian của


của giải thuật có dạng: log2n, n, nlog2n,

giải thuật

n2, n3, 2n, n!, nn

• T1(n) = cn2 (c là hằng số)

• Hàm loại đa thức: log2n, n, nlog2n, n2, n3

• T2(n) = kn (k là hằng số)

• Hàm loại mũ: 2n, n!, nn

T1 > T2
• O(n ): độ phức tạp thuật tốn n
2

• Hàm thể hiện độ phức tạp về thời gian

2

• T(n) ≤ cn2 với n ≥ n0 (c > 0, n0 > 0)

• T(n): thời gian thực hiện của chương
trình trên mọi bộ dữ liệu vào kích thước
n (xấu nhất, tốt nhất, trung bình)

Confidential


13


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
• Quy tắc tổng
• T1(n) + T2(n) = O(max(f(n), g(n)))
• T1(n) = O(f(n)): Thời gian thực hiện của hai đoạn chương trình P1
• T2(n) = O(g(n)): Thời gian thực hiện của hai đoạn chương trình P2
• Nếu g(n) ≤ f(n) với mọi n ≥ n0 thì O(f(n) + g(n)) cũng là O(f(n))

• Ví dụ:
• O(max(n3, nlog2n) =O(n3)
• O(n4 + n2) = O(n4)

Confidential

14


PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT
• Quy tắc nhân
• T1(n) . T2(n) = O(max(f(n).g(n)))
• T1(n) = O(f(n)): Thời gian thực hiện của hai đoạn chương trình P1
• T2(n) = O(g(n)): Thời gian thực hiện của hai đoạn chương trình P2

• Ví dụ:
• O(n.n) = O(n2)

Confidential


15


NỘI DUNG CHƯƠNG TRÌNH

1. Phân tích và thiết kế giải thuật
2. Giải thuật đệ quy

NỘI
DUNG

3. Mảng, danh sách liên kết, ngăn xếp, hàng đợi
4. Cấu trúc cây
5. Sắp xếp và tìm kiếm


GIẢI THUẬT ĐỆ QUI
• Khái niệm về đệ qui: Một đối tượng được gọi là đệ qui nếu nó hoặc một phần
của nó được định nghĩa thơng qua chính nó
• Ví dụ:
• Định nghĩa hàm n giai thừa: n!
• 0! = 1
ã Nu n > 0 thỡ n! = nì(n-1)!
ã Như vậy khi n=1 ta có 1!=1×0!=1×1=1, khi n=2 ta có 2!=2×1!=2×1=2, …

Confidential

17



GIẢI THUẬT ĐỆ QUI
• Thiết kế giải thuật đệ qui và thủ tục đệ quy:

Thủ tục đệ qui
Thủ tục có thể
gọi chính nó

Đặc điểm
của thủ tục
đệ qui

gọi đệ qui thì
kích thước bài
toán phải nhỏ
hơn

Đệ qui trực tiếp

Nếu một thủ tục
chứa lời gọi đến
chính nó

Có một trường
hợp đặc biệt –
trường hợp suy
biến
Confidential

Đệ qui gián tiếp


Nếu một thủ tục
chứa lời gọi đến
một thủ tục khác,
mà thủ tục này
lại gọi đến thủ
tục ban đầu
18


GIẢI THUẬT ĐỆ QUI

• Hàm n!

• Giải thuật đệ qui
• int giaithua(int n)
{
if (n = = 0) return 1;
else return n × giaithua(n-1);
}

Confidential

19


GIẢI THUẬT ĐỆ QUI

• Dãy số Fibonacci


• Giải thuật đệ quy
Int Fibonacci(int n)
{
if (n = = 0 || n = = 1) return 1;
else return Fibonacci(n-1) + Fibonacci(n-2);
}

Confidential

20



×