1. Trang chủ
  2. » Công Nghệ Thông Tin

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

125 3,2K 23

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 125
Dung lượng 3,08 MB

Nội dung

Nội dung môn họcLý thuy ết Bài Tập học Tự 1 Các khái niệc phân tích độ phức tạp tính toán m căn bải thuật.n về phân tích độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p gi

Trang 1

PHÂN TÍCH VÀ

THIẾT KẾ GIẢI THUẬT

ANALYS AND DESIGN

ALGORITHMS

1

Trang 2

Mục tiêu môn học

 Cung c p ki n th c và k năng trong ấp kiến thức và kỹ năng trong ến thức và kỹ năng trong ức và kỹ năng trong ỹ năng trong

vi c phân tích đ ph c t p tính toán ệc phân tích độ phức tạp tính toán ộ phức tạp tính toán ức và kỹ năng trong ạp tính toán

c a gi i thu t ủa giải thuật ải thuật ật.

 Tìm hi u các chi n thu t thi t k gi i ểu các chiến thuật thiết kế giải ến thức và kỹ năng trong ật ến thức và kỹ năng trong ến thức và kỹ năng trong ải thuật.

thu t ật.

2

Trang 3

Nội dung môn học

Lý thuy ết

Bài Tập học Tự

1 Các khái niệc phân tích độ phức tạp tính toán m căn bải thuật.n về phân tích độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p giải thuật.i thuật.t 6 6 0 10

2 Phân tích độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p của giải thuật.a mộ phức tạp tính toán t số giải thuật.i thuật.t sắp thức và kỹ năng trong tự và tìm kiến thức và kỹ năng trong m 8 8 3 20

3 Phân tích độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p của giải thuật.a mộ phức tạp tính toán t số giải thuật.i thuật.t trên cấp kiến thức và kỹ năng trong u trúc dữ liệc phân tích độ phức tạp tính toán u 9 9 3 20

4 Phân tích độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p của giải thuật.a mộ phức tạp tính toán t số giải thuật.i thuật.t đồ thị 5 5 3 20

5 Các chiến thức và kỹ năng trong n lược thiến thức và kỹ năng trong t kến thức và kỹ năng trong giải thuật.i thuật.t 8 8 3 15

6 Vấp kiến thức và kỹ năng trong n đề NP-đầy đủa giải thuật 9 9 3 20

Trang 4

Đánh giá kết quả

 Điểm Kiểm tra giữa kỳ < 4  không được thi kết thúc môn  học lại

4

Trang 5

Tài liệu học tập

Rivest, Introduction to Algorithms, The MIT Press, 1997

Addison-Wesley, 1998

Algorithm Analysis in C , The Benjamin/Cummings Publishing, 1993

5

Trang 6

Nhắc nhở một số quy định

 Đi học đúng giờ

 Đeo thẻ SV

 Không đểu các chiến thuật thiết kế giải chuông điệc phân tích độ phức tạp tính toán n thoạp tính toán i reo trong giờ học

 Không nghe điệc phân tích độ phức tạp tính toán n thoạp tính toán i, nhắn tin trong giờ học

 Không nói chuyệc phân tích độ phức tạp tính toán n riêng, làm ồn khi nghe giải thuật.ng

 Mang đầy đủa giải thuật tài liệc phân tích độ phức tạp tính toán u học tật.p của giải thuật.a môn học (khi học

LT và TH): giáo trình, bài tật.p, tật.p chép bài (hoặc

slide bài giải thuật.ng), usb đểu các chiến thuật thiết kế giải lưu bài tật.p

 Phải thuật.i làm bài tật.p ở nhà

Trang 9

Nội dung

Trang 10

Thuật ngữ và khái niệm

 Cấp kiến thức và kỹ năng trong u trúc dữ liệc phân tích độ phức tạp tính toán u

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p của giải thuật.a thuật.t toán

10

Trang 11

 Mải thuật.ng (Array)

 Danh sách liên kến thức và kỹ năng trong t (Linked List)

 Ngăn xến thức và kỹ năng trong p (Stack)

 Hàng đợi (Queue)

 Cây (Tree)

 …

 (1) the logical arrangement of data elements, combined with

 (2) the set of operations we need to access the elements.

11

Trang 13

Thuật toán

định nhằm giải một bài toán nào đó.

