1. Trang chủ
  2. » Luận Văn - Báo Cáo

các khái niệm cơ bản về phân tích giải thuật

18 356 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

Định dạng
Số trang 18
Dung lượng 588,38 KB

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

Nội dung

Nh ng không th nói r ng bài toán này không có gi i thu t hay.

Trang 1

CH NG 2 CÁC KHÁI NI M C B N V PHÂN TÍCH GI I THU T

2.1 BƠi toán vƠ th hi n (Problems and Instances)

Trong ph n trên, chúng ta đã nghiên c u m t s ví d v nhân 2

s nguyên d ng, ch ng h n nhân 981 và 1234 Tuy v y, các nguyên t c chính c a gi i thu t đó không ch cung c p nh ng cách th c nhân 2 s

đ c bi t, th c t chúng ta có m t gi i pháp t ng quát cho bài toán nhân 2

s nguyên d ng Chúng ta nói r ng (981, 1234) là m t th hi n (instance) c a bài toán nh v y Tuy nhiên, (-12, 83.7) không ph i là th

hi n c a bài toán này vì -12 không là s nguyên d ng và 83.7 không

ph i là s nguyên (D nhiên, chúng là th hi n c a m t bài toán khác,

t ng quát h n bài toán này) Bài toán hay nh t là bài toán có t p th hi n không có gi i h n Nh ng c ng có nh ng ngo i l Ch ng h n, bài toán

ch i c , có ch m t th hi n, đ c cho b i m t t p h p v trí chung nh t

đ xu t phát, ngoài ra ch có m t s h u h n các th hi n con (các b c

đi, các v trí trung gian h p l ) Nh ng không th nói r ng bài toán này không có gi i thu t hay

M t gi i thu t c n ph i làm vi c đúng v i t t c các th hi n c a mình, c n ph i ch ng minh đi u đó ch ra m t gi i thu t không đúng, chúng ta c n tìm m t th hi n mà t đó gi i thu t cho m t câu tr l i sai,

ho c không tìm đ c câu tr l i Tuy nhiên, đ ch ng minh m t gi i thu t không đúng là r t khó kh n ch ra r ng gi i thu t có th áp d ng cho t t c các th hi n, chúng ta đã xác đ nh m t mi n xác đ nh, đó là

m t t p th hi n mà chúng ta xem xét Gi i thu t nhân 2 s trong Ch ng

1 không làm vi c v i s âm và h u t , tuy nhiên không th nói gi i thu t

là không có giá tr Các th hi n c a phép nhân s âm ho c h u t không

n m trong mi n xác đ nh chúng ta đã l a ch n ban đ u

Các thi t b tính toán còn có gi i h n kích th c c a các th hi n Tuy nhiên, gi i h n này không làm h n ch gi i thu t Máy tính khác nhau có gi i h n khác nhau và th m chí nh ng ch ng trình khác nhau trên cùng m t gi i thu t trên thi t b nh nhau c ng cho k t qu khác nhau

Trang 2

2.2 Hi u qu c a các gi i thu t

Khi chúng ta có m t bài toán có m t vài gi i thu t có kh n ng thích h p, chúng ta c n ph i l a ch n m t gi i thu t t t nh t i u này

đ t ra m t câu h i là làm th nào đ ch n trong m t vài gi i thu t đó gi i thu t thích đáng h n c

N u chúng ta ch có m t ho c hai th hi n nh c a bài toán quá

đ n gi n thì không c n ph i ch n l a k càng quá trong tr ng h p này

đ n gi n là chúng ta ch n gi i thu t đ d l p trình, ho c ch n ch ng trình đã có mà không c n lo l ng v các thu c tính lý thuy t c a nó Tuy nhiên, n u chúng ta không có đ y đ các th hi n c a bài toán ho c là

m t bài toán khó thì chúng ta ph i l a ch n k càng h n

Nh ng ng i theo ch ngh a kinh nghi m th ng ch n m t gi i thu t phù h p v i k thu t l p trình và th nghi m chúng trên các th

hi n khác nhau v i s tr giúp c a máy tính Nh ng ng i theo lý thuy t

