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

Tiểu luận phân tích và thiết kế thuật toán hệ THỨC TRUY hồi

37 1,5K 3

Đ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 37
Dung lượng 878 KB

Nội dung

MỞ ĐẦUXác định độ phức tạp của một thuật toán là công việc không hề đơn giản, trước đây chúng ta đã làm quen với một số qui tắc để xác định độ phức tạp của thuật toán như qui tắc cộng, q

Trang 1

Huế, 11- 2014

ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC



TIỂU LUẬN PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN

HỆ THỨC TRUY HỒI

Nhóm 9:

Trần Thị Kim DungNguyễn Tiến HoàngLớp KHMT Khóa 2012-2014

Người hướng dẫn: TS Hoàng Quang

Trang 2

MỤC LỤC

I MỞ ĐẦU 3

II Nội dung 4

1 Phương pháp thế 6

1.1 Giải hệ thức truy hồi bằng phương pháp thế 6

1.2 Thực hiện tốt việc đoán nghiệm 7

1.3 Các điểm cần lưu ý 7

1.4 Tránh các bẫy 8

1.5 Thay đổi các biến 8

1.6 Nhận xét 11

2 Phương pháp cây đệ quy 12

2.1 Ý tưởng của phương pháp cây đệ qui 12

2.2 Nhận xét phương pháp cây đệ quy : 24

3 Phương pháp master 25

3.1 Định lý Master 25

3.2 Sử dụng phương pháp master 26

3.3 Chứng minh định lý master 28

III KẾT LUẬN 36

Trang 3

I MỞ ĐẦU

Xác định độ phức tạp của một thuật toán là công việc không hề đơn giản, trước đây chúng ta đã làm quen với một số qui tắc để xác định độ phức tạp của thuật toán (như qui tắc cộng, qui tắc nhân…) tuy nhiên đối với những thuật toán phức tạp thì việc xác định độ phức tạp một cách chính xác là rất khó khăn đặc biệt đối với những thuật toán sử dụng giải thuật đệ qui

Trong phần này, chúng ta sẽ đi nghiên cứu 3 phương pháp hết sức hữu dụng để giải hệ thức truy hồi đại diện cho một giải thuật đệ qui:

- Phương pháp thế

- Phương pháp cây đệ qui

- Phương pháp Master (với định lý Master rất hay)

Từ đó có thể đưa ra được độ phức tạp của thuật toán một cách chính xác

Xin chân thành cảm ơn TS Hoàng Quang, giảng viên Khoa Công nghệ

thông tin Trường Đại học Khoa học Huế đã hướng dẫn chúng tôi hoàn thành tiểu luận này.

Trang 4

II Nội dung

Thời gian chạy của thuật toán đệ quy được mô tả bởi hệ thức truy hồi.Công thức truy hồi là một đẳng thức hay một bất đẳng thức trong đó một hàmđược mô tả thông qua giá trị của chính hàm đó trên các đối số nhỏ hơn Ví dụ,thời gian chạy T(n) của thuật toán MERGE SORT được biểu diễn bằng hệ thứctruy hồi sau:

trong đó giải hệ thức truy hồi trên sẽ thu được T(n) = Θ(nlgn)

Phần này sẽ đề cập đến 3 phương pháp giải hệ thức truy hồi Đó là phươngpháp thế (the substitution method), phương pháp cây đệ quy (the recursion-treemethod) và phương pháp master (the master method) Trong phương pháp thế,chúng ta dự đoán thời gian thực hiện sẽ bị chặn bởi một đại lượng nào đó, thôngthường sẽ dự đoán chặn trên (upper bound) và sau đó dùng quy nạp toán học đểchứng minh dự đoán là đúng đắn Trong phương pháp cây đệ quy, công thứctruy hồi được thể hiện dưới dạng cây Cây đệ quy được xây dựng dần dần dựavào công thức đệ quy Những nút ở từng mức trên cây đệ quy đại diện cho chiphí (cost) phải gánh chịu ở mức đó trong quá trình phân rã Thời gian thực hiệnthuật toán sẽ là tổng chi phí theo toàn bộ các mức của cây đệ quy Dựa trên tổng

