1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Phân tích và thiết kế và giải thuật - Chương 1 Các khái niệm cơ bản pps

57 325 0

Đ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

Tiêu đề Chương 1 Các Khái Niệm Cơ Bản
Trường học Trường Đại Học Công Nghệ Thông Tin - Đại Học Quốc Gia Hà Nội
Chuyên ngành Phân Tích Và Thiết Kế Và Giải Thuật
Thể loại Sách giáo trình
Thành phố Hà Nội
Định dạng
Số trang 57
Dung lượng 1,26 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Abstract Data Operations Data Structure Concrete operations... có th dùng hàng i có u tiên priority queue thicông.

Trang 1

Ch ng 1

CÁC KHÁI NI M C N B N

Môn h c: Phân tích và thi t k gi i thu t

Trang 6

Gi i m t bài toán b ng

th y ch l i c a ki u d li u tr u t ng th xét bài toánsau:

Cho m t m ng (array) g m n s A[1 n] ãy xác nh k ph n

t l n nh t trong m ng i k n Thí d u A là {5

6} à k thì k t qu là {5 6}

Không d xây d ng m t gi i thu t gi i bài toán trên

Ta th dùng ki u d li u tr u t ng a t p (multiset) v i cáctác v :

initialize(Minsert(x

deleteMin(MfindMin(M)

Trang 7

Suy ngh tr n a t p M ta có th vi t m t gi i thu t nh

sau:

(for 1 to k do

Trang 8

Qu trình dùng m t c u trúc d li u c th hi n th c hóa

m t ADT c g i là thi công ki u d li u tr u t ng Trong

s thi công này, ph n d li u tr u t ng c hi n th c hóa

b ng m t c u trúc d li u c th và ph n các tác v tr u

t ng c hi n th c hóa b ng các tác v c th h n

Abstract Data

Operations

Data Structure

Concrete operations

Trang 9

có th dùng hàng i có u tiên (priority queue thi

công Và sau ó ta có th dùng c u trúc d li u heap thi

công hàng i có u tiên

Trang 13

Chi n l c Chi tr

Nhi u gi i thu t hay có c u tr c quy: gi i m t v n

gi i thu t g i ch nh nó m t hay nhi u l n i phó v i

nh ng v n con (subproblem) có quan h ch t ch v i nhau

Nh ng gi i thu t nh v y tuân theo cách ti p c n chi tr

divide and conque :

Gi i thu t phân rã v n thành nh ng v n con, gi i

nh ng v n con này và k t h p nh ng l i gi i c a nh ng

v n con thành l i gi i cho v n nguyên th y

Chi n l c này bao g m c sau ây m i c p qu

phân chia (divid

tr (conque

k t h p (combin

Trang 14

v ch h n v t i vtrí x.

Trang 15

Kh quy

V n : Gi i thu t không quy th ng làm vi c h u hi u

và d ki m soát h n 1 gi i thu t quy

Làm cách nào chuy n i m t ch ng trình quy

thành m t ch ng trình không- -quy t ng ng

Ph ng pháp:

Cho m t th t c quy P, m i l n có m t l nh g i quy

n P, giá tr hi n hành c a các tham s và các bi n c c b

c c t vào các ng n x p (sta x lý sau

M i l n có m t s quay v quy v P, giá tr c a các

tham s và các bi n c c b s c khôi ph c l i t các ng n

x p

Trang 16

hanoi(n-1, aux, beg, end);

end end;

Thí d Th t c

hanoi là m t th

t c quy gi i bài

toán Tháp Hà N i

Trang 17

procedure hanoi(n, beg, aux, end:

integer);

/* Stacks STN, STBEG, STAUX,

STEND, and STADD correspond,

respectively, to variables N, BEG, AUX,

END and ADD */

begin writeln(beg, end); goto 5 end;

top: = top + 1; /* first recursive call */

STN[top]: = n; STBEG[top]: = beg;

STAUX [top]:= aux;

STEND [top]: = end;

STADD [top]: = 3;

/* saving return address */

n: = n-1; t:= aux; aux: = end;

/* saving return address */

n: = n-1; t:= beg; beg: = aux; aux: = t; goto 1;

5 /* translation of return point */

if top <> 0 then begin

n: = STN[top];

beg: = STBEG [top];

aux: = STAUX [top];

end: = STEND [top];

add: = STADD [top];

top: = top 1; goto add end

end;

Trang 18

Cách n gi n nh t duy t các n t trong m t cây nh

phân theo th t n i l nh m t th t c quy nh sau:

// duy t th t n i (Inorder traversal)type

↑record

…… ; l, r: linkend;

procedure traverse(t: link);

Trang 19

Th t c duy t c y ti n th t Pre orde

L nh g i quy th hai có th c chuy n thành m t l nhgoto nh s

Trang 25

tránh a nh ng cây con r ng vào stack, ta có th s a

Trang 26

If (n=m or m = 0) then return 1

else begin a:= comb(n -1, m);

Trang 27

int int int

int top, topF;

int stackN[100]; int stackM[100];

else { // 1st recursive call

top = top +1 ; stackN[top] = n;

L2: a= stackF[topF], topF = topF –1;

b = stackF[topF], topF = topF –1;

c = a + b;

L3: if (top >0) {

n = stackN[top];

m = stackM[top];

add = stackADD[top];

top = top –1;

// push the result

topF = topF + 1; stackF[top] = c;

if (add == 1) goto L1;

else if (add == 2) goto L2;

} return c;

} }

Trang 28

Phân tích ph c t p c a m t gi i thu d oán các tài

Trang 29

li u nhâp thông th ng” (typical input data).

• Tr ng h p x u nh t (worst case): th i gian tính toán mà m t gi i thu t c n i v i m t “d li u

nhâp x u nh t”

Trang 30

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 ntrên” (upper bound , hay

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 operatio

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 : 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 31

Hai tr ng h p ph n tích

gian tính toán c a m t gi i thu t.

h i m t s phân tích toán h c c u k , ph c t p.

Trang 33

NlgN

5 N2 (quadratic) khi gi i thu t là v ng l p l ng hai

6 N (cubic) khi gi i thu t là v ng l p l ng ba

7 2N m t s gi i thu t có th i gian ch y lu th a

M t vài gi i thu t khác có th có th i gian ch y

N /2, N1/2 , (lgN)2 …

Trang 34

Khái ni m “t l v i” (proportional to)

Công c toán h c làm chính xác khái ni m này là

nh ngh a: M t hàm g(N) c g i là O(f(N)) n u t n t i hai

h ng s c và N sao cho g(N) nh h n c f(N) v i m i

N > N

Trang 35

K hi u O

Ký hi u O là m t cách h u ích phát bi u c n trên v th igian tính toán mà c l p i v i c tính d li u nh p và

chi ti t hi n th c hóa

Chúng ta c g ng tìm c “c n trên” l n “c n d i” c a th igian tính toán trong phân tích tr ng h p x u nh t

Nh ng c n d i (lowe bound ) thì th ng khó xác nh

Trang 40

V y ph c t p t nh toán c a gi i thu t là O(n).

ây là ph c t p c a c hai tr ng h p trung bình và x u

nh t

Ghi chú: N u thao tác c n b n là phát bi u gán (max := A[i])thì O(n) là ph c t p trong tr ng h p x u nh t

Trang 41

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 so sánh di n ra m i khi thân vòng l ptrong c th c hi n

Trang 42

i = 1 j ch y t 2 cho n n t c n – 1 l n so sánh

i = 2 j ch y t cho n n t c n – 2 l n so sánh

Trang 45

while k ≤ m and not exit do

if P[k] ≠ T[s+k] then exit := trueelse k:= k+1;

if not exit then

print “Pattern occurs with shift s;

end

end

Trang 47

Ph n tích gi i thu t quy: các công th c truy

h i c n b n

Có m t ph ng pháp c n b n phân t ch ph c t p c acác gi i thu t quy

T nh ch t c a m t gi i thu t quy th i gian ch y i

v i b d li u nh p k ch th c N tùy thu c vào th i gian

ch y c a nh ng b d li u nh p nh h n

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, chúng

ta ph i gi i h th c truy h i này

Trang 48

.

Trang 50

= C(2 n-2 )/ 2 n-2 + 1 +1

.

= n C(2 n ) = n.2 n

CN = NlgN

CN NlgN

Cách suy ra ph c t p:

Trang 51

=C(2n-i)/ 2n -i + 1/2n – i +1 + … + 1/2n

Trang 52

M t s h th c truy h i có v gi ng nhau nh ng m c

khác nhau.

Trang 56

Vài chu i s thông d ng

Có m t vài chu i s thông d ng trong vi c phân tích

Trang 57

Vài chu i s thông d ng

Ngày đăng: 05/08/2014, 20:21

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w