Giáo trình Toán rời rạc - Vũ Kim Thành
Thuật toán (algorithm) là một dãy các quy tắc nhằm xác định một dãy các thao tác
trên các đối tượng sao cho sau một số hữu hạn bước thực hiện sẽ đạt được mục tiêu
đặt ra.
Từ định nghĩa của thuật toán cho thấy các đặc trưng (tính chất) cơ bản của thuật toán
là:
a. Yếu tố vào, ra:
• đầu vào (Input): Mỗi thuật toán có một giá trị hoặc một bộ giá trị đầu vào
từ một tập xác định đã được chỉ rõ.
• đầu ra (Output): Từ các giá trị đầu vào, thuật toán cho ra các giá trị cần
tìm gọi là kết quả của bài toán.
b. Tính dừng:
Sau một số hữu hạn bước thao tác thuật toán phải kết thúc và cho kết quả .
c. Tính xác định:
Các thao tác phải rõ ràng, cho cùng một kết quả dù được xử lý trên các bộ xử lý khác
nhau (hai bộ xử lý trong cùng một điều kiện không thể cho hai kết quả khác nhau).
d. Tính hiệu quả
Sau khi đưa dữ liệu vào cho thuật toán hoạt động phải đưa ra kết quả như ý muốn.
e. Tính tổng quát
Thuật toán phải được áp dụng cho mọi bài toán cùng dạng chứ không phải chỉ cho
một tập đặc biệt các giá trị đầu vào.
Có nhiều cách mô tả thuật toán như: Dùng ngôn ngữ tự nhiên; dùng lưu đồ (sơ đồ
khối); dùng một ngôn ngữ lập trình nào đó (trong giáo trình này dùng loại ngôn ngữ mô tả
gần như ngôn ngữ lập trình Pascal và gọi là phỏng Pascal); …
File đính kèm:
- giao_trinh_toan_roi_rac_vu_kim_thanh.pdf
Nội dung text: Giáo trình Toán rời rạc - Vũ Kim Thành
- Procedure nguyento(m); Input: S nguyên d ươ ng m; Output: True, n u m là s nguyên t ; False, n u m không ph i là s nguyên t ; begin i := 2; while i ≤ m do begin if m mod i = 0 then nguyento := false else nguyento := true; i := i+1; end; end; Cách th hai: repeat câu l nh ho c kh i câu l nh until ñi u ki n; Khi th c hi n, câu l nh (kh i câu l nh) ñư c th c hi n, sau ñó ñi u ki n ñư c ki m tra, n u ñi u ki n sai thì vòng l p ñư c th c hi n, n u ñi u ki n ñúng thì vòng l p d ng và cho k t qu . Thí d : Thu t toán Ơ-clit tìm ư c s chung l n nh t c a hai s nguyên d ươ ng a, b nh ư sau: Gi s a > b và a chia cho b ñư c th ươ ng là q và s d ư là r, trong ñó a, b, q, r là các s nguyên d ươ ng: a = bq + r suy ra: ƯCLN(a, b) = ƯCLN(b, r) và s d ư cu i cùng khác không là ư c s chung l n nh t c a a và b. Th t v y: Gi s d là ư c s chung c a hai s nguyên d ươ ng a và b, khi ñó: r = a – bq chia h t cho d. V y d là ư c chung c a b và r. Ng ư c l i, n u d là ư c s chung c a b và r, khi ñó do bq + r = a c ũng chia h t cho d. V y d là ư c s chung c a a và b. Ch ng h n, mu n tìm ư c s chung l n nh t c a 111 và 201 ta làm nh ư sau: 201 = 1. 111 + 90 111 = 1. 90 + 21 90 = 4. 21 + 6 21 = 3. 6 + 3 6 = 2. 3 V y ƯCLN(111, 201) = 3 (3 là s d ư cu i cùng khác 0). Function UCLN(a, b) Input: a, b là 2 s nguyên d ươ ng; Output: UCLN(a, b); begin Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 10
- x := a; y : = b; repeat begin r := x mod y; (* r là ph n d ư khi chia x cho y *) x : = y; y := r ; if y ≠ 0 then uc := y; end; until y = 0; UCLN := uc; end ; Chú ý: Khi gi i các bài toán ph c t p thì th ư ng ph i phân chia bài toán ñó thành các bài toán nh h ơn g i là các bài toán con. Khi ñó ph i xây d ng các th t c ho c hàm ñ gi i các bài toán con ñó, sau ñó t p h p các bài toán con này ñ gi i bài toán ban ñ u ñã ñ t ra. Thu t ng tin h c g i các ch ươ ng trình gi i bài toán con ñó là các ch ươ ng trình con. Thí d : Tìm s nguyên t nh nh t l n h ơn s nguyên d ươ ng m ñã cho. Procedure So_nguyen_to_lon_hon(m); Input: S nguyên d ươ ng m; Output: n là s nguyên t nh nh t l n h ơn m; begin n := m + 1; while nguyento(n) = false do n := n + 1; end; 4. ð ph c t p c a thu t toán Có hai lý do làm cho m t thu t toán ñúng có th không th c hi n ñư c trên máy tính. ðó là do máy tính không ñ b nh ñ th c hi n ho c th i gian tính toán quá dài. T ươ ng ng v i hai lý do trên ng ư i ta ñưa ra hai khái ni m: - ð ph c t p không gian c a thu t toán, ñ ph c t p này g n li n v i các c u trúc d li u ñư c s d ng. V n ñ này không thu c ph m vi c a môn h c này. - ð ph c t p th i gian c a thu t toán, ñ ph c t p này ñư c th hi n qua s l ư ng các câu l nh v các phép gán, các phép tính s h c, phép so sánh, ñư c s d ng trong thu t toán khi các giá tr ñ u vào có kích th ư c ñã cho. 4.1. Khái ni m ñ t ăng c a hàm Tr ư c h t xét thí d : Gi s th i gian tính toán c a m t thu t toán ph thu c vào kích th ư c n c a ñ u vào theo công th c: t(n) = 60n 2 + 9n + 9 Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 11
- B ng sau cho th y khi n l n, t(n) x p x s h ng 60n 2 : n t(n) = 60n 2 + 9n + 9 60n 2 10 9099 6000 100 600 909 600 000 1 000 60 009 009 60 000 000 10 000 6 000 090 009 6 000 000 000 ð nh ngh ĩa: Cho f(x) và g(x) là hai hàm t t p s nguyên ho c t p s th c vào t p các s th c. Ng ư i ta nói f(x) là O(g(x)) hay f(x) có quan h big-O v i g(x), ký hi u f(x) = O(g(x)), n u t n t i hai h ng s C và k sao cho: | f(x) | ≤ C. | g(x) |, ∀x ≥ k. Thí d 1. t(n) = 60n 2 + 9n + 9 = O(n 2) Th t v y: ∀n ≥ 1, ta có: | 60n 2 + 9n +9| = 60n 2 + 9n +9 9 9 = n2 60 + + n n2 ≤ n 2 (60 + 9 + 9) = 78n 2. V y C = 78; k = 1. T ươ ng t ta có th ch ng minh: n n-1 n Pn(x) = a 0x + a 1x + + a n = O(x ) , x ∈ R. Thí d 2. f(n) = 1 + 2 + 3 + + n k 1 | f 2(x)| ≤ C2 | g 2(x)) | , ∀x > k 2 Ch n k = max(k 1; k 2) thì c hai b t ñ ng th c ñ u tho mãn. Do ñó: 1) |(f 1 + f 2)(x)| = |f 1(x) + f 2(x)| ≤ |f 1(x)| + |f 2(x)| ≤ ≤ C 1|g 1(x)| + C 2|g 2(x)| ≤ (C 1 + C 2)g(x) ñây g(x) = max{|g 1(x)|, |g 2(x)|}. Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 12
- 2) |(f 1.f 2)(x)| = |f 1(x)|.|f 2(x)| ≤ C 1C2 |g 1(x)|.|g 2(x)| = C 1C2|g 1(x)g 2(x)| H qu : N u f 1(x) = O(g(x)), f 2(x) = O(g(x)) thì (f 1+f 2)(x) = O(g(x)) Thí d . Cho ñánh giá O c a các hàm: 3 1/ f(n) = 2nlg(n!) + (n + 3)lgn , n ∈ N. 2/ f(x) = (x + 1)lg(x 2 + 1) + 3x 2 , x ∈ R. Gi i: 1) Ta có: lg(n!) = O(nlgn) ⇒ 2nlg(n!) = O(n 2lgn) (n 3 + 3)lgn = O(n 3lgn) V y f(n) = O(n 3lgn) 2) Ta có: lg(x 2 + 1) ≤ lg2x 2 = lg2 + 2lgx ≤ 3lgx , ∀x > 1 ⇒ lg(x 2 + 1) = O(lgx) ⇒ (x + 1)lg(x 2 + 1) = O(xlgx) M t khác: 3x 2 = O(x 2) và max{xlgx; x 2} = x 2. V y f(x) = O(x 2). 4.3. ð ph c t p c a thu t toán Nh ư ñã nói ph n ñ u c a m c 4, chúng ta ch ñ c p ñ n ñ ph c t p v th i gian c a thu t toán. ð ph c t p v th i gian c a thu t toán ñư c ñánh giá qua s l ư ng các phép toán mà thu t toán s d ng. Vì v y ph i ñ m các phép toán có trong thu t toán. Các phép toán ph i ñ m là: - Các phép so sánh các s nguyên ho c s th c; - Các phép tính s h c: c ng, tr , nhân, chia; - Các phép gán; - Và b t k ỳ m t phép tính s ơ c p nào khác xu t hi n trong quá trình tính toán. Gi s s các phép toán c a thu t toán là f(n), trong ñó n là kích th ư c ñ u vào, khi ñó ng ư i ta th ư ng quy ñ ph c t p v th i gian c a thu t toán v các m c: • ð ph c t p O(1), g i là ñ ph c t p h ng s , n u f(n) = O(1). • ð ph c t p O(logan), g i là ñ ph c t p logarit, n u f(n) = O(log an). ( ði u ki n a > 1) • ð ph c t p O(n), g i là ñ ph c t p tuy n tính, n u f(n) = O(n). • ð ph c t p O(nlog an), g i là ñ ph c t p nlogarit n u f(n) = O(log an). ( ði u ki n a > 1) • ð ph c t p O(n k), g i là ñ ph c t p ña th c, n u f(n) = O(n k). • ð ph c t p O(a n), g i là ñ ph c t p m ũ, n u f(n) = O(a n). ( ði u ki n a > 1) • ð ph c t p O(n!), g i là ñ ph c t p giai th a, n u f(n) = O(n!). Thí d 1. Tìm ñ ph c t p c a thu t toán ñ gi i bài toán: Tìm s l n nh t trong dãy n s nguyên a 1, a 2, , a n ñã cho: Procedure max(a 1, a 2, , a n); Input: Dãy s a 1, a 2, , a n; Output: S l n nh t (max) c a dãy s ñã cho; begin max := a 1; for i := 2 to n do Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 13
- if a i > max then max := a i; end; M i b ư c c a vòng l p for ph i th c hi n nhi u nh t 3 phép toán: phép gán bi n ñi u khi n i, phép so sánh a i v i max và có th là phép gán a i vào max; vòng l p có (n – 1) bư c (i = 2, 3, , n) do ñó nhi u nh t có c th y 3(n - 1) phép toán ph i th c hi n. Ngoài ra thu t toán còn ph i th c hi n phép gán ñ u tiên max := a 1. V y s phép toán nhi u nh t mà thu t toán ph i th c hi n là: 3(n – 1) + 1 = 3n – 2 = O(n) ð ph c t p v th i gian c a thu t toán là ñ ph c t p tuy n tính. Thí d 2. ð ph c t p c a thu t toán nhân ma tr n. Procedure nhân_matran; Input: 2 ma tr n A = (a ij )m x p và B = (b ij )p x n ; Output: ma tr n tích AB = (c ij )m x n ; Begin for i:=1 to m do for j:=1 to n do begin cij := 0; for k:=1 to p do c ij := c ij + a ik bkj ; end; End. S phép c ng và s phép nhân trong thu t toán trên là: V i m i ph n t c ij ph i th c hi n p phép nhân và p phép c ng. Có t t c m.n ph n t c ij , v y ph i th c hi n 2mnp phép c ng và phép nhân. ð xác ñ nh ñ ph c t p c a thu t toán, ta gi s A, B là hai ma tr n vuông c p n, ngh ĩa là m = n = p. nh ư v y ph i c n 2n 3 phép c ng và phép nhân. V y ñ ph c t p c a thu t toán là O(n 3) – ñ ph c t p ña th c. M t ñi u thú v là, khi nhân t 3 ma tr n tr lên thì s phép tính c ng và nhân ph thu c vào th t nhân các ma tr n y. Ch ng h n A, B, C là các ma tr n có kích th ư c tươ ng ng là 30 ×20, 20 ×40, 40 ×10. Khi ñó: N u th c hi n theo th t ABC =A(BC) thì tích BC là ma tr n kích th ư c 20 ×10 và c n th c hi n 20.40.10 = 8000 phép tính c ng và nhân. Ma tr n A(BC) có kích th ư c 30 ×10 và c n th c hi n 30.20.10 = 6000 phép c ng và nhân. T ñó suy ra c n th c hi n 8000+6000 = 14000 phép tính c ng và nhân ñ hoàn thành tích ABC. Tươ ng t , n u th c hi n theo th t ABC = (AB)C thì c n th c hi n 30.20.40 phép tính c ng và nhân ñ th c hi n tích AB và 30.40.10 phép c ng và nhân ñ th c hiên tích (AB)C. Do ñó s các phép tính c ng và nhân ph i th c hi n ñ hoàn thành tích ABC là 24000+12000 = 36000 phép tính. Rõ ràng hai cách nhân cho k t qu v s l ư ng các phép tính ph i th c hi n là khác nhau. Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 14
- 5. Thu t toán tìm ki m Bài toán tìm ki m ñư c phát bi u nh ư sau: Tìm trong dãy s a 1, a 2, , a n m t ph n t có giá tr b ng s a cho tr ư c và ghi l i v trí c a ph n t tìm ñư c. Bài toán này có nhi u ng d ng trong th c t . Ch ng h n vi c tìm ki m t trong t ñi n, vi c ki m tra l i chính t c a m t ño n v ăn b n, Có hai thu t toán c ơ b n ñ gi i bài toán này: Thu t toán tìm ki m tuy n tính và thu t toán tìm ki m nh phân. Chúng ta l n l ư t xét các thu t toán này. 5.1. Thu t toán tìm ki m tuy n tính (còn g i là thu t toán tìm ki m tu n t ). ðem so sánh a l n l ư t v i a i (i = 1, 2, , n) n u g p m t giá tr a i = a thì ghi l i v trí c a a i, n u không g p giá tr a i = a nào (a i ≠ a. ∀i) thì trong dãy không có s nào b ng a. Procedure Tim_tuyen_tinh_phan_tu_bang_a; Input: a và dãy s a 1, a 2, , a n; Output: V trí ph n t c a dãy có giá tr b ng a, ho c là s 0 n u không tìm th y a trong dãy; begin i := 1; while (i ≤ n and a i ≠ a) do i := i + 1; if i ≤ n then vitri := i else vitri := 0; end; Nh ư v y n u a ñư c tìm th y v trí th i c a dãy (a i = a) thì câu l nh i := i + 1 trong vòng l p while ñư c th c hi n i l n (i = 1, 2, , n). N u a không ñư c tìm th y, câu l nh ph i th c hi n n l n. V y s phép toán trung bình mà thu t toán ph i th c hi n là: 1 + 2 + + n n(n + 1) n + 1 = = = O(n) n 2n 2 V y, ñ ph c t p c a thu t toán tìm ki m tuy n tính là ñ ph c t p tuy n tính. 5.2. Thu t toán tìm ki m nh phân. Gi thi t r ng các ph n t c a dãy ñư c x p theo th t t ăng d n. Khi ñó so sánh a 1+ n v i s gi a dãy, n u a a m thì tìm a trong dãy am+1 , , a n. ð i v i m i dãy con (m t n a c a dãy ñã cho) ñư c làm t ươ ng t ñ ch ph i tìm ph n t có giá tr b ng a m t n a dãy con ñó. Quá trình tìm ki m k t thúc khi tìm th y v trí c a ph n t có giá tr b ng a ho c khi dãy con ch còn 1 ph n t . Ch ng h n vi c tìm s 8 trong dãy s 5, 6, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 22 ñư c ti n hành nh ư sau: Dãy ñã cho g m 14 s h ng, chia dãy thành 2 dãy con: 5, 6, 8, 9, 11, 12, 13 và 15, 16, 17, 18, 19, 20, 22 Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 15
- Vì 8 a m then i := m+1 else j := m; end; if a = a i then vitri := i else vitri := 0; end; ð ph c t p c a thu t toán tìm ki m nh phân ñư c ñánh giá như sau: Không gi m k t ng quát có th gi s ñ dài c a dãy a 1, a 2, , a n là n = 2 v i k là s nguyên d ươ ng. (N u n không ph i là l ũy th a c a 2, luôn tìm ñư c s k sao cho 2 k – 1 < n < 2 k do ñó có th xem dãy ñã cho là m t ph n c a dãy có 2 k ph n t ). Nh ư v y ph i th c hi n nhi u nh t k l n chia ñôi các dãy s (m i n a dãy c a l n chia ñôi th nh t có 2 k – 1 ph n t , c a l n chia ñôi th hai có 2 k – 2 ph n t , , và c a l n chia ñôi th k là 2 k – k = 2 0 = 1 ph n t ). Nói cách khác là nhi u nh t có k vòng l p while ñư c th c hi n trong thu t toán tìm ki m nh phân. Trong m i vòng l p while ph i th c hi n hai phép so sánh, và vòng l p cu i cùng khi ch còn 1 ph n t ph i th c hi n 1 phép so sánh ñ bi t không còn 1 ph n t nào thêm n a và 1 phép so sánh ñ bi t a có ph i là ph n t ñó hay không. T ñó th y r ng thu t toán ph i th c hi n nhi u nh t 2k + 2 = 2[log 2n] + 2 = O(logn) phép so sánh. V y, ñ ph c t p c a thu t toán tìm ki m nh phân là ñ ph c t p logarit. 6. Thu t toán ñ quy 6.1. Công th c truy h i ðôi khi r t khó ñ nh ngh ĩa m t ñ i t ư ng nào ñó m t cách t ư ng minh, nh ưng có th ñ nh ngh ĩa ñ i t ư ng ñó qua chính nó v i ñ u vào nh h ơn. Cách ñ nh ngh ĩa nh ư v y g i là cách ñ nh ngh ĩa b ng truy h i ho c ñ nh ngh ĩa b ng ñ quy và nó cho m t công th c g i là công th c truy h i. Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 16
- ð nh ngh ĩa: ð nh ngh ĩa b ng truy h i bao g m các quy t c ñ xác ñ nh các ñ i tư ng, trong ñó có m t s quy t c dùng ñ xác ñ nh các ñ i t ư ng ban ñ u g i là các ñi u ki n ban ñ u; còn các quy t c khác dùng ñ xác ñ nh các ñ i t ư ng ti p theo g i là công th c truy h i. Thí d 1. Dãy s a n ñư c ñ nh ngh ĩa b ng ñ quy nh ư sau: a0 = 3; a n = a n – 1 + 3. Trong ñó a 0 = 3 là ñi u ki n ban ñ u, còn a n = a n – 1 + 3 là công th c truy h i. Thí d 2. ð nh ngh ĩa b ng ñ quy giai th a c a s t nhiên n là: GT(0) = 1; GT(n) = n.GT(n – 1). Vì GT(n) = n! = n(n-1)(n-2) 1 = n.GT(n-1). Trong ñó GT(0) = 1 là ñi u ki n ban ñ u, còn GT(n) = n.GT(n – 1) là công th c truy h i. Thí d 3. Dãy s F 0, F 1, F 2, , F n ñư c ñ nh ngh ĩa: F0 = 0; F 1 = 1; F n = F n – 1 + F n – 2 . ðó chính là ñ nh ngh ĩa b ng ñ quy c a dãy s có tên là dãy Fibonacci. Trong ñó F0 = 0, F 1 = 1 là các ñi u ki n ban ñ u, còn F n = F n – 1 + F n – 2 là công th c ñ quy. D th y m t s s h ng ñ u tiên c a dãy là: 0; 1; 1; 2; 3; 5; 8; 13; 21; 6.2. Thu t toán ñ quy. Nhi u khi vi c gi i bài toán v i ñ u vào xác ñ nh có th ñưa v vi c gi i bài toán ñó v i giá tr ñ u vào nh h ơn. Ch ng h n: n! = n . (n-1)! hay UCLN(a, b) = UCLN(a mod b, b) , a > b ð nh ngh ĩa: M t thu t toán g i là ñ quy n u thu t toán ñó gi i bài toán b ng cách rút g n liên ti p bài toán ban ñ u t i bài toán c ũng nh ư v y nh ưng v i d li u ñ u vào nh hơn. D th y c ơ s c a thu t toán là công th c truy h i. Thí d 1. Tính giai th a c a s t nhiên n b ng ñ quy. Function GT(n); Input: S t nhiên n; Output: Giá tr c a n!; Begin if n = 0 then GT(0) := 1 else GT(n) := n*GT(n – 1); End; Thí d 2. Tính s h ng c a dãy Fibonacci b ng ñ quy. Function Fibonacci(n); Input: V trí th n c a dãy Fibonacci; Output: Giá tr F n c a dãy Fibonaci; Begin Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 17
- if n = 0 then Fibonacci(0) := 0 else if n = 1 then Fibonacci(1) := 1 else Fibonacci(n) := Fibonacci(n-1) + Fibonacci(n-2); End; Thí d 3. Thu t toán ñ quy tìm UCLN(a, b). Function UCLN(a, b); Input: Hai s nguyên d ươ ng a và b; Output: Ư c s chung l n nh t c a a và b; Begin if b = 0 then UCLN(a, b) := a else if a > b then UCLN(a, b) := UCLN(a mod b, b) else UCLN(a, b) := UCLN(b mod a, a); End; Bây gi chúng ta th tìm ñ ph c t p v th i gian c a m t vài thu t toán vi t b ng ñ quy. Ch ng h n xét thu t toán ñ quy tính s h ng c a dãy Fibonacci, ñ tính F n ta bi u di n F n = F n – 1 + F n – 2 , sau ñó thay th c hai s này b ng t ng c a hai s Fibonacci b c th p h ơn. Quá trình ti p t c nh ư v y cho ñ n khi F 0 và F 1 xu t hi n thì ñư c thay b ng các giá tr c a chúng trong ñ nh ngh ĩa. M i b ư c ñ quy cho t i khi F 0 và F 1 xu t hi n, các s Fibonacci ñư c tính hai l n. Ch ng h n gi n ñ cây hình 2 cho ta hình dung cách tính F 5 theo thu t toán ñ quy. T ñó có th th y r ng ñ tính F n c n th c hi n F n + 1 – 1 phép c ng. F 5 F F 4 3 F 3 F 2 F 2 F 1 F 2 F1 F 1 F0 F1 F 0 F 1 F 0 Hình 2. L ư c ñ tính F 5 b ng ñ quy ð ph c t p c a thu t toán ñ quy tìm ư c s chung l n nh t c a hai s nguyên dươ ng a, b (thí d 3): UCLN(a,b) = UCLN(a mod b,b), n u a ≥ b (a mod b là ph n d ư khi chia a cho b) ñư c ñánh giá b ng cách ng d ng dãy Fibonacci. Tr ư c h t b ng quy n p toán h c chúng ta ch ng minh s h ng t ng quát c a dãy Fibonacci th a mãn: Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 18
- n – 2 1 + 5 F n > α , ∀n ≥ 3, trong ñó α = . (1) 2 Th t v y: Ta có: α α ñúng v i n, xét v i n+1. D th y α là m t nghi m c a ph ươ ng trình x2 – x – 1 = 0 nên suy ra α2 = α + 1. T ñó: αn – 1 = α2αn – 3 = ( α + 1) αn – 3 = αn – 2 + αn – 3 . n – 3 n – 2 Theo gi thi t quy n p, n u n ≥ 4, ta có F n – 1 > α và F n > α . Thay vào ñ nh ngh ĩa c a dãy Fibonacci: n – 2 n – 3 n – 1 Fn + 1 = F n + F n – 1 > α + α = α n – 2 V y F n > α , ∀n ≥ 3. Công th c (1) ñư c ch ng minh. Tr l i thu t toán ñ quy tìm ư c s chung l n nh t c a hai s nguyên d ươ ng a, b (a ≥ b). ð ph c t p c a thu t toán ñư c ñánh giá qua s l ư ng các phép chia dùng trong thu t toán này. ð t r 0 = a, r 1 = b, ta có: r 0 = r 1q1 + r 2; 0 ≤ r 2 α v i n > 2 và α = nên b > α . 2 n −1 1 T ñó: lgb > (n – 1) lg α > ( vì lg α ≈ 0,208 > ). 5 5 V y: n – 1 < 5lgb ⇒ n < 5lgb + 1 = O(lgb). Tr ư ng ð i h c Nông nghi p Hà N i – Giáo trình Giáo trình Toán R i r c . 19