Trang 14

Các đặc trưng của Thuật toán

 INPUT: Có các bộ dữ liệu đầu vào thuộc một tập hợp dữ liệu nào đó

 OUTPUT: Xuất dữ liệu đầu ra theo yêu cầu của bài toán

 Tính xác định: Mỗi bước của thuật toán hoàn toàn xác định, được mô tả chính xác và cho kết quả xác định

 Tính dừng: Thuật toán phải kết thúc sau hữu hạn bước.

 Tính phổ dụng: Thuật toán áp dụng được cho mọi

14

Trang 15

Mối quan hệ của CTDL và thuật toán

CTDL + Thuật toán = Chương trình

15

Trang 16

Các phương pháp biểu diễn giải thuật

ngôn ngữ tựa PASCAL;

languages) như Pascal, C/C++ vv

16

Trang 17

Các phương pháp biểu diễn giải thuật

Ví dụ: Tìm x trong dãy a1, a2, , an

Trang 19

Độ phức tạp của thuật toán

 Độ phức tạp của giải thuật là chi phí về tài nguyên của hệ thống (chủ yếu là thời gian, bộ nhớ, CPU, đường truyền) cần thiết để thực hiện giải thuật

 Phân tích giải thuật (Analyzing of Algorithm) là quá trình tìm ra những đánh giá về tài nguyên cần thiết để thực hiện giải thuật

19

Trang 20

Thời gian thực hiện thuật toán

Độ phức tạp về thời gian của giải thuật:

thuật

của input

machine) để thực hiện giải thuật

20

Trang 21

 Thời gian tối thiểu để thực hiện giải thuật với

tốt nhất(best-case)của giải thuật

chạy xấu nhất (worst-case) của giải thuật

 Thời gian trung bình để thực hiện giải thuật với mọi kích thước đầu vào n được gọi là thời gian chạy trung bình (average case) của giải thuật

21

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

Trang 23

Giải:

gán, phép so sánh và trả về của giải thuật

 Trường hợp tốt nhất: Nếu a1= x, thìT(n) = α+β+ γ

 Trường hợp xấu nhất : Nếu x {a1, a2, , an} thì ∉{a1, a2, , an} thì T(n) = (n+1)α+ nβ+ γ

23

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

Trang 24

 Lưu ý: T(n) là kỳ vọng (expected value) của

f(i)=αi +βi +γ trên không gian xác suất {1, 2, …, n}

24

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

Trang 25

Khung thức của sự phân tích

Bước 1: Đặc trưng hóa dữ liệu nhập và quyết định kiểu phân tích thích hợp Thông thường, ta tập trung vào việc

 Chứng minh rằng thời gian tính toán luôn nhỏ hơn một

“cận trên” (upper bound), hay

 Dẫn xuất ra thời gian chạy trung bình đối với một dữ liệu nhập ngẫu nhiên.

Bước 2: nhận dạng thao tác trừu tượng (abstract operation)

mà giải thuật dựa vào đó làm việc.

Thí dụ: thao tác so sánh trong giải thuật sắp thứ tự

Tổng số thao tác trừu tượng thường tùy thuộc vào một vài đại lượng

Bước 3: thực hiện phân tích toán học để tìm ra các giá trị trung bình và giá trị xấu nhất của các đại lượng quan trọng.

Trang 26

Hai trường hợp phân tích

• Thường thì không khó để tìm ra cận trên của thời gian tính toán của một giải thuật.

• Nhưng phân tích trường hợp trung bình thường đòi hỏi một sự phân tích toán học cầu kỳ, phức tạp.

• Về nguyên tắc, một giải thuật có thể được phân tích đến một mức độ chính xác rất chi li Nhưng

(estimating) mà thôi

• Tóm lại, chúng ta tìm kiếm một ước lượng thô về

Trang 27

Giải thuật có thể có thời gian tính toán tỉ lệ với

1 Nếu tác vụ chính được thực thi một vài lần

 thời gian tính toán là hằng số

2 lgN (logarithmic) log2N  lgN

Trang 28

Các ký hiệu tiệm cận

đơn giản hơn

Trang 29

hay T(n) hay T(n) O(g(n))

không vượt quá mức tăng của g(n)

 Ký hiệu O biểu diễn g(n) là

một chặn trên tiệm cận (asymptotic upper bound) của f(n)