đó, chúng ta sẽ rút ra được đánh giá về thời gian thực hiện của thuật toán bằngcác biến đổi toán học Phương pháp master áp dụng cho các công thức truy hồidạng:

T(n) = aT(n/b) + f(n)

trong đó: a ≥ 1, b > 1, f(n) là một hàm cho trước

Một số chi tiết cần lưu ý

Trên thực tế, chúng ta bỏ qua một số chi tiết khi thiết lập và giải côngthức truy hồi, đó là tính nguyên của đối số và điều kiện biên Về tính nguyên củađối số, nhận xét rằng thời gian chạy T(n) của thuật toán chỉ xác định với nnguyên bởi vì đối với hầu hết các thuật toán kích thước dữ liệu vào là một sốnguyên Ví dụ, công thức truy hồi mô tả thời gian chạy xấu nhất của thuật toánMERGE SORT là như sau:

( ) 2 / ( 2 ) 2 /

(

2

1 )

T n

T

n n

Trang 5

2T(n/2) + Θ(n) nếu n>1

Chúng ta cũng có thể bỏ qua điều kiện biên vì cho dù giá trị biên(trườnghợp suy biến đệ quy) có thay đổi thì kết quả thu được sau khi giải công thức truyhồi cũng không thay đổi nhiều bởi vì chúng chỉ hơn kém nhau một hằng số Cnào đó Do vậy, độ phức tạp của thuật toán không phụ thuộc vào các điều kiệnbiên ban đầu

Khi giải hệ thức truy hồi, chúng ta thường bỏ qua các chi tiết như hàm sàn,hàm trần, điều kiện biên Sau khi thu được kết quả, chúng ta sẽ quay ngược trởlại để xem xét ảnh hưởng của những chi tiết vừa được bỏ Thông thường, nhữngchi tiết đó không ảnh hưởng đến kết quả

Trang 6

1 Phương pháp thế

1.1 Giải hệ thức truy hồi bằng phương pháp thế

Giải hệ thức truy hồi bằng phương pháp thế gồm 2 bước:

1 Đoán dạng của nghiệm

2 Dùng quy nạp toán học để chứng minh tính đúng đắn của nghiệm đượcđoán, đồng thời làm chính xác hóa nghiệm bằng cách tìm các hằng số phù hợp

Phương pháp thế là một phương pháp giải hệ thức truy hồi khá tự nhiên

Nó rất hiệu quả, tuy nhiên chỉ áp dụng trong các trường hợp dạng của nghiệm là

dễ đoán

Phương pháp thế có thể được sử dụng để đánh giá chặn trên hay chặndưới đối với hệ thức truy hồi Ví dụ, chúng ta thử đánh giá chặn trên đối với hệthức truy hồi sau:

trong đó bất đẳng thức đúng với mọi c ≥1

Việc chứng minh tính đúng đắn của suy đoán bằng quy nạp còn thể hiện ởđiều kiện biên Thông thường, chúng ta chỉ ra rằng điều kiện biên trùng vớibước cơ sở trong chứng minh quy nạp, vì vậy nó là đúng đắn với sự suy đoán.Đối với hệ thức truy hồi (4), chúng ta phải chỉ ra rằng có thể chọn hằng số c đủlớn để chặn trên T(n) ≤ cnlgn đúng với điều kiện biên Tuy nhiên, yêu cầu nàyđôi khi gây ra một số vấn đề Giả sử T(1)=1 Với n=1 thì T(n) ≤ cnlgn dẫn đếnT(1) ≤ c1lg1 = 0 (mâu thuẫn với T(1)=1) Do đó, trường hợp cơ sở của chứngminh quy nạp không thỏa mãn tính đúng đắn