ch n gi i thu t phù h p v i xác đ nh kh i l ng có tính toán h c c a các

ng i h c c n thi t cho m i bài toán nh là m t hàm trên kích th c c a

th hi n c n thi t Ngu n h c mà ta quan tâm nh t là th i gian tính toán

và không gian l u tr Trong khuôn kh giáo trình này, chúng ta th ng xuyên so sánh các gi i thu t trên c s th i gian th c hi n nó, khi đó đ n

gi n là ta s nói nó ch y nhanh nh th nào

Kích th c c a m t th hi n th ng không là s bit c n thi t đ

bi u di n nó trong máy tính Tuy nhiên, đây t " kích th c" đ ch s

l ng các thành ph n c a m t th hi n Ví d , nói v s p x p thì kích

th c c a th hi n là s l ng ph n t đ c s p x p T ng t nh v y, khi nói v đ th thì kích th c là s l ng các nút ho c các cung (có th

là c hai) Trong các bài toán liên quan đ n s nguyên, đôi khi chúng ta coi hi u n ng c a gi i thu t nh là giá tr c a th hi n c n thi t hi n t i, (s l ng bit c n thi t đ bi u di n giá tr này d ng nh phân)

Thu n l i c a ph ng pháp lý thuy t là nó không đ c vào máy tính hi n t i đang s d ng, không ch n vào ngôn ng l p trình, th m trí không ch n vào k n ng c a ng i l p trình D a vào đó ta ti t ki m

đ c c th i gian s m t đi do l p trình vô ích m t gi i thu t không hi u

Trang 3

qu và c th i gian m t đi do máy tính s ki m tra nó Cao h n n a (quan

tr ng h n) là s nghiên c u hi u qu c a gi i thu t trên các th hi n c a kích th c ây là cái không có trong ph ng pháp kinh nghi m (th c nghi m), n i mà s th c hành luôn là ki m tra các gi i thu t ch d a trên

m t s nh các l a ch n th hi n tu ý có kích th c v a ph i C ng t

đó th ng khám phá đ c gi i thu t m i t t h n khi c hai đ c s d ng trên các th hi n l n, đúng là m t quan đi m đ c bi t quan tr ng

C ng có nh ng kh n ng phân tích gi i thu t b ng ph ng pháp lai, hi u qu c a gi i thu t, mô t d ng khuôn m u cho các ch c n ng

đ c xác đ nh theo lý thuy t và các tham s s h c cho ch ng trình và máy riêng bi t đ c xác đ nh b i kinh nghi m, th ng nh là ph ng pháp h i quy S d ng ph ng pháp này có th d đoán đ c th i gian

th c hi n đ y đ th c t trên m t th hi n quá l n mà ta dùng đ ki m tra C n tránh s suy di n (ngo i suy) duy nh t trên c s m t s l ng

nh c a các th hi n theo kinh nghi m b qua các nguyên lý c n thi t

D đoán mà không có c s lý thuy t là m t ki u làm vi c m h , vi n vông

N u chúng ta mu n đo t ng không gian l u tr c a m t gi i thu t

đ c s d ng nh là hàm c a kích th c, thì ta s d ng bít B t k lo i máy tính nào đ c s d ng, khía ni m bit l u tr là không đ i, đã xác

đ nh M t khác, trong ph n l n các tr ng h p, chúng ta mu n đo hi u

q a c a gi i thu t theo th i gian thì không th bi u di n theo giây (second) đ c vì chúng ta ch n m t y u t b t bi n, sao cho hai l n th c

hi n m t th hi n c a cùng gi i thu t s ch chênh l nh hi u qu b i m t

h ng s nhân Ví d , n u h ng s này là 5, l n th c hi n đ u tiên có th i gian là 1 giây đ gi i quy t m t th hi n có kích th c riêng bi t thì l n

th c hi n th hai (trên máy khác, trên ngôn ng l p trình khác) có th i gian không lâu h n 5 giây đ gi i quy t cùng m t th hi n Chính xác

h n, n u 2 l n th c hi n cùng m t gi i thu t c n th i gian t1(n) và t2(n) giây đ gi i quy t th hi n có kích th c n thì luôn t n t i h ng s d ng