Trang 30

Kí hiệu omega 

nhiên no và hằng số C sao cho:

n>no ta có T(n) > C.g(n)

Viết T(n) = (g(n))

hay T(n)  (g(n))

không kém mức tăng của g(n)

một chặn dưới tiệm cận (asymptotic lower bound) của f(n)

Trang 31

 Ý nghĩa : Mức tăng của T(n)

tương đương mức tăng

Trang 34

34

Trang 35

TỔNG QUÁT

Mọi đa thức và kỹ năng trong c P(n) bật.c k khi n 

tương đương với nk

Pk(n) = aknk+ + ao=  (nk)

Trang 36

Luật tổng

Trang 37

Luật tổng

Trang 38

 Lưu ý: Các tính chất trên cũng đúng cho Θ và Ω

 Bậc của thời gian chạy càng lớn thì giải thuật càng chậm (chẳng hạn, giải thuật có thời gian chạy T(n) = O(n 2 ) sẽ hiệu quả hơn giải thuật có thời gian chạy T(n) = O(n )

Trang 39

Thời gian chạy của các lệnh

Lệnh gán có dạp tính toán ng

X = <biểu các chiến thuật thiết kế giải u thức và kỹ năng trong c> X = <biểu các chiến thuật thiết kế giải u thức và kỹ năng trong c>

 Thời gian chạp tính toán y của giải thuật.a lệc phân tích độ phức tạp tính toán nh gán là thời gian thực hiệc phân tích độ phức tạp tính toán n biểu các chiến thuật thiết kế giải u thức và kỹ năng trong c

Trang 40

 

2 Lệnh lựa chọn

 Lệc phân tích độ phức tạp tính toán nh lựa chọn if-else có dạp tính toán ng

if (<điều kiệc phân tích độ phức tạp tính toán n>)

Trang 41

3 Lệnh lặp: for, while, do-while

 Giải thuật sử :

Số tối đa các lần lặp là L(n)

Thời gian kiểu các chiến thuật thiết kế giải m tra điều kiệc phân tích độ phức tạp tính toán n lặp là T0(n).

Thời gian thực hiệc phân tích độ phức tạp tính toán n lệc phân tích độ phức tạp tính toán nh lặp ở lần i (i=1,2, , L(n)) là Ti(n)

 Như vật.y thời gian chạp tính toán y của giải thuật.a lệc phân tích độ phức tạp tính toán nh lặp là:

)(

1

0 ( ) ( )

n L i

T n

T

Trang 42

– Nếu i < n, quay lại bước 2.

– Ngược lại, dừng thuật toán

Trang 43

Thí dụ 1 Cho mộ phức tạp tính toán t giải thuật.i thuật.t tìm phần tử lớn nhấp kiến thức và kỹ năng trong t

trong mộ phức tạp tính toán t mải thuật.ng 1 chiều

procedure MAX(A, n, max)

/* Set max to the maximum of A(1:n) */

Nến thức và kỹ năng trong u C(n) là độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p tính toán của giải thuật.a giải thuật.i thuật.t

3 Lệnh lặp: for, while, do-while

Trang 44

Tổng số thao tác so sánh của thủ tục MAX chính là số lần thân vòng lặp được thực thi: (f(n))n-1))

Vậy độ phức tạp tính toán của giải thuật là O(f(n))n))

Đây là độ phức tạp của cả hai trường hợp trung bình và

Trang 45

Thí dụ 2: Giải thuật kiểm tra xem có phải mọi phần tử trong

mảng 1 chiều là khác biệt nhau

Trong trường hợp xấu nhất, mảng không hề có hai phần tử nào bằng

nhau hoặc mảng có hai phần tử cuối cùng bằng nhau Lúc đó một sự

3 Lệnh lặp: for, while, do-while

1 + 2 + 3 + … + (n-2) + (n-1) = n(n-1)/2 Vậy độ phức tạp tính toán của giải thuật trong trường hợp xấu nhất là O(n 2 ).

Trang 46

nó là lệnh (3) có thời gian chạy là O(1), do đó thời gian chạy của lệnh lặp for này là O(n)

• Lệnh lặp for (1) cũng có số

lần lặp là n, thân của nó có thời gian đã đánh giá là O(n), nên thời gian của lệnh lặp for (1) là O(n 2 )

• Tương tự lệnh for (4) có thời