Sự khó khăn trong việc chứng minh giả thiết quy nạp với điều kiện biêncho trước có thể dễ dàng khắc phục Ví dụ, đối với hệ thức truy hồi (4) chúng tatận dụng ưu điểm của ký hiệu tiệm cận khi chỉ yêu cầu rằng T(n) ≤ cnlgn đối với

trường hợp không mong đợi T(1)=1 tương ứng với điều kiện biên Nhận xétrằng với n > 3, hệ thức truy hồi lúc này không còn phụ thuộc vào T(1) Từ đó,chúng ta có thể thay thế T(1) bằng T(2) và T(3) như là trường hợp cơ sở củaphép chứng minh quy nạp T(2) = 4 và T(3) = 5 Các bất đẳng thức T(2) ≤

(4)

Trang 7

c2lg2, T(3) ≤ c3lg3 đúng với c ≥ 2 Như vậy, với mọi c ≥ 2 có thể sử dụng cáctrường hợp n=2 và n=3 như là các trường hợp cơ sở trong chứng minh quy nạpcho hệ thức truy hồi (4.4)

1.2 Thực hiện tốt việc đoán nghiệm

Không có một phương pháp tổng quát nào để đưa ra cách đoán nghiệm chínhxác Việc đoán nghiệm chủ yếu dựa vào kinh nghiệm Nếu một hệ thức truy hồi

đã được khảo sát trước đó thì lần tiếp theo chúng ta gặp một hệ thức truy hồitương tự, chúng ta có thể đoán nghiệm tương tự với nghiệm của hệ thức truy hồi

mà ta đã biết Ta xét hệ thức truy hồi như sau: T(n)=2T(n/2+17)+n

Bài toán có vẻ phức tạp với sự hiện diện của số 17 trong đối số Tuy nhiên theotrực giác số hạng bổ sung này thực chất không ảnh hưởng đến nghiệm đối với hệ