c và d sao cho t1(n) c.t2(n) và t2(n)  d.t1(n) khi n đ l n

Y u t b t bi n có th đ c ch n làm đ n v đo hi u qu c a m t

gi i thu t b ng m t h ng s ph c h p Chúng ta nói r ng, m t gi i thu t

Trang 4

cho m t bài toán nào đó có th i gian th c hi n b c t(n), t là m t hàm, n u

nh t n t i m t h ng s d ng c và s th c hi n gi i thu t có kh n ng

gi i t t c các th hi n kích th c n là có th i gian không l n h n c.t(n) giây

S d ng giây trong đ nh ngh a này là không b bó bu c, chúng ta

ch c n chuy n h ng s thích h p nào đó thì ta g i là m t gi i thu t có

th i gian b c n, ho c đ n gi n h n là m t gi i thu t có th i gian tuy n tính (linear algorithm) M t gi i thu t có th i gian th c hi n th hi n kích

th c n không nhi u h n c.n2 giây g i là b c n2 ho c th i gian b c hai,

gi i thu t b c 2 (quadratus algorithm) T ng t , m t gi i thu t b c 3, đa

th c, lu th a (cubie, polynomial, exponential có th i gian b c n3

, nk, cn,

t ng ng)

L u ý là b c r t quan tr ng trong đánh giá hi u qu , b c n2

, n3 là

r t khác nhau n u kích th c l n

2.3 Phơn tích trung bình vƠ phơn tích t i nh t

Th i gian th c hi n ho c không gian l u tr có th bi n đ ng đáng k gi a hai th hi n khác nhau có cùng kích th c làm nh ng

đi u này, hãy xem xét hai gi i thu t s p x p c b n, gi i thu t chèn tr c

ti p (insertion) và gi i thu t ch n tr c ti p (selection)

Procedure insert (T [1 n])

for i  2 to n do x T[i] ; j  i-1 while (j>o) and (x< T [j]) do T [j+1]T[j]

T[j+1]  x Procedure select (T[1 n])

for i  1 to n-1 do

min j  i ; minx  T[i]

for j  i +1 to n do

Trang 5

if T [j] <minx then minj  j minx  T[j]

T[minj]  T[i]

T[i]  minx Hãy b t ch c thao tác c a gi i thu t trên m t vài m ng nh đ

ch c ch n r ng chúng ta đã bi t gi i thu t làm vi c nh th nào Vòng l p chính c a Insertion đã xem xét m i ph n t c a m ng t phân t th hai

đ n ph n t th n và chèn nó vào v trí thích h p gi a các ph n t đ ng

tr c nó trong m ng Gi i thu t Selection ch n ph n t nh nh t c a

b ng, đ t nó vào làm ph n t đ u tiên, r i l i ch n ph n t nh nh t, ti p theo, đ t nó làm ph n t th hai c a m ng, và c nh v y cho đ n h t

L y U và V là 2 m ng có N ph n t , m ng U đã đ c s p x p

t ng d n và m ng V đã đ c s p x p gi m d n

C hai gi i thu t có th i gian th c hi n V nhi u h n th i gian

th c hi n U Th c t là m ng V bi u di n tr ng h p v i kh n ng x u

nh t cho c hai gi i thu t, không có m ng nào v i n ph n t l i c n nhi u

th i gian x lý nh v y Gi i th t ch n tr c ti p không nh n bi t đ c

th t g c c a m t m ng dã đ c s p: Thao tác ki m tra “ if T[j] < min x

“ đ c th c hi n v i s l n nh nhau cho t t c các tr ng h p S thay

đ i trong th i gian th c hi n ch do th i gian th c hi n các phép gán trong ph n “then” c a thao tác ki m tra này có ph i th c hi n hay không Khi chúng ta l p trình gi i thu t này và ki m tra nó trên máy thì s th y

r ng th i gian c n thi t đ s p x p s ph n t là không nhi u h n 15% cho dù th t kh i đ ng là đã đ c s p x p R i chúng ta s bi t, gi i thu t Selection (T) có th i gian th c hi n b c 2, không đ m x a gì đ n