gian chạy là O(n)

Trang 47

Các độ phức tạp thường gặp

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p hằng số: O(1) – thời gian chạy

không phụ thuộc vào độ lớn đầu vào

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p tuyến thức và kỹ năng trong n tính: O(n) – thời gian

chạy tỉ lệ thuận với độ lớn đầu vào

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p logarit: O(logn)

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p đa thức và kỹ năng trong c: O(P(n)) , với P là đa thức và kỹ năng trong c có bật.c từ 2 trở lên

 Độ phức tạp tính toán phức và kỹ năng trong c tạp tính toán p hàm mũ: O(2n)

47

Trang 48

Bảng so sánh các độ phức tạp của thuật toán

 Mộ phức tạp tính toán t số lớp thuật.t toán

48

Trang 49

Thứ tự độ phức tạp của thuật toán

Trang 50

Nguyên tắc phân tích độ phức tạp trung bình

Để tính độ phức tạp trung bình của một giải thuật A, ta phải làm một số bước:

1 Quyết định một không gian lấy mẫu (sampling space)

để diễn tả những dữ liệu đầu vào (kích thước n) có thể

có Giả sử không gian lấy mẫu là S = { I1, I2,…, Ik}

biểu diễn mức độ chắc chắn mà dữ liệu đầu vào đó có thể xảy ra

Trang 52

algorithm

1. Khái niệm chia để trị

2. Đệ quy và hệ thức truy hồi

3. Phân tích giải thuật đệ quy

4. Chiến lược thiết kế giải thuật

5. Thiết kế giải thuật kiểu “trực tiếp”

(f(n))bruce-force))

Trang 54

Sơ đồ chung

Chia để trị là một kỹ thuật thiết kế thuật toán bao gồm:

hơn có cùng một loại vấn đề

toán ban đầu

Chia để trị thường dẫn đến giải thuật đệ quy

Trang 55

SƠ ĐỒ TỔNG QUÁT CHIA

TRỊ

TỔNG HỢP

Trang 56

bài toán kích thước n

bài toán con 1 kích thước n/2

bài toán con 2 kích thước n/2

lời giải cho

Chiến lược chia-để-trị

CHIA

TRỊ

Trang 57

Chú ý

quy

1. Cơ sở của đệ quy: Các trường hợp cơ bản (thường với kích thước nhỏ) có thể giải trực tiếp;

2. Phần đệ quy: Tổng hợp lời giải: tìm lời giải của bài toán lớn

từ các lời giải của các bài toán nhỏ

từ các lời giải của các bài toán nhỏ

Trang 58

Ví dụ đơn giản

Bài Toán : Tìm phần tử lớn nhất trong một dãy số

INPUT: Dãy không rỗng L[1 n] các số

OUTPUT: Số lớn nhất trong dãy L.

Procedure LargestNumber {Chia để tri}

 if largest1 > largest2 then largest:= largest1

 else largest:= largest2

 return largest

Trang 60

Phân tích các giai đoạn

Bài toán con cơ bản : Với n

Trang 61

Bài toán con 1

Bài toán con 2

Bài toán con 3

phân cách

Trang 62

TỔNG HỢP LỜI GIẢI

Quá trình giải bài toán con 2, 3 kết hợp với quá trình tổng hợp lời giải:

1 Khi giải Bài toán 1, lưu kết quả gồm:

Hai điểm P,Q Hai điểm P,Q gần nhau nhất

Giá trị d Giá trị dmin của khoảng cách ngắn nhất

2 Khi giải bài toán con 2 và 3: Chỉ xét các cặp điểm

có hiệu hoành độ và hiệu tung độ nhỏ hơn

có hiệu hoành độ và hiệu tung độ nhỏ hơn d dmin.

Trang 64

Kỹ thuật chung:

Lưu cặp điểm gần nhất vào hai biến

Lưu cặp điểm gần nhất vào hai biến cp1 cp1, cp2 và khoảng cách

giữa chúng vào biến

giữa chúng vào biến d d min , sau đó chỉ cần kiểm tra cặp điểm có

hiệu hoành độ nhỏ hơn

hiệu hoành độ nhỏ hơn d d min bằng thủ tục Check sau đây