thức truy hồi Khi n lớn, sự khác biệt giữa T(n/2 và T(n/2+17) là không lớn,

cả hai đều gần bằng nhau khi n đủ lớn Ta đoán rằng T(n)=O(nlgn) mà ta có thể

xác minh đúng bằng phương pháp thế (xem bài tập 4.1-5)

Một cách khác để đưa ra một suy đoán tốt đó là chứng minh các cận trên vàcận dưới trên hệ thức truy hồi rồi thu nhỏ miền xác định bởi cận trên và cận dướicho đến khi nào chúng nằm khá gần với nghiệm của hệ thức truy hồi Ví dụ: cóthể bắt đầu bằng một cận dưới T(n)=Ω(n) cho hệ thức truy hồi (4.4) và ta có thể

trên và nâng cận dưới lên cho đến khi chúng gần với T(n) nhất có thể, trongtrường hợp này tiệm cận sẽ là T(n)=(nlgn)

1.3 Các điểm cần lưu ý

Có những trường hợp chúng ta có thể suy đoán đúng tiệm cận nghiệm của một

hệ thức truy hồi tuy nhiên quy nạp toán học lại không cho thấy như vậy Xét hệthức truy hồi sau:

Điều này không hàm ý T(n) ≤ cn với bất kỳ chọn lựa nào của c, nó dẫn đến ta

tế suy đoán của ta đối với nghiệm T(n)=O(n) là đúng đắn Tuy nhiên để chứng

tỏ điều này ta phải tạo ra một giả thiết quy nạp mạnh hơn

Suy đoán của ta là gần đúng chỉ để hụt hằng 1, một số hạng cấp thấp Tuyvậy phép quy nạp toán học sẽ không thực hiện được trừ khi ta chứng minh dạng

Trang 8

thức chính xác của giả thiết quy nạp Để khắc phục khó khăn này, ta loại bỏ một

số hạng bậc thấp ra khỏi suy đoán trên đây Suy đoán mới sẽ là T(n) ≤ cn-b, ở

đó b ≥ 0 là không đổi Bây giờ ta có

1.5 Thay đổi các biến

Đôi khi chỉ cần điều chỉnh nhỏ trong đối số là khiến một hệ thức truy hồi chưađược xác định trở thành dạng tương tự như đã gặp trước đó Xét hệ thức truy hồi

nn

T

n

T( )  2 ( )  lg

Có thể đơn giản hóa hệ thức truy hồi này bằng cách thay đổi các biến, để tiện

Bài tập:

Bài 1

Chứng tỏ nghiệm của T(n)=T(n/2+1 là O(lgn)

Trang 10

Điều này có thể gặp vấn đề Giả sử T(1)=1 là điều kiện biên duy nhất của hệ thức truy hồi, vậy T(n) ≤ c n lg n thay 1 vào ta có: T(1) ≤ c 1 lg 1 = 0 ≠ 1 (theo điều kiện T(1)=1)

Vậy để khắc phục điều kiện biên cụ thể ta chỉ cần chứng minh T(n) ≤ c n lg n với n ≥ n0, với n0 là một hằng Bây giờ ta xét điều kiện biên của phép quy nạy là gộp n=2 và n=3 dưới dạng một phần của điều kiện biên Ta có thể đặt T(2) và T(3) là các điều kiện biên cho phép chứng minh quy nạy bởi n > 3 và hệ thức truy hồi không phụ thuộc và T(1) Từ hệ thức truy hồi, ta suy ra T(2)=4 và T(3)=5 Ta chọn c đủ lớn sao cho T(2) ≤ c 2 lg 2 và T(3) ≤ c3 lg 3 Chọn c ≥ 2

là đủ Ở đây ta tìm ra điều kiện biên với n đủ nhỏ

Bài 4

Thời gian thực hiện thuật toán trộn MERGE SORT được tính bằng:

1

1 )

( ) 2 /

Trang 11

Để khắc phục điều này, chúng ta sẽ đi tìm hiểu về phương pháp Cây đệ

qui sẽ cung cấp thêm 1 phương pháp đoán nghiệm có sơ sở và chính xác hơn.

Trang 12

2 Phương pháp cây đệ quy

Cho dù phương pháp thế có thể cung cấp cho chúng ta một cách chứngminh ngắn gọn, cô động để có một lời giải đúng cho hệ thức truy hồi, nhưng đôilúc chúng ta cũng gặp khó khăn để có tiến gần đến một dự đoán tốt

2.1 Ý tưởng của phương pháp cây đệ qui

Trong cây đệ quy, mỗi nút đại diện cho một chi phí của từng bài toán conđược phân rã từ bài toán trước đó Chúng ta cộng tất cả các chi phí của các núttrên mỗi mức của cây và ghi ra chi phí của mức đó và sau đó chúng ta sẽ cộnglại tất cả chi phí của những mức này để có được tổng chi phí của thuật toán.Phương pháp cây đệ quy nó đặc biệt hữu dụng khi mà hệ thức truy hồi mô tảthời gian thực hiện của giải thuật chia để trị

Một cây đệ quy được sử dụng để tìm ra một dự đoán tốt, từ đó chúng taxác minh lại bằng phương pháp thế Khi sử dụng cây đệ quy để tìm ra mộtphỏng đoán tốt, thường chúng ta bỏ qua một số điều kiện biên và tính nguyêncủa đối số, do vậy chúng ta phải kiểm tra lại sau đó Trong phần này, chúng ta sẽ

sử dụng cây đệ quy để đoán nghiệm và trong phần cuối, chúng ta sẽ sử dụng cây

đệ quy để chứng minh các định lý mà các định lý đó được trình bày cơ bản trongphần phương pháp master

- Xét ví dụ của MERGE_SORT:

T(n)=2T(n/2) + cn (1)

- Phân rã bài toán trên :

Từ phân rã ta xây dựng cây đệ quy (1) được xây dựng dần dần như sau:

T

cn n

T n T

Trang 13

- Cây hoàn chỉnh được xây dựng như dưới :

- Kích thước của bài toán giảm nếu chúng ta triển khai tiếp cho đến khi đạtđến điều kiện biên

của bài toán con ở mức i)