th t kh i đ u c a các ph n t

N u chúng ta so sánh th i gian th c hi n b i gi i thu t Insert(T) trên cùng hai m ng này thì s có nh ng nh n xét khác h n B i vì đi u

ki n đi u khi n c a vòng l p (while) là luôn sai t lúc b t đ u, Insert(U)

th c hi n r t nhanh ta nói r ng nó có th i gian tuy n tính V i V, gi i thu t Insert(T) có th i gian bâc hai b i vòng l p (while) đã th c hi n

Trang 6

(i-1) l n v i m i giá tr c a i S bi n đ ng v th i gian th c hi n gi a hai

th hi n là r t đáng k H n n a, s bi n đ ng còn t ng lên theo s l ng

ph n t đã đ c s p x p Khi chúng ta th c hi n gi i thu t Insert(T) đ

s p x p m t m ng 5000 ph n t đã s p t ng d n thì m t th i gian khôn ít

h n 1/5 giây, trong khi đó m t 210 giây đ s p x p m ng đó đã x p gi m

d n (t c là 1000 l n lâu h n)

N u có s bi n đ i l n x y ra thì làm th nào đ phát hi n v th i gian th c hi n gi i thu t theo kích th c c a các th hi n đ c gi i? Chúng ta luôn coi tr ng h p t t nh t c a m t gi i thu t cho m i kích

th c khi mà gi i thu t đòi h i nhi u th i gian nh t i u này đã gi i thích vì sao trong ph n trên ta nói gi i thu t ph i có kh n ng gi i t t c các th hi n có kích th c n trong th i gian không quá Ct(n) giây v i C

là h ng s thích h p N u nó ch y v i th i gian b c t(n) ta đã có n trong

đó m t tr ng h p t i nh t

Phân tích tr ng h p t i nh t là thích h p cho các gi i thu t đáp

ng m t th i gian có h n Ví d , gi i thu t đi u khi n n ng l ng h t nhân, đi u c t y u là bi t đ c gi i h n trên vì th i gian c a h th ng,

b t k các th hi n đ c bi t đ c gi i quy t M t khác, n u m t gi i thu t

đ c s d ng nhi u l n trên nhi u th hi n khác nhau thì đi u quan tr ng

là ta đánh giá đ c th i gian th c hi n trung bình trên các th hi n có kích th c n Chúng ta đã bi t r ng th i gian th c hi n gi i thu t insert(T) bi n đ ng gi a b c n và b c n2 n u chúng ta có th tính toán

th i gian trung bình c a gi i thu t khi gi i n! các s p x p khác nhau c a

m ng khi b t đ u (v i các ph n t c a m ng là riêng bi t) thì chúng ta có

th nói v th i gian s p x p c a m t m ng v i v trí ph n t là ng u nhiên Trong ph n sau ta th y r ng tr c tiên n! c a các hoán v ph n t

c a m ng s cho th i gian trung bình v n là b c n2 S p x p chèn có th i gian b c 2 tr ng h p trung bình và t i nh t, m c dù vài tr ng h p có

th nhanh h n Ta bi t r ng, m t vài gi i thu t s p x p khác có th i gian

b c hai trong tr ng h p t i nh t nh ng có th i gian b c nlog(n) trong

tr ng h p trung bình Th m chí gi i thu t này là kém nh t trong tr ng

h p t i nh t nh ng l i có kh n ng là gi i thu t nhanh nh t trong tr ng

h p trung bình v i ph ng pháp s p x p m ng t i ch

Trang 7

Phân tích trung bình c a gi i thu t luôn nh h n phân tích t i

nh t H n n a, phân tích trung bình có th sai n u nh trong th c t các

th hi n nghi m không đ c ch n ng u nhiên Ví d , Insert(T) có th i gian trung bình b c 2 khi t t c n! kh n ng s p x p c a m ng đã đ c

th nghi m Tuy nhiên, trong nhi u ng d ng đi u ki n này có th không

th c t M t ch ng trình s p x p đ c s d ng đ c p nh t m t t p tin (file) th ng ch y u s p x p m t m ng mà các ph n t c a nó đã th t s

n m g n đúng v trí, ch còn vài ph n t c a n m ngoài v trí Tr ng h p này ph ng pháp trung bình trên các th hi n đ c ch n ng u nhiên là

m t ví d t i cho hi u qu th c t

phân tích đ y đ tr ng h p trung bình đòi h i m t vài tri

th c kinh đi n v s phân tán các th hi n đ c gi i i u này thông

th ng là m t đòi h i không th c t c bi t, khi mà m t gi i thu t l i

đ c s d ng bên trong m t gi i thu t ph c t p h n, s không c tính

đ c các th hi n s ph i x y ra m t cách th t th ng

2.4 Th nƠo lƠ m t thao tác c b n (elementary operation)

M t thao tác c b n là m t thao tác mà th i gian th c hi n nó có

th gi i h n trên b i m t h ng s ch ph thu c vào m t s th c hi n riêng bi t đã đ c s d ng trên máy tính, trên ngôn ng l p trình,

Nh v y, h ng s này không ph thu c kích th c ho c các thông s khác c a th hi n đang đ c xem xét B i vì chúng ta quan tâm đ n th i gian th c hi n giait thu t xác đ nh trong ph m vi m t h ng s nhân, nó

ch là, m t s l ng các thao tác c b n đ c th c hi n trong gi i thu t

mà không quan tâm đ n th i gian chính xác c a m i thao tác đó Ch ng

h n, khi phân tích m t gi i thu t đ gi i quy t m t th hi n v i m t kích

th c nào đó ta th y nó c n a phép c ng, m phép nhân và s phép gán giá

tr Gi s , chúng ta bi t dãy phép c ng không bao gi th c hi n quá ta

micro giây, phép nhân th c hi n không quá tmmicro giây, phép gán th c

hi n không quá tsmicro giây ( các h ng s này đ u ph thu c máy đ c

s d ng đ th c hi n gi i thu t) Phép c ng, nhân và gán coi nh là các thao tác c b n T ng th i gian t c n có đ gi i thu t ch y xong có th

đ c đánh giá nh sau:

Trang 8

t ≤ a.ta + m.tm + s.ts≤ max(ta, tm, ts).( a + m + s)

Nh v y, t đ c gi i h n b i m t h ng s ph c h p đ c c u t o

t s l ng c a các thao tác c b n đã đ c th c hi n

Th i gian chính xác cho m i thao tác c b n không quan tr ng,

đ n gi n ta nói r ng m i thao tác đ c th c hi n trên m t đ n v chi phí

th i gian

Trong mô t gi i thu t trên đây, m t dòng đ n c a ch ng trình phù h p v i s l ng bi n đ ng c a thao tác c b n, th i gian c n thi t

đ tính (T là m ng N phân t ) x  min { T[i], 1≤ I ≤n}

T ng lên theo n, đó chính là mô t rút g n c a xT[1]

For I  2 to n do

Y T[i] < x then x  T[i]

T ng t , m t vài thao tác toán h c quá ph c t p đ c coi nh

là thao tác c b n N u chúng ta coi phép tính giá tr c a m t giai th a

và ki m tra ch a h t là đ n v chi phí, b t ch p kích th c c a các toán

h c nguyên lý Wilson (s nguyên n ch a h t (n-1)! + 1 n u và ch n u n

là s nguyên t v i m i n>1) s ki m tra m t s nguyên v i hi u qu đáng kinh ng c:

Function Wilson (n)

{return true if and only if n là nguyên t }

if n chia h t (n-1)! + 1 then return true else return false

Trong ví d đ u c a ph n này, chúng ta đã coi phép c ng và phép nhân là các thao tác đ n v chi phí, th i gian c n thi t cho các thao tác này gi i h n b i m t h ng s Theo lý thuy t, các thao tác này không

ph i là c b n vì th i gian c n thi t đ th c hi n nó t ng lên theo đ dài

c a các toán h ng

Trang 9

Th c t , chúng có th đ c coi là thao tác c b n mi n là các toán

h ng có liên quan có kích th c h p lý trong các th hi n mà hy v ng s

g p Hai ví d d i đây s minh h a cho đi u chúng ta nói

Function Sum(n)

{Tính t ng các s nguyên t 1 đ n n}

sum  0 For I  1 to n do sum  sum +i Return Sum

Function Fibonacci (n)

{Tính s h ng th n c a dây Fibonacci}

I  1; j 0 For k 1 to n do j i+j

I  j -1 Return j

Trong gi i thu t Sum, giá tr sum phù h p v i t t c các th hi n

mà trong th c t gi i thu t khi th c hi n có th b t g p N u chúng ta s

d ng máy v i 32 bit bi u di n s , t t c các phép c ng có th th c hi n

tr c ti p v i n không l n h n 65535 Theo lý thuy t, gi i thu t ph i làm

vi c v i t t c các giá tr có kh n ng c a n Trong th c t , không m t máy tính nào có th th c hi n phép c ng nh là m t đ n v chi phí n u n

đ c ch n đ l n S phân tích gi i thu t ph i tu theo m c đích c a ng

d ng

Trong tr ng h p Fibonacci ta có m t tr ng thái khác, ta tính

đ c s cu i cùng là n +47, lúc này phép c ng j i +j s b tràn ô s h n trên máy 32 bit có k t qu v i n + 65535 ta c n 45496 bit ho c nhi u

h n 1420 t máy

V n đ c ng t ng t nh v y, khi ta phân tích các gi i thu t bao hàm s th c Ch ng h n, tính dãy Fibonacci b ng công th c Moivre

Trang 10

 

N

5

1

V I

2

5

1 

 ( t l này)

Tóm l i, đ quy t đ nh m t câu l nh b ngoài nhi u đ n gi n nh

jj+i có là m t thao tác c b n ho c không ta đ cho cách s d ng phán

x Sau đây chúng ta coi phép c ng, tr , nhân, chia, l y modulo, toán

t logic, so sánh và phép gán là các thao tác c b n có th th c hi n

m t đ n v chi phí tr khi có m t gi i thích khác

2.5 Vì sao l i ph i xem xét hi u qu c a gi i thu t

Các thi t b tính toán ngày càng ch y nhanh h n, m t câu h i là ta

có b cùng trên phí th i gian đ xây d ng m t gi i thu t có hi u qu hay

d dàng h n là ch th h máy tính m i?

Các t t ng ch y u đã đ c trình bày trong ph n này ch rõ

đi u đó là không đúng Gi s , có m t bài toán riêng bi t có th i gian hàm m và m t máy tính có kh n ng gi i m t th hi n có kích th c n trong 10-4 x 210giây, t c là kho ng 1/10 giây, gi i kích th c 20 là 10 -4

x 220 g n 1000 l n dài h n, kho ng hai phút Gi i v i kích th c 30 thì

l i là 1000 l n dài h n n a, g n 1 ngày n a Gi s , máy tính không b

ng t, không có l i thì ch y c m t n m c ng ch gi i đ c th hi n có kích th c 38

Gi thi t là chúng ta có kh n ng tài chính đ mua m t vài cái máy tính ch y nhanh h n g p 100 l n máy nói trên V i cùng gi i thu t

đó, gi i quy t th hi n v i kích th c n ch có 10-6

x 2n giây V y thì

ch y c n m chúng ta cùng ch gi i đ c m t th hi n có 45 Nói chung, máy tính có kh n ng gi i th hi n kích th c n trong m t kho ng th i gian nào đó thì máy tính m i nói s gi i đ c m t th hi n có kích th c

ít nh t là n+lg100, kho ng n+7, trong cùng m t th i gian

Gi thi t chúng ta đ u t cùng chi phí đó vào thi t k gi i thu t

đ t k t qu là tìm th y m t gi i thu t b c ba cho bài toán c a chúng ta

Ch ng h n, cùng v i máy tính ban đ u và gi i thu t m i v i chi phí th i gian cho th hi n kích th c n là 10 -2

x n3 giây V y thì gi i thu t th

Ngày đăng: 02/02/2015, 17:34

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