Procedure Check(p1,p2:Point);

 dx=Abs(p1.x-p2.x); If dx> dmin then exit;

 dy=Abs(p1.y-p2.y); If dy> dmin then exit;

 d:=sqrt(dx*dx+dy*dy) ;

 if d < dmin then

 begin cp1:=p1; cp2:=p2; dmin:=d ;

Trang 65

điểm này theo thứ tự

tăng của tung độ,

trong các điểm này

Trang 66

 left[k] := (day_diem[i].x <= x0) ; end;

Sort_y; { sắp xếp day_chon theo trục y}Sort_y; { sắp xếp day_chon theo trục y}

 For i:=1 to k-1 do begin y0:= day_chon[i].y; j:=i+1 ;

 while j <= k do begin

Check(day_chon[i],day_chon[j]);j:=j+1;end;

Trang 67

if s-r =1 then {Bài toán con cơ bản , chỉ gồm 2 điểm}if s-r =1 then {Bài toán con cơ bản , chỉ gồm 2 điểm}

 begin Check(Day_diem[r];Day_diem[s]); exit;end;

{ Chia}

 m:= (r+s) div 2;

Find_near(r,m) ; { trị nửa trái }Find_near(r,m) ; { trị nửa trái }

Find_near(m+1,s) ; {trị nửa phải }Find_near(m+1,s) ; {trị nửa phải }

Mid_near(m);

Trang 68

Dạng khác: Giảm để trị

INPUT: Dãy không rỗng L[1 n] các số

OUTPUT: Số lớn nhấp kiến thức và kỹ năng trong t trong dãy L.

Algorithm LargestNumber(L[1 n]) {giải thuật.m đểu các chiến thuật thiết kế giải trị}

Trang 72

đệ quy thành một giải thuật

F[i]: = F[i-1] + F[i-2]

Fibonacci – Không đệ quy

Trang 73

Các phương pháp giải quyết đệ qui

 Iteration method – Phương pháp truy hồi)

 Substitution method – Phương pháp thay thến thức và kỹ năng trong

 Recursion tree method – Phương pháp cây đệc phân tích độ phức tạp tính toán qui

 Master method – Phương pháp Master

Trang 74

• Tính chất này được mô tả bằng một công thức toán học được gọi là hệ thức truy hồi (recurrence relation).

• Để dẫn xuất ra độ phức tạp của một giải thuật đệ quy,

Trang 75

Phân tích giải thuật đệ quy bằng

phương pháp lặp

Công thức 1: Một chương trình đệ quy mà lặp qua bộ dữ

liệu nhập để loại đi một phần tử Hệ thức truy hồi của nó như sau:

C N = C N-1 + N N  2

C 1 = 1

C N = C N-1 + N = C N-2 + (N – 1) + N = C N-3 + (N – 2) + (N – 1) + N

= C 1 + 2 + … + (N – 2) + (N – 1) + N = 1 + 2 + … + (N – 1) + N

Cách suy ra độ phức

tạp bằng phương

pháp lặp:

Trang 76

Công thức 2: Một chương trình đệ quy mà tách đôi bộ dữ

liệu nhập trong một bước làm việc Hệ thức truy hồi là:

Trang 77

Công thức 3 Một chương trình đệ quy mà tách đôi bộ dữ liệu

nhập trong một bước làm việc nhưng phải xem xét từng phần tử trong dữ liệu nhập Hệ thức truy hồi là

= n

Trang 78

Công thức 4 Một chương trình đệ quy mà tách đôi dữ liệu nhập thành hai nửa trong một bước làm việc Hệ thức truy hồi là

C(N) = 2C(N/2) + 1 for N  2 C(1) = 0

Phân tích giải thuật.i thuật.t đệc phân tích độ phức tạp tính toán quy bằng phương pháp lặp

Trang 81

Phương pháp thay thến thức và kỹ năng trong

1. Đoán

2. Sử dụng qui nạp tính toán p đểu các chiến thuật thiết kế giải đưa ra

kến thức và kỹ năng trong t quải thuật.

Ngày đăng: 25/07/2014, 16:20

HÌNH ẢNH LIÊN QUAN

Bảng so sánh các độ phức tạp của  thuật toán - PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT ppt
Bảng so sánh các độ phức tạp của thuật toán (Trang 48)
SƠ ĐỒ TỔNG QUÁT - PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT ppt
SƠ ĐỒ TỔNG QUÁT (Trang 55)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w