Trang 14

hoặc tương đương mức i=lgn)

- Tiếp đến ta tính chi phí cho mỗi mức của cây

- Số lượng nút của mức dưới gấp 2 lần số lượng nút của mức kề trên nó, vìthế số nút tại độ sâu i là 2i nút và mỗi nút tại độ sâu i đóng góp chi phí là: c(n/2i)

- Vậy tổng chi phí tất cả các nút tại độ sâu i là: 2i c(n/2i) = cn

- Tại mức cuối cùng có n nút, mỗi nút đóng góp chi phí là c, vì vậy tổng chiphí mức cuối cùng là: cn

- Thật vậy, T(n) = O(nlgn) là một cận trên của hệ thức truy hồi

- Vậy nghiệm của T (n) = 2T(⌊n/2⌋) + cn là O(nlg n)

Xét ví dụ 2, chẳng hạn xét một cây đệ quy để đưa ra một dự đoán với hệthức truy hồi sau: T(n)  3T( n/ 4  )   (n2 ) Chúng ta bắt đầu bằng cách tập trung

vào tìm cận trên cho lời giải này Chúng ta sẽ tạo một cây đệ quy từ hệ thức truyhồi T(n) = 3T(⌊n/4⌋) + cn2, với c>0

Từ việc phân tích:

như ở hình 4.1.Cho thuận tiện, chúng ta giả sử giá trị n chính xác là lũy thừa của

phí của mức trên cùng của hệ thức truy hồi và 3 cây con của gốc của nó sẽ đạidiện cho chi phí nó gánh chịu bởi bài toán con với kích thước là n/4 Trong phần(c) nêu tiến trình này tiến hành một bước xa hơn bằng cách mở rộng mỗi nút với

ta tiếp tục mở rộng các nút trên cây bằng cách tách các thành phần cấu tạo của

nó như được xác định bằng phép truy hồi

) ( ) 4 / ( 3 ) (

2

2 2

T

n n

n T

n n

T n T

Trang 15

Hình 2 Cấu trúc của cây đệ quy của hệ thức truy hồi T(n) = 3T(⌊n/4⌋) + cn2.Nhìn cấu trúc ở hình 2, cho ta thấy được hình thành cấu trúc cây đệ quy

từ (b) – (d) để tạo thành một cây đệ quy Cây đệ quy hoàn chỉnh được hànhthành ở (d) có chiều cao log4n (có log4n + 1 mức)

Bởi vì kích thước của bài toán con giảm khi chúng ta triển khai tiếp cho đến khichúng ta đạt đến điều kiện biên Làm sao để biết được khi nào thì kích thước bài

Trang 16

toán con là 1 Kích thước của bài toán con ở một nút với độ sâu i là n/4i Do đó

khi mức i =log4n do vậy cây có log4n +1 mức (0,1 ,2 log4n )

Tiếp đến chúng ta tính chi phí cho mỗi mức của cây, số lượng nút của

mức dưới gấp 3 lần số lượng nút của mức kề trên nó và vì thế số nút tại độ sâu i

cho mỗi mức khi chúng ta đi từ gốc xuống, mỗi một nút tại độ sâu i với i = 0, 1,

2, 3, , log4n – 1 có chi phí là c(n/4 i)2 Việc nhân lên chúng ta sẽ thấy tổng chi

phí của tất cả các nút tại độ sâu i với i = 0, 1, 2, , log4n - 1, là 3 i c(n/4 i)2 =(3/16)i cn2 Ở mức cuối cùng tại độ sâu log4n có 3log

4n nút nhưng mà 3log

4n =nlog 4 3

( Vì theo tính chất của logarit ta có: log4n = loglog 4

2

)

16

3

3i nút, mỗi nút có đóng góp với chi phí c(n/4i)2, vì vậy ở mức thấp hơn có tổngchi phí là:

3i c(n/4i)2 = (3/16)icn2, Ở mức cuối cùng tại độ sâu log4n có 3log

4n =nlog43nút với chi phí đóng góp là T(1) Vì vậy tổng chi phí của mức này là nlog43T(1)với  (nlog 4 3 )

Bây giờ chúng ta tính tổng chi phí của tất cả các mức để xác định chi phícho toàn bộ cây:

) ( 1

) 16

/

3

(

1 )

3

16

3 16

3 )

(

3 log 2

3 log 2

1 log 2

2 2

2

4 4

4

4

4 4

n cn

n cn

n cn

cn cn

Trang 17

Do đó chúng ta có thể đưa ra dự đoán T(n)= O(n2) cho hệ thức truy hồi

là một giới hạn chặt chưa, Tại sao? Lời gọi đệ qui đầu tiên đóng góp một chi phí

là Θ(n2), và vì vậy Ω(n2) phải là một cận dưới của hệ thức truy hồi

Bây giờ chúng ta sử dụng phương pháp thế để kiểm chứng dự đoán của

số > 0 Sử dụng tương tự như hằng số c >0 trước đó, Giả sử rằng giả thiết quynạp đúng với n/4, có nghĩa là : T([n/4]) ≤ d[n/4]2 Thế bất đẳng thức ở giả thiếtquy nạp vào hệ thức truy hồi ta có:

Ta xét với một ví dụ có phức tạp hơn, trong hình 3, biểu diễn cây đệ quy của hệ

thức truy hồi T (n) = T(n/3) +T(2n/3) + O(n).

Trang 18

Hình 3 Cây đệ quy đối với hệ thức truy hồi T(n) = T (n/3) + T (2n/3) + cn.

Như trước đây, chúng ta đưa giá trị c đại diện cho hệ số hằng trong số hạng

O(n) Khi chúng ta cộng các giá trị qua từng mức của cây đệ qui, thì ta có giá trị

→ ···→ 1

Do (2/3)k n = 1 khi k = log3/2 n, Chiều cao của cây là log3/2n.

Qua trực giác, chúng ta hy vọng lời giải của hệ thức truy hồi là

O(cnlog3/2 n) = O(nlg n) Tuy nhiên có một sự phức tạp ở đây: Chúng ta cần

xem xét tới chi phí của nút lá Nếu cây đệ qui là một cây đầy đủ với chiều caolog3/2 n, ở đây sẽ có:

2log

3/2n = nlog

3/22 nút lá Từ đó chi phí của mỗi nút lá là một hằng số, tổng tất

cả chi phí của nút lá sẽ là (nlog3/2 n) tương ứng với ω(nlg n) Nhưng ở đây

3/22 Hơn nữa khichúng ta đi từ dưới lên gốc số nút ngày càng ít vậy thì không phải tất cả các mức

đều có chi phí chính xác là cn, những mức ở phía dưới đóng góp ít hơn Chúng

ta đã có tính toán chính xác tất cả chi phí, nhưng chú ý rằng trong trường hợpnày chúng ta đang cố gắng để có được một phỏng đoán, làm cơ sở cho việc sửdụng phương pháp thế Vậy thì làm cách nào để ta chứng minh được cận trên

đúng là O(nlg n).

Thật vậy, chúng ta có thể sử dụng phương pháp thế để xác nhận rằng O(nlgn) là

một cận trên cho lời giải của hệ thức truy hồi Chúng ta có thể thấy điều đó nếu

giả thiết quy nạp là T(n) ≤ dnlgn, với d là một hằng số dương thích hợp Ta có:

Ngày đăng: 11/04/2015, 22:13

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w