Tải bản đầy đủ (.pdf) (71 trang)

Giáo trình môn học toán ứng dụng nghề quản trị mạng máy tính (trình độ cao đẳng nghề)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (833.49 KB, 71 trang )

BỘ LAO ĐỘNG ­ THƯƠNG BINHVÀ XàHỘI
TỔNG CỤC DẠY NGHỀ

GIÁO TRÌNH

Mơn học: TỐN ỨNG DỤNG
NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH
TRÌNH ĐỘ: CAO ĐẲNG NGHỀ
( Ban hành kèm theo Quyết định số:120/QĐ­TCDN ngày 25 tháng 02 năm 2013 của Tổng  
cục trưởng Tổng cục dạy nghề)

Hà Nội, năm 2013


TUN BỐ BẢN QUYỀN:
Tài liệu này thuộc loại sách giáo trình nên các nguồn thơng tin có thể được phép 
dùng ngun bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử  dụng với mục đích kinh doanh 
thiếu lành mạnh sẽ bị nghiêm cấm.
MàTÀI LIỆU: MH 11


3

LỜI GIỚI THIỆU
Trong những năm qua, dạy nghề đã có những bước tiến vượt bậc cả về số lượng và  
chất lượng, nhằm thực hiện nhiệm vụ đào tạo nguồn nhân lực kỹ thuật trực tiếp đáp ứng  
nhu cầu xã hội. Cùng với sự  phát triển của khoa học cơng nghệ  trên thế  giới, lĩnh vực 
Cơng nghệ thơng tin nói chung và ngành Quản trị mạng ở Việt Nam nói riêng đã có những  
bước phát triển đáng kể.
Chương trình dạy nghề  Quản trị  mạng đã được xây dựng trên cơ  sở  phân tích nghề, 


phần kỹ năng nghề được kết cấu theo các mơđun. Để  tạo điều kiện thuận lợi cho các cơ 
sở  dạy nghề  trong q trình thực hiện, việc biên soạn giáo trình theo các mơđun đào tạo  
nghề là cấp thiết hiện nay.
Mơn học 11: Tốn  ứng dụng là mơnhọc đào tạo nghề  được biên soạn theo hình thức 
tích hợp lý thuyết và thực hành. Trong q trình thực hiện, nhóm biên soạn đã tham khảo 
nhiều tài liệu liên quan, kết hợp với các kinh nghiệm trong thực tế. 
Mặc dầu có rất nhiều cố  gắng, nhưng khơng tránh khỏi những khiếm khuyết,   rất 
mong nhận được sự đóng góp ý kiến của độc giả để giáo trình được hồn thiện hơn.
                         Xin chân thành cảm ơn!
Hà Nội, ngày 25 tháng 02 năm 2013
Tham gia biên soạn

1. Chủ biên ThS. Nguyễn Như Thành
2. ThS. Ngơ Thị Thanh Trang

MỤC LỤC
TỐN ỨNG DỤNG
Mã mơn học: MH11

I. VỊ TRÍ, TÍNH CHẤT, Ý NGHĨA VÀ VAI TRỊ CỦA MƠN HỌC:
­ Vị trí: Mơn học được bố trí sau khi sinh viên học xong các mơn học chung.


4
­ Tính chất: Là mơn học cơ sở nghề.
­ Ý nghĩa: Đây là mơ đun đào tạo chun mơn nghề, cung cấp cho sinh viên các kỹ năng 
cơ bản nhất của nghề Quản trị mạng.

II. MỤC TIÊU MƠN HỌC:
­ Vận dụng các kiến thức đã sinh viên viên xây dựng các thuật tốn tính : tổ hợp, hốn vị,  

giải hệ phương trình, phương trình, tính tích phân;
­ Sử  dụng các kiến thức đã sinh viên viên xây dựng thuật tốn quay lại, các bài tốn tối 
ưu, bài tốn tồn tại;
­ Là nền tảng để sinh viên học mơn cấu trúc dữ liệu và giải thuật, cài đặt các thuật tốn 
trong tin học;
­ Bố trí làm việc khoa học đảm bảo an tồn cho người và phương tiện học tập.
III. NỘI DUNG CỦA MƠN HỌC:
Số TT
I

II

III

IV

Tên chương, 
mục
Quan   hệ   ­ 
Suy   luận 
tốn học
Quan hệ  hai 
ngơi
Suy   luận 
tốn học
Ma   trận   và 
thuật tốn
Ma trận
Thuật tốn 
Tính   tốn 

và xác suất
Tính tốn
Xác suất
Phương 
pháp tính
Số xấp xỉ và 
sai số
Giải   gần 
đúng   các 
phương 
trình
Giải   hệ 
thống 

Thời gian 
Tổng số

Lý thuyết

Thực hành 
Bài tập

Kiểm tra*
LT hoặc TH

6

5

1


12

9

2

1

18

13

4

1

24

18

5

1


5
phương 
trình   đại   số 
tuyến tính

Nội   suy   và 
phương 
pháp   bình 
phương   cực 
tiểu
Cộng

60

45

12

3

Chương 1. QUAN HỆ VÀ SUY LUẬN TỐN HỌC
Mã chương: MH11­01
Mục tiêu:
­ Trình bày được các phép tốn trong quan hệ hai ngơi;
­ Trình bày được thứ tự các phép tốn trong biểu thức;
­ Biến đổi chính xác các quan hệ tương đương trong các bài tốn theo dạng quan hệ;
­ Trả lời chính xác các bảng trắc nghiệm về quan hệ hai ngơi và suy luận tốn học;
­ Kiểm tra tính đúng của một chương trình cụ thể;
­ Áp dụng được giải thuật quy nạp và đệ qui;
­ Thực hiện các thao tác an tồn với máy tính.
Nội dung:
Quan hệ hai ngơi
Mục tiêu:
­ Trình bày được các phép tốn trong quan hệ hai ngơi;
­ Trình bày được thứ tự các phép tốn trong biểu thức;

­ Biến đổi chính xác các quan hệ tương đương trong các bài tốn theo dạng quan hệ.
1. Khái niệm về quan hệ hai ngơi
Giả sử cho tập X khác rỗng và một tính chất được thoả mãnvới một sốcặp phần tử 
a, b nào đó của X . Khi đó ta nói a có quan hệ với bvà viết a b, cịn  được gọi là một quan  
hệ hai ngơi trong X.
Ví dụ 1.1:
1) Trong tập R mọi số  thực, quan hệ  “a = b” hoặc quan hệ “a  b” là quan hệ  hai  
ngơi.
2) Trong tập mọi đường thẳng trên mặt phẳng, quan hệ vng góc giữa hai đường  
thẳng là quan hệ hai ngơi.
3) Trên tập N* các số ngun dương, “ a là ước số của b” là quan hệ hai ngơi.
4) Trên tập P(E) các phân tập của tập E quan hệ bao hàm A B là quan hệ hai ngơi.
2. Các tính chất có thể có của quan hệ trong một tập hợp


6
Quan hệ  trong tập X (tức X2) có thể có các tính chất sau:
­ Tính phản xạ : a  a a  X (tức là (a, a)a X )
­ Tính đối xứng : a b  b a (tức nếu (a, b)  thì (b, a)  )
­ Tính phản đối xứng : (ab và ba ) a = b
­ Tính bắc cầu : (ab) và (bc) ac
Ví dụ 1.2:
Trong tập hợp P(X) các phân tập của tập hợp X quan hệ bao hàm A B có tính phản  
xạ, phản đối xứng và bắc cầu mà khơng có tính đối xứng.
Trong tập hợp mọi đa thức của một biến số thực, quan hệ bằng nhau có tính phản 
xạ, đối xứng và bắc cầu.
3. Quan hệ tương đương
Quan hệ  trong tập X   gọi là quan hệ  tương đương nếu nó có tính phản xạ, đối  
xứng, bắc cầu.
Trong trường hợp này, ta viết a ~ b thay vì ab .

Ví dụ1.3: Quan hệ song song giữa các đường thẳng trong tập mọi đường thẳng của 
khơng gian (coi 2 đường thẳng trùng nhau là song song); quan hệ đồng dạng giữa các tam 
giác; quan hệ cùng tỉnh của một tập hợp dân một thành phố là các ví dụ trực quan của quan  
hệ tương đương.
Các lớp tương đương :
Giả   sử   ~   là   một   quan   hệ   tương   đương   trong   X.   Với   mỗi   phần   tử   aX,  
ta ký hiệu C(a) là tập hợp mọi phần tử thuộc X tương đương với a và gọi nó là lớp tương 
đương chứa a.
C(a) = {xX / x ~ a}
Do   tính   phản   xạ   a   ≈   a   nên   mỗi   tập   con   C(a)   không   rỗng.   Hơn   nữa   nếu  
C(a)C(b)Ø thì c(a) = c(b).
Thật vậy, giả sử cC(a)C(b), thì ta có :
cC(a) và cC(b)
Tức là c ~ a và c ~ b, hay b ~ c ~ a. Từ đó do tính chất bắc cầu, suy ra b ~ a, vậy  
bC(a).
Lập luận tương tự ta cũng có aC(b), tức là C(a) = C(b).
Từ đó rút ra được định lý :
Một quan hệ  tương đương trong X xác định một phân hoạch của X, mỗi phần tử 
của phân hoạch này là một lớp tương đương.
Họ các lớp tương đương này được gọi là tập thương, ký hiệu X/~.
Ví dụ 1.4: Trong tập các số ngun Z.
Xét quan hệ R : 
aba – b = 2p a, b, p  Z.
Ta có :
(a a) 
a – a = 2p (p = 0)
phản xạ
(a b)
a – b = 2p  (b – a) = ­2p (b a)
đối xứng

a – b = 2p, b – c = 2q 


7
(a – c) = (a – b) + (b – c) = 2(p + q)
bắc cầu
Vậy là một quan hệ tương đương.
Ta có : a = b + 2p
­ Lớp tương đương ứng với b = 0 là các số chẳn.
­ Lớp tương đương ứng với b = 1 là các số lẻ.
4. Quan hệ thứ tự
Định nghĩa 1.1:Quan hệ trong X gọi là quan hệ thứ tự (hay quan hệ bộ phận) nếu  
có tính phản đối xứng và bắc cầu.
Nếu ngồi ra với bất kỳ hai phần tử nào xX, y Y  đều có xy hoặc yx thìgọi là quan 
hệ thứ tự tồn phần (hay thứ tự tuyến tính).
Khilà một quan hệ thứ tự trong X ta nói X được xếp thứ tự bởivà thayvìxy  ta viết x  
y và đọc “x bé hơn y” hoặc “x đi trước y”. Ta cũng viết y  x và đọc “y lớn hơn x” hoặc “y  
đi sau x”.
Nếu x y  và x  y ta viết x < y (hay y > x).
Ví dụ 1.5: 
Quan hệ  < hoặcthơng thường trong tập hợp các số  thực là quan hệ  thứ  tự  tồn 
phần, R là tập được sắp thứ tự.
Quan hệ bao hàm trong tập P(X) mọi tập con của tập X là quan hệ thứ tự bộ phận.  
Tuy nhiên nó khơng là thứ tự tồn phần.
Quan hệ  “a b” tức a là bội số  của b trong N* là quan hệ  thứ  tự  bộ  phận. Tập X  
trong đó đã xác định một quan hệ thứ tự gọi là tập đựoc sắp xếp.
Suy luận tốn học
Mục tiêu:
­ Trình bày chính xác về quy nạp tốn học và đệ quy;
­ Kiểm tra tính đúng của một chương trình cụ thể;

­ Áp dụng được giải thuật quy nạp và đệ quy.
2.1. Quy nạp tốn học
Nhiều định lý phát biểu rằng P(n) là đúng với mọi n ngun dương, trong đó P(n) là  
một hàm mệnh đề. Quy nạp tốn học là một kỹ  thuật chứng minh các định lý thuộc loại 
như thế. Nói cách khác quy nạp tốn học thường được sử dụng để chứng minh các mệnh  
đề  P(n), trong đó n là số ngun dương tuỳ ý.
Qua trình chứng minh P(n) là đúng với mọi số ngun dương n bao gồm hai bước :
Bước cơ sở : Chỉ ra mệnh đề P(1) là đúng.
Bước quy nạp : chứng minh phép kéo theo P(n)    P(n + 1) là đúng với mọi số 
ngun dương n, trong khi đó người ta gọi P(n) là giả thiết quy nạp.
Khi hồn thành cả hai bước chúng ta đã chứng minh P(n) là đúng với mọi n ngun 
dương, tức là đã chứng minh P(n) là đúng.
Ví dụ 2.1: Bằng quy nạp tốn học hãy chứng minh rằng tổng n số ngun dương lẻ 
đầu tiên là n2.


8
Giải: Gọi P(n) là mệnh đề “tổng n số ngun dương lẻ đầu tiên là n2”. Đầu tiên ta 
cần làm bước cơ sở, tức là phải chỉ ra P(1) là đúng. Sau đó phải chứng minh bước quy nạp, 
tức là cần chỉ ra P(n + 1) là đúng nếu giả sử P(n) là đúng.
Bước cơ sở : P(1) hiển nhiên là đúng vì 1 = 12.
Bước quy nạp : Giả sử P(n) đúng, tức là với mọi n ngun dương lẻ ta có :
1+3+5+…+(2n­1) = n2
Ta phải chỉ ra P(n+1) là đúng, tức là :
1+3+5+…+(2n­1)+(2n+1) = (n+1)2
Do giả thuyết quy nạp ta suy ra : 
1+3+5+…+(2n­1)+(2n+1)
= [1+3+5+…+(2n­1)]+(2n+1)
= n2+(2n+1) = (n+1)2
Đẳng thức này chứng tỏ P(n+1) được suy ra từ P(n).

Vì P(1) là đúng và vì mệnh đề  kéo theo. P(n) P(n + 1) là đúng với mọi n ngun 
dương, theo ngun lý quy nạp tốn học chỉ ra rằng P(n) là đúng với mọi n ngun dương.
2.2. Định nghĩa bằng đệ quy
Đơi khi chúng ta rất khó định nghĩa một đối tượng một cách tường minh, nhưng có  
thể dễ dàng địng nghĩa đối tượng này qua chính nó.Kỹ thuật này được gọi là đệ quy.
1.i.1.a.
Các hàm được định nghĩa bằng đệ quy
Để định nghĩa một hàm xác định trên tập các số ngun khơng âm, chúng ta cho:
Giá trị của hàm tại n = 0.
Cơng thức tính giá trị  của nó tại số  ngun n từ  các giá trị  của nó tại các số 
ngun nhỏ hơn.
Định nghĩa như thế được gọi là định nghĩa đệ quy hay định nghĩa quy nạp.
Ví dụ 2.2: Giả sử f được định nghĩa bằng đệ quy như sau :
f(0) = 3, f(n+1) = 2f(n)+3
Hãy tìm f(1), f(2), f(3) và f(4).
Giải : Từ định nghĩa đệ quy ta suy ra :
f(1) = 2f(0) + 3 = 2.3 + 3 = 9
f(1) = 2f(1) + 3 = 2.9 + 3 = 21
f(1) = 2f(2) + 3 = 2.21 + 3 = 45
f(1) = 2f(3) + 3 = 2.45 + 3 = 93
Trong một số  định nghĩa hàm bằng đệ  quy, người ta cho giá trị  của hàm tại k số 
ngun  dương đầu tiên và cho qui tắc tính giá trị của hàm tại số ngun dương lớn hơn từ 
k giá trị này. Theo ngun lý thứ hai của quy nạp tốn học thì cách định nghĩa này tạo ra các 
hàm hồn tồn xác định.
1.i.1.b.
Các tập hợp được định nghĩa bằng đệ quy
Các tập hợp thường được định nghĩa bằng đệ  quy.Trước tiên người ta đưa ra tập  
xuất phát.Sau đó là quy tắc tạo các phần tử mới từ các phần tử đã biết của tập.Những tập  



9
đuợc mơ tả  bằng cách như  vậy được gọi là các tập được dịnh nghĩa tốt, các định lý về 
chúng có thể chứng minh bằng cách sử dụng định nghĩa đệ quy của chúng.
Ví dụ 2.3: Giã sử S được định nghĩa bằng đệ quy như sau :
3 S;
x+y  S nếu x S và y  S;
Hãy chỉ ra rằng S là tập các số ngun chia hết cho 3.
Giải : Gọi A là tập các số ngun dương chia hết cho 3. Để chúng minh A = S ta sẽ 
chứng minh rằng A là một tập con của S và S là tập con của A. Để  chứng minh A là tập  
con của S, giả sử P(n) là mệnh đề “3n thuộc tập S”. P(1) đúng vì theo định nghĩa của S “3.1  
=3S”.
Giả sử P(n) đúng, tức là 3nS. Vì 3Svà  3nSnên theo định nghĩa 3+3n = 3(n+1)S. Điều  
này có nghĩa là P(n+1) đúng. Theo quy nạp tốn học mọi số  có dạng 3n, với n ngun  
dương, thuộc S, hay nói cách khác A là tập con của S.
Ngược lại, 3S, hiển nhiên 3 chia hết cho 3 nên 3A. Tiếp theo ta chứng minh tất cả 
các phần tử của S sinh ra do phần tử thứ 2 của định nghĩa, cũng thuọcc A. Giả  sử x, y là  
hai phần tử của S, cũng là hai phần tử  của A. Theo định nghĩa của S thì x+y cũng là một 
phần tử của S, vì x và y đều chia hết cho 3 nên x+y cũng chia hết cho 3, tức là x+yA. Vậy  
S là tập con của A.
Định nghĩa đệ quy thường được dùng khi nghiên cứu các xâu kí tự. Xâu là một dãy 
kí tự thuộc bộ chữ cái. Tập hợp các xâu ứng với bộ chữ cái được ký hiệu bởi *. Hai xâu có  
thể kết hợp với nhau theo phép ghép. Ghép các xâu x và y cho xy là xâu tạo nên bằng cách  
viết tiếp xâu y vào xâu x. Ví dụ  : cho x = abra, y = cadabra, khi đó xy = abracadabra. Khi  
chứng minh các kết quả về xâu người ta thường dùng định nghĩa đệ quy.
Ví dụ2.4: Định nghĩa đệ quy của tập các xâu.
Giả sử * là tập các xâu trên bộ chữ cái. Khi đó* được định nghĩa bằng đệ quy như 
sau :
*, trong đó  là một xâu rỗng (khơng có phần tử nào);
x* nếu * và x .
Phần đầu của định nghĩa nói rằng xâu rỗng thuộc*.Phần sau khẳng định bằng một xâu mới 

tạo nên bằng cách ghép một kí tự củavới một xâu của* cũng thuộc*.
Độ dài của xâu, tức là số kí tự trong xâu, cũng được định nghĩa bằng đệ quy.
Ví dụ2.5: Hãy định nghĩa bằng đệ quy độ dài của xâu. 
Giải:Ta kí hiệu độ dài của  là 1(). Khi đó định nghĩa đệ quy của 1() như sau :
1() = 0, trong đó là xâu rỗng;
1(x) = 1() + 1 nếu * và x .
2.3. Các thuật tốn đệ quy
Định nghĩa 2.1:Một thuật tốn được gọi là đệ  quy nếu nó giải bài tốn bằng các 
cách rút gọn liên tiếp bài tốn ban đầu tới bài tốn cũng như vậy nhưng có dữ liệu vào nhỏ 
hơn.


10
Ví dụ 2.6: Tìm thuật tốn đệ quy tính giá trị a n và a là số thực khác khơng và n là số 
ngun khơng âm.
Giải : Ta xây dựng thuật tốn đệ quy như định nghĩa đệ quy của an , đó là an = a.an­1 
với n >0 và khi n = 0 thì a0 = 1. Vậy để tính an ta quy về các trường hợp có số mũ nhỏ hơn, 
cho tới khi n = 0. Xem thuật tốn 1 sau đây :
Thuật tốn 1: thuật tốn đệ quy tínhan
Procedure power(a: số thực khác khơng ; n: số ngun khơng âm);
Begin
if n = 0 then power(a,n): = 1
elsepower(a,n): = a * power(a,n – 1);
End;
Định nghĩa đệ quy biểu diễn giá trị của hàm tại một số ngunqua giá trị của nó tại 
các số ngun nhỏ hơn.Điều này có nghĩa là ta có thể xây dựng một thuật tốn đệ quy tính 
giá trị của hàm được định nghĩa bằng đệ quy tại một điểm ngun.
Ví dụ 2.7: Thủ tục đệ quy sau đây cho ta giá rị của n! với n số ngun dương.
Giải: Ta xây dựng thuật tốn đệ quy như định nghĩa đệ quy của n! , đó là n! = n.(n­
1)! với n>1 và khi n = 1 thì 1!=  1. 

Thuật tốn 2: thuật tốn đệ quy tính giai thừa
Procedure factorial(n: ngun dương);
Begin
if n = 1 then factorial(n): = 1
elsefactorial(n): =  n * factorial(n – 1);
End;
Có cách khác tính hàm giai thừa của một số  ngun từ  định nghĩa đệ  quy của  
nó.Thay cho việc lần lược rút gọn việc tính tốn cho các giá trị  nhỏ  hơn, chúng ta có thể 
xuất phát từ giá trị của hàm tại 1 và lần lược áp dụng định nghĩa đệ quy để tìm giá trị của  
hàm tại các số ngun lớn dần.Đó là thủ tục lặp. Nói cách khác để tìm n! ta xuất phát từ n! 
= 1 (với n = 1), tiếp theo lần lượt nhân với các số  nguncho tới khi bằng n. Xem thuật  
tốn 3:
Thuật tốn 3: Thủ tục lặp tính giai thừa
Procedure  factorial(n: ngun dương);
Begin
x : = 1;
for i : = 1 to n
x : = i*x;
End; {x là n!}
2.4. Tính đúng đắn của chương trình
Mở đầu
Giả sử rằng chúng ta thiết kế được một thuật tốn để  giải một bài tốn nào đó và  
dã viết chương trình để thể hiện nó. Liệu ta có thể tin chắc rằng chương trình có ln ln  
cho lời giải đúng hay khơng ?Sau khi tất cả các sai sót về mặc cú pháp được loại bỏ, chúng 
ta có thể  thử  chương trình với các đầu vào mẫu.Tuy nhiên, ngay cả  khi chương trình cho  
kết quả  đúng với tất cả  các đầu vào mẫu, nó vẫn có thể  ln ln tạo ra các câu trả  lời  


11
đúng (trừ  khi tất cả  các đầu vào đều đã được thử).Chúng ta cần phải chứng minh rằng 

chương trình ln ln cho đầu ra đúng.
Kiểm chứng chương trình
Một chương trình gọi là đúng đắn nếu với mọi đầu vào khả  dĩ, nó cho đầu ra 
đúng.Việc chứng minh tính đúng dắn của chương trình gồm hai phần.Phần đầu chỉ ra rằng 
nếu chương trình kết thúc thì nhận được kết quả  đúng.Phần này xác minh  tính đúng đắn  
bộ phận của chương trình.Phần thứ hai chứng tỏ chương trình ln ln là kết thúc.
Để định rõ thế nào là một chương trình cho thơng tin ra đúng, người ta thường dùng 
hai mệnh đề sau :
­ Thứ nhất là khẳng định đầu, nó đưa ra những tính chất mà thơng tin đầu vào cần  
phải có.
­ Mệnh đề thứ  hai là khẳng định cuối, nó đưa ra những tính chất mà thơng tin đầu  
ra cần phải có, tùy theo mục đích của chương trình. Khi kiểm tra chương trình cần phải  
chuẩn bị các khẳng định đầu và khẳng định cuối.
Định nghĩa 2.2:Chương trình hay đoạn chương trình S được gọi là đúng đắn bộ 
phận đối với khẳng định đầu p và khẳng định cuối q, nếu p là đúng với các giá trị vào của  
S và nếu S  kết thúc thì q là đúng với các giá trị ra của S. Ký hiệu p{S}q có nghĩa là chương  
trình hay đoạn chương trình S là đúng đắn bộ  phận đối với khẳng định đầu p và khẳng 
định cuối q.
Chú ý:Khái niệm đúng đắn bộ  phận khơng đề  cập tới việc chương trình có kết 
thúc hay khơng. Nó chỉ  nhằm kiểm tra xem chương trình có làm được cái mà nó định làm 
hay khơng, nếu nó kết thúc.
Câu lệnh điều kiện 
Trước tiên, chúng ta sẽ  trình bày những quy tắc suy luận đối với câu lệnh điều 
kiện. Giả sử một đoạn chương trình có dạng :
If điều­kiện  then
S
Trong đó S là một khối lệnh.Khối S sẽ được thi hành nếu điều kiện là đúng và S sẽ 
khơng được thi hành nếu điều kiện là sai.
Tương tự, giả sử một đoạn chương trình có dạng :
If điều­kiện  then

S1
Else
   S2
Nếu  điều kiện  là đúng thì S1  được thi hành, nếu  điều kiện  là sai thì S2  được thi 
hành.
Bất biến vịng lặp
Tiếp theo chúng ta sẽ trình bày cách chứng minh tính đúng đắncủa vịng lặp While. 
Để xây dựng quy tắc suy luận cho đoạn chương trình dạng :
While điều­kiện


12
   S
Hãy lưu ý rằng S được lặp đi lặp lại cho tới khi nào điều kiện trở  nên sai. Ta gọi  
một điều khẳng định nà đó là bất biến vọng lặp nếu nó vẫn cịn đúng sau mỗi lần S thi  
hành.

Bài tập chương 11­01
Bài 1:Dùng quy nạp tốn học chứng minh rằng:
a. 1+3+5+…+2n­1 = n2
n ngun dương.
b. 1 + 2 + 22 + … + 2n = 2n+1 ­1 n≥0 và ngun.
c. 12 + 22 + … + n2 = n≥0 và ngun.
d. 1.2 + 2.3 + …+ n(n+1) = n ngun dương.
Bài 2:Chứng minh đẳng thức sau đúng với mọi n > 1, a > ­1 và a   0
(1 + a)n> 1 + na


13
Bài 3:Một dãy số  a0, a1, a2 , ... an, ... có tính chất sau : a 0 = 0, an = 2an­1 + 3 với mọi n   1. 

Tìm nghiệm của cơng thức truy hồi trên.Viết thuật tốn đệ quy tính số hạng tổng qt an.
Bài 4:Một dãy a0 , a1,  a2, ...  an ... có tính chất sau: a0 = 0,  a1 = 1,  an = an­1+ an­2 với mọi n 
2 được gọi là dãy Fibonacci.Tìm nghiệm của cơng thức truy hồi trên.Viết thuật tốn đệ 
quy tính số hạng tổng qt an.
Bài 5: Hãy tìm f(1), f(2) và f(3) nếu f(n) được định nghĩa bằng đệ  quy với f(0)=1 và với 
n=1,2,…
a. f(n)=3.f(n­1)
b. f(n)=f(n­1)2 + f(n­1) + 1
Bài 6: Hãy tìm f(2), f(3) và f(4) nếu f(n) được định nghĩa bằng đệ  quy với f(0)= ­1, f(1)=2  
và n=2,3,…
a. f(n)=f(n­1)+3f(n­2)
b. f(n)=3f(n­1)2 – 4f(n­2)2
c. f(n)=f(n­2)/f(n­1)
Bài 7:Hãy cho định nghĩa đệ quy của hàm F(n)= trong đó a là một số thực và n là một số 
ngun dương. Viết thuật tốn đệ quy tính 
Bài 8:Xét 2 tập có thứ  tự E và F, trong đó thứ  tự cho bởi :  1 trên cả 2 tập hợp. Hãy xác 
định quan hệ  sau đây. Xác định trên E x F có phải là quan hệ thứ tự khơng ?
(x, y)  (x’, y’) <=>
Bài 9:
Cho F: E ­> F và T là ánh xạ tương đương trên F. Người ta xác định quan hệ  trên E  
bởi x  y f (x) T f(y).
Chứng minh rằng  cũng là quan hệ tương đương.

Hướng dẫn thực hiện bài tập chương 11­01
Bài 1:
a. Dùng hằng đẳng thức a2+2ab+b2=(a+b)2
b. Dùng đẳng thức  an.am=am+n
c. Dùng phương pháp đặt thừa số chung.
d. Dùng phương pháp đặt thừa số chung.
Bài 2:

Bài 3:

m+n

Dùng đẳng thức a

=am.an

Sử dụng phương trình đặc trưng cho cơng thức truy hồi tuyến tính bậc hai giải tìm  
nghiệm số hạng tổng qt an. Dựa vào cơng thức truy hồi viết thuật tốn đệ quy tính an.
Bài 4:
Sử dụng phương trình đặc trưng cho cơng thức truy hồi tuyến tính bậc hai giải tìm  
nghiệm số hạng tổng qt an. Dựa vào cơng thức truy hồi viết thuật tốn đệ quy tính an.
Bài 5:


14
Dựa vào giả thiết là giá trị đầu f(0)và hàm đã được định nghĩa đệ quy f(n) ta suy ra 
được các giá trị tiếp theo f(1), f(2) và f(3).
Bài 6: 
Dựa vào giả thiết là giá trị đầu f(0),f(1) và hàm đã được định nghĩa đệ quy f(n) ta 
suy ra được các giá trị tiếp theo f(2), f(3) và f(4).
Bài 7:
Dùng đẳng thức =. Từ đó suy ra kết quả.
Bài 8:
Sử dụng định nghĩa: Quan hệ trong X gọi là quan hệ thứ tự (hay quan hệ bộ phận)  
nếu có tính phản đối xứng và bắc cầu.
Tính phản xạ : a  a a  X (tức là (a, a) a X )
Tính đối xứng : a b  b a (tức nếu (a, b)  thì (b, a)  )
Tính bắc cầu : (a b) và (b c) a c

Bài 9:
Sử dụng định nghĩa: Quan hệ  trong tập X  gọi là quan hệ  tương đương nếu nó có  
tính phản xạ, đối xứng, bắc cầu.

Chương 2. MA TRẬN VÀ THUẬT TỐN
Mã chương: MH11­02
Mục tiêu:
­ Thực hiện các phép tốn đối với một ma trận (ma trận 2 chiều).
­ Áp dụng triển khai các thuật tốn trên ma trận.
­ Tính tốn chính xác độ phức tạp của một thuật tốn đơn giản.
­ Trả lời chính xác các bảng test về ma trận và độ phức tạp của thuật tốn.
­ Sử dụng đúng các thuật tốn áp dụng cho ma trận.
­ Thực hiện các thao tác an tồn với máy tính.
Nội dung:
5. Ma trận
Mục tiêu:
­ Thực hiện được các phép tốn đối với ma trận;
­ Áp dụng triển khai thuật tốn cộng và nhân hai ma trận.
1.1. Mở đầu
Định nghĩa 1.1:Ma trận là một bảng số hình chữ nhật gồm mxn số thực được viết 
thành m hàng và n cột có dạng như sau :


15
mn: cấp của ma trận
aij: phần tử nằm ở hàng i cột j

A
i: chỉ thứ tự hàng (i=)
j: chỉ thứ tự cột (j=)

Ký hiệu: A=[aij]mn

Ví dụ 1.1: Ma trận
là ma trận cấp 3x4 
1.2. Số học ma trận :
a. Phép cộng hai ma trận :
Định nghĩa1.2:Cho A=[aij]mn  và B=[bij]mn. Tổng của hai ma trận A,B là ma trận 
C=[cij]mn sao cho cij = aij + bij i,j: i= ; j=
Ký hiệu: C=A+B
Ví dụ 1.2:
 +   = 
Tổng của hai ma trận có cùng kích thước nhận được bằng cách cộng các phần tử ở 
những vị  trí tương  ứng.Các ma trận có kích thuớc khác nhau khơng thể  cộng được với  
nhau, vì tổng của hai ma trận chỉ được xác định khi cả hai ma trận có cùng số hàng và cùng 
số cột.
Tính chất :Giả sử A, B là hai ma trận cùng cấp, khi đó :
A+B=B+A
(giao hốn)
A+(B+C)=(A+B)+C
(kết hợp)
b. Phép nhân hai ma trận
Định nghĩa1.3:Cho A=[aik]mq và B=[bkj]qn. Tích của ma trận A với ma
trận B là ma trận C=[cij]mn với  i,j: i=, j=
Ký hiệu: A.B hay AB
Chú ý :  Tích của hai ma trận chỉ  được xác định khi số  cột của ma trận thứ  nhất  
bằng số hàng của ma trận thứ hai.
=
=
Hình 2.1: Tích A=[aik]mq và B=[bkj]qn
Ví dụ 1.3: Cho 

Tìm AB.
Giải : Vì A là ma trận 4x3 và B là ma trận 3x2 nên tích của AB là xác định và là ma  
trận 4x2. Để  tìm các phần tử  của AB, các phần tử  tương  ứng của các hàng của A và các  
cột của B ban đầu được nhân với nhau rồi sau đó các tích đó sẽ đuợc cộng lại. Ví dụ, phần 
tử   ở  vị  trí (3,1) của AB là tổng các tích của các phần tử   ở  hàng thứ  ba của A và cột thứ 
nhất của B, cụ thể là 3.2 + 1.1 + 0.3 = 7. Khi tất cả các phần tử của AB đã được : 
Phép nhân ma trận khơng có tính chất giao hốn. Tức là nếu A và B là hai ma trận,  
thì khơng nhất thiết AB phải bằng BA. Thực tế có thể chỉ một trong hai tích đó là xác định. 


16
Ví dụ, nếu A là ma trận 2x3 và B là ma trậ 3x4, khi đó AB là xác định và là ma trận 2x4,  
tuy nhiên ma trận BA là khơng xác định vì khơng thể nhân ma trận 3x4 với ma trận 2x3.
Giả sử A là ma trận m x n và B là ma trận r x s. Khi đó AB là xác định chỉ khi n = r  
và BA là xác định chỉ khi s = m. Hơn nữa, khi AB và BA đều xác định, thì chúng cũng sẽ 
khơng cùng kích thước trừ trường hợp m = n = r = s. Do đó, nếu cả hai AB và BA xác định 
và có cùng kích thước thì cả A và B đều phải là các ma trận vng và có cùng kích thước. 
Thậm chí nếu cả A và B dều là các ma trận n x n, thì AB và BA cũng khơng nhất thiết phải 
bằng nhau, như ví dụ dưới đây cho thấy: 
Ví dụ 1.4: Cho A = 
Hỏi AB có bằng BA khơng ?
Giải : Ta tìm được
Vậy : AB    BA
Tính chất:
A cấp mxn, B cấp nxp, C cấp pxq
A.(B.C)=(A.B).C
(kết hợp)
A cấp mxn, B và cấp nxp
A.(B+C)=A.B+A.C (phân phối)
A,B cấp mxn , C cấp nxp

(A+B).C=A.C+B.C (phân phối)
c. Thuật tốn cộng hai ma trận :
Giả sử rằng C=[cij]mn, là tổng của ma trận A=[aij]mnvà ma trận B=[bij]mn. Thuật tốn 
dựa trên định nghĩa cộng ma trận được biểu diễn dưới dạng giả mã như sau : 
Thuật tốn 1: Cộng ma trận 
Procedure  cong_ma_tran (A, B: ma tran)
Begin
for i : =1 to m
for j :=1 to n 
cij := aij + bij;
End;
d. Thuật tốn nhân ma trận :
Định nghĩa của tích hai ma trận dẫn tới thuật tốn tính tích của hai ma trận. Giả sử 
rằng C=[cij]mn, là tích của ma trận A=[aiq]mkvà ma trận B=[bqj]kn. Thuật tốn dựa trên định 
nghĩa nhân ma trận được biểu diễn dưới dạng giả mã như sau : 
Thuật tốn2: Nhân ma trận 
Procedure nhan_ma_tran (A, B: ma tran)
Begin
for i : =1 to m 
forj :=1 to n
begin
cij = 0;


17
fork := 1 to q do
cij := cij + aikbkj;
end;
End; {C = [cij] là tích của A và B}
1.3. Chuyển vị và luỹ thừa các ma trận

Định nghĩa1.4: Ma trận đồng nhất (hay cịn gọi là ma trận đơn vị) bậc n là ma trận  
In=[ ij]nn với ij = 1 nếu i = jvà  ij = 0 nếu i   j. Do đó:
Nhân một ma trận với ma trận đơn vị kích thước thích hợp khơng làm thay đổi ma  
trận đó. Nói cách khác, khi A là ma trận m x n, ta có: 
Ain = ImA = A
Người ta cũng có thể  định nghĩa luỹ  thừa của các ma trận vng khi A là một ma  
trận n x n, ta có: 
Phép tốn chuyển hàng thành cột và cột thành hàng của một ma trận vng cũng 
được sử dụng trong nhiều thuận tốn.
Định nghĩa 1.5: Cho A = [aij] là ma trận cấp m x n. Chuyển vị của A được ký hiệu 
t
là A , là ma trận n x m nhận được bẳng cách trao đổi các hàng và cột của ma trận A cho  
nhau. Nói cách khác, nếu At = [bij] thì bij = aji với i = 1, 2, ..., m.
Ví dụ 1.6: Chuyển vị của ma trận 
Các ma trận khơng đổi khi trao đổi các hàng và cột của nó cho nhau thường đóng  
vai trị quan trọng.
Định nghĩa 1.6: Một ma trận vng A được gọi là đối xứng nếu A =At. Như vậy A 
= [aij] là đối xứng nếu aij = aji với mọi i và j ; 0    i    n và 0   j     n.
Chú ý rằng một ma trận là đối xứng nếu và chỉ  nếu nó là ma trận vng và đối  
xứng qua đường chéo chính của nó.Phép đối xứng này được minh hoạ trên hình 2.2.
Hình 2.2 : Ma trận đối xứng

Ví dụ 7 : Ma trận đối xứng

1.4. Các ma trận 0 ­ 1 (khơng ­ một) 
Các ma trận có các phần tử  là 0 hoặc 1 được gọi là các ma trận khơng ­ một. Các 
ma trận khơng ­ một thường được dùng để  biểu diễn các cấu trúc rời rạc. Các thuật tốn 
dùng các cấu trúc này dựa trên số học Boole cho các ma trận khơng ­ một. Số học này lại  
dựa trên các phép tốn Boole  và  thực hiện trên các cặp bit và được định nghĩa bởi:



18
Định nghĩa 1.7:Cho A = [aij] là các ma trận khơng ­ một m x n. Khi  đó hợp của A và 
B, được ký hiệu là A  B là ma trận khơng ­ một với phần tử ở vị trí (i, j) là a ij bij. Giao của 
A và B được ký hiệu là A  B, là ma trận khơng, một với phần tử ở vị trí (i, j) là aij  bij.
Ví dụ 1.7:Tìm hợp giao của các ma trận khơng – một sau :
A=  B= 
Giải :
Hợp của A và B là : 
Giao của A và B là :
Định nghĩa 1.8: Cho A = [aij] là ma trận khơng ­ một m x k và B = [b ij] là ma trận 
khơng ­ một k x n. Khi đó tích Boole của A và B được ký hiệu là A   B là ma trận m x n  
với phần tử ở vị trí (i, j) [cij] là: 
cij = (ai1
Chú ý rằng tích Boole của A và B nhận được bằng cách tương tự  với tích thơng 
thường của hai ma trận đó, nhưng với phép cộng được thay bằng phép  và với phép nhân 
được thay bằng phép . Dưới đây là ví dụ về tích Boole của các ma trận.
Ví dụ 1.9 : Tìm tích Boole của A với B, với: 
Giải : Tích Boole A  B được cho bởi:
A  B = 
= = 
Thuật tốn3 dưới dạng giả mã sau đây mơ tả  thuật tốn tính tích Boole của hai ma  
trận.
Thuật tốn 3: Tích Boole
Procedure tich_Boole(A,B: các ma trận khơng ­ một) 
Begin
for i : = 1 to m 
for j :=1 to n
begin
cij := 0;

for q :=1 to k
cij := cij  (aiq  bqj);
end;
End; {C=[cij] là tích Boole của A và B}
Chúng ta cũng  có  thể   định nghĩa  luỹ  thừa  Boole  của các  ma trận khơng ­ một 
vng.Các luỹ thừa này sẽ được dùng trong các nghiên cứu sau này về các đường trong đồ 


19
thị, các đường này được dùng, chẳng hạn để  mơ hình các đường liên lạc trong các mạng  
máy tính.
Định nghĩa 1.9: Cho A là ma tận khơng ­ một vng và r là một số ngun dương. 
Luỹ thừa Boole bậc r của A được ký hiệu là A[r] với:
(A[r] là hồn tồn xác định vì tích Boole có tính chất kết hợp)
Chúng ta cũng có thể định nghĩa A[r] là In.
Ví dụ 1.10. Cho  
Tìm  A[r] với mọi n ngun dương.
Giải : Ta thấy ngay rằng :
A[2] = AA = 
Ta cũng tìm được :
A[3] =  A[2]A =    và A[4] =  A[3]A = 
Tính thêm 1 lần nữa, ta được :
A[5] =  A[4]A = 
Có thể thấy rằng  A[n] = A[5] với mọi n ngun dương khơng nhỏ hơn 5.
Số  các phép tốn bit được dùng để  tích Boole của hai ma trận n x n cũng dễ  dàng 
xác định được.
Ví dụ 1.11: Có bao nhiêu phép tốn bit được dùng để tính A  B với A, B là các ma  
trận khơng ­ một n x n.
Giải: Có n2phép tốn bit trong A  B.
6. Thuật tốn

Mục tiêu:
­ Tính tốn chính xác độ phức tạp của thuật tốn;
­ Trả lời chính xác các bảng test về độ phức tạp của thuật tốn;
­ Ứng dụng đánh giá độ phức tạp thuật tốn trong thực tế.
7. Khái niệm thuật tốn
Định nghĩa 2.1:Thuật tố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ạnbước   thực hiện sẽ  đạt  
được mục tiêu đặt ra.
8. Các đặc trưng của thuật tốn
Đầu vào (Input): Một thuật tốn có các giá trị đầu vào từ một tập đã được chỉ rõ.
Đầu ra (Output): Từ mỗi tập các giá trị  đầu vào, thuật tốn sẽ  tạo ra các giá trị 
đầu ra. Các giá trị đầu ra chính là nghiệm của bài tốn.
Tính dừng: Sau một số hữu hạn bước thuật tốn phải dừng.
Tính xác định:  Ở  mỗi bước, các bước thao tác phải hết sức rõ ràng, khơng gây 
nên sự nhập nhằng. Nói rõ hơn, trong cùng một điều kiện hai bộ xử lý cùng thực 
hiện một bước của thuật tốn phải cho những kết quả như nhau.
Tính hiệu quả: Trước hết thuật tốn cần đúng đắn, nghĩa là sau khi đưa dữ  liệu  
vào thuật tốn hoạt động và đưa ra kết quả như ý muốn.


20
Tính phổ dụng: Thuật tốn có thể giải bất kỳ một bài tốn nào trong lớp các bài  
tốn. Cụ thể là thuật tốn có thể có các đầu vào là các bộ dữ liệu khác nhau trong  
một miền xác định.
9. Ngơn ngữ thuật tốn
Có nhiều cách trình bày thuật tốn: dùng ngơn ngữ tự nhiên, ngơn ngữ lưu đồ (sơ đồ 
khối), ngơn ngữ  lập trình. Tuy nhiên, một khi dùng ngơn ngữ  lập trình thì chỉ  những lệnh  
được phép trong ngơn ngữ đó mới có thể dùng được và điều này thường làm cho sự mơ tả 
các thuật tốn trở nên rối rắm và khó hiểu.Hơn nữa, vì nhiều ngơn ngữ lập trình đều được 
dùng rộng rãi, nên chọn một ngơn ngữ  đặc biệt nào đó là điều người ta khơng muốn.Vì  

vậy  ở  đây các thuật tốn ngồi việc được trình bày bằng ngơn ngữ  tự  nhiên cùng với  
những ký hiệu tốn học quen thuộc cịn dùng một dạng giả mã để mơ tả thuật tốn.Giả mã  
tạo ra bước trung gian giữa sự mơ tả  một thuật tốn bằng ngơn ngữ  thơng thường và sự 
thực hiện thuật tốn đó trong ngơn ngữ lập trình.Các bước của thuật tốn được chỉ rõ bằng  
cách dùng các lệnh giống như trong các ngơn ngữ lập trình.
Ví dụ 2.1:Mơ tả thuật tốn tìm phần tử lớn nhất trong một dãy hữu hạn các số ngun.
a) Dùng ngơn ngữ tự nhiên để mơ tả các bước cần phải thực hiện:
B1: Đặt giá trị  cực đại tạm thời bằng số ngun đầu tiên trong dãy. (Cực đại tạm  
thời sẽ là số ngun lớn nhất đã được kiểm tra ở một giai đoạn nào đó của thủ tục.)
B2: So sánh số ngun tiếp sau với giá trị cực đại tạm thời, nếu nó lớn hơn giá trị 
cực đại tạm thời thì đặt cực đại tạm thời bằng số ngun đó.
B3: Lặp lại bước trước nếu cịn các số ngun trong dãy.
B4: Dừng khi khơng cịn số ngun nào nữa trong dãy. Cực đại tạm thời ở điểm này  
chính là số ngun lớn nhất của dãy.
b) Dùng đoạn giả mã:
Proceduremax(a1, a2, ..., an: integers);
Begin
max:= a1;
for i:= 2 to n
if max End; {max là phần tử lớn nhất}
Thuật tốn này trước hết gán số  hạng đầu tiên a1 của dãy cho biến max.vịng lặp 
“for” được dùng để kiểm tra lần lượt các số hạng của dãy. Nếu một sốhạng lớn hơn giá  
trị hiện thời của max thì nó được gán làm giá trị mới của max.
Ví dụ 2.2: Tìm và in các số ngun tố nhỏ hơn số ngun dương n cho trước.
Giải: 
­ Bước 1: Xây dựng thủ  tục kiểm tra xem một số ngun dương m có phải là số 
ngun tố hay khơng.
­ Bước 2: Sử dụng thủ tục này ta xây dựng thuật tốn bài tốn đặt ra.
* Thuật tốn kiểm tra một số ngun dương có phải là số ngun tố hay khơng.



21
Một số ngun dương m là số ngun tố nếu như tất cả các số ngun kể từ 2 đến  
đều khơng phải là ước số của m. Do đó, trong thuật tốn ta thử xem nếu số dư của m chia  
cho tất cả các số nằm giữa 2 và  ln khác 0 thì là số ngun tố.
­ Đầu vào: số ngun dương m
­ Đầu ra: true nếu m là số ngun tố, false nếu ngược lại.
Function nguyen_to(m)
Begin
i := 2;
k := trunc(sqrt(m));
while (i<=k) and (m mod I<>0) doi:= i+1;
nguyen_to := i > k;
End;
* Thuật tốn tìm và in ra các ngun tố nhỏ hơn ngun dương n.
Thuật tốn này sử dụng thuật tốn ngun_to ở trên như là thủ tục con.
­ Đầu vào: số ngun dương n
­ Đầu ra: các số ngun tố nhỏ hơn n
Procedurelist_nguyen_to(n)
Begin 
For i:= 2 to n=1 do
ifnguyen_to (i) then write (i,”);
End;
10. Độ phức tạp của thuật tốn
11.
Khái niệm về độ phức tạp của thuật tốn
Thước đo hiệu quả của một thuật tốn là thời gian mà máy tính sử dụng để giải bài  
tốn theo thuật tốn đang xét, khi các giá trị đầu vào có một kích thước xác định. Một thước  
đo thứ hai là dung lượng bộ nhớ địi hỏi để thực hiện thuật tốn khi các giá trị  đầu vào có 

kích thước xác định. Các vấn đề  như  thế  liên quan đến độ  phức tạp tính tốn của một  
thuật tốn.Sự phân tích thời gian cần thiết để giải một bài tốn có kích thước đặc biệt nào  
đó liên quan đến độ  phức tạp thời gian của thuật tốn.Sự  phân tích bộ  nhớ  cần thiết của  
máy tính liên quan đến độ  phức tạp khơng gian của thuật tốn.Việc xem xét độ  phức tạp  
thời gian và khơng gian của một thuật tốn là một vấn đề  rất thiết yếu khi các thuật tốn  
được thực hiện.Biết một thuật tốn sẽ đưa ra đáp số trong một micro giây, trong một phút 
hoặc trong một tỉ  năm, hiển nhiên là hết sức quan trọng. Tương tự như  vậy, dung lượng  
bộ nhớ địi hỏi phải là khả dụng để giải một bài tốn,vì vậy độ  phức tạp khơng gian cũng  
cần phải tính đến.Vì việc xem xét độ  phức tạp khơng gian gắn liền với các cấu trúc dữ 
liệu đặc biệt được dùng để thực hiện thuật tốn nên ở đây ta sẽ tập trung xem xét độ phức 
tạp thời gian. 
Độ  phức tạp thời gian của một thuật tốn có thể  được biểu diễn qua số các phép  
tốn được dùng bởi thuật tốn đó khi các giá trị đầu vào có một kích thước xác định.Sở  dĩ  
độ phức tạp thời gian được mơ tả thơng qua số các phép tốn địi hỏi thay vì thời gian thực 


22
của máy tính là bởi vì các máy tính khác nhau thực hiện các phép tính sơ  cấp trong những 
khoảng thời gian khác nhau. Hơn nữa, phân tích tất cả các phép tốn thành các phép tính bit  
sơ cấp mà máy tính sử dụng là điều rất phức tạp.
Ví dụ2.3: Xét thuật tốn tìm số lớn nhất trong dãy n số a 1, a2, ..., an. Có thể coi kích 
thước của dữ liệu nhập là số lượng phần tử của dãy số, tức là n. Nếu coi mỗi lần so sánh  
hai số của thuật tốn địi hỏi một đơn vị thời gian (giây chẳng hạn) thì thời gian thực hiện 
thuật tốn trong trường hợp xấu nhất là n­1 giây. Với dãy 64 số, thời gian thực hiện thuật 
tốn nhiều lắm là 63 giây.
Ví dụ2.4: Thuật tốn về trị chơi “Tháp Hà Nội”
Trị chơi “Tháp Hà Nội” như sau: Có ba cọc A, B, C và 64 cái đĩa (có lỗ để đặt vào  
cọc), các đĩa có đường kính đơi một khác nhau. Ngun tắc đặt đĩa vào cọc là: mỗi đĩa chỉ 
được chồng lên đĩa lớn hơn nó. Ban đầu, cả  64 đĩa được đặt chồng lên nhau ở cột A; hai  
cột B, C trống. Vấn đề là phải chuyển cả 64 đĩa đó sang cột B hay C, mỗi lần chỉ được di 

chuyển một đĩa.
Xét trị chơi với n đĩa ban đầu ở cọc A (cọc B và C trống). Gọi Sn là số lần chuyển 
đĩa để chơi xong trị chơi với n đĩa.
Nếu n=1 thì rõ ràng là S1=1.
Nếu n>1 thì trước hết ta chuyển n­1 đĩa bên trên sang cọc B (giữ  n đĩa thứ  n  ở 
dưới cùng của cọc A). Số lần chuyển n­1 đĩa là S n­1. Sau đó ta chuyển đĩa thứ n từ cọc A  
sang cọc C. Cuối cùng, ta chuyển n­1 đĩa từ cọc B sang cọc C (số lần chuyển là Sn­1).
Như vậy, số lần chuyển n đĩa từ A sang C là:
Sn= Sn­1+ 1+ Sn= 2Sn­1+ 1=2(2Sn­2+ 1) + 1 = 22Sn­2+ 2 + 1 = ... = 2n­1S1+ 2n­2+ ... + 2+1 = 
2n­1.
Thuật tốn về trị chơi “Tháp Hà Nội” địi hỏi 264 ­ 1 lần chuyển đĩa (xấp xỉ 18,4 tỉ tỉ 
lần). Nếu mỗi lần chuyển đĩa mất 1 giây thì thời gian thực hiện thuật tốn xấp xỉ  585 tỉ 
năm!
Hai thí dụ  trên cho thấy rằng: một thuật tốn phải kết thúc sau một số  hữu hạn 
bước, nhưng nếu số  hữu hạn này q lớn thì thuật tốn khơng thể  thực hiện được trong 
thực tế.
Ta nói: thuật tốn trong Ví dụ  2.3 có độ  phức tạp là n­1 và là một thuật tốn hữu  
hiệu (hay thuật tốn nhanh); thuật tốn trong Ví dụ 2.4 có độ phức tạp là 2n­1 và đó là một 
thuật tốn khơng hữu hiệu (hay thuật tốn chậm).
12.
So sánh độ phức tạp thuật tốn
Thơng thường trong các ứng dụng thực tế, thời gian chính xác mà thuật tốn địi hỏi  
để thực hiện nó ít được quan tâm hơn so với việc xác định mức độ  tăng lên của thời gian  
thực hiện thuật tốn khi kích thước của dữ liệu đầu vào tăng lên. Chẳng  hạn một thuật  
tốn đang được xem xét nào đó có thời gian tính trong trường hợp tồi nhất là :t(n) = 30n2 + 
6n + 6 với đầu vào kích thước n.
n

t(n) = 30n2 + 6n + 6


30n2

10

3066

3000


23
100
1000
10000

300606
30006006
3000060006

300000
30000000
3000000000

Khi n lớn thì ta có thể lấy xấp xỉT(n) = 0.5n2 + 0.1n + 0.1 sẽ cho ta thời gian tính cho  
bằng phút. Khi mơ tả tốc độ tăng thời gian tính của thuật tốn khi kích thước đầu vào tăng 
ta chỉ quant âm đến số hạng trội (30n2), có thể bỏ qua các hằng số.
Với giả thiết như vậy, thời gian tính T(n) tăng gống như n 2 khi n tăng. Việc làm ở 
đây là thay thế biểu thức T(n) = 0.5n2 + 0.1n + 0.1 bởi n2 có cùng tốc độ tăng với T(n). Ta đi 
đến định nghĩa sau :
Định nghĩa 2.2:Giả sử f và g là các hàm đối số ngun dương.
Ta nói f(n) có bậc khơng q g(n), ký hiệu f(n) = O(g(n)), nếu tồn tại hằng số 

dương C1 và số ngun dương N1 sao cho |f(n)| C1|g(n)| với mọi n   N1.
Ta nói f(n) có bậc ít nhất là g(n), ký hiệu f(n) =   (g(n)), nếu tồn tại hằng số 
dương C2 và số ngun dương N2 sao cho |f(n)| C2|g(n)| với mọi n   N2.
Ta nói f(n) có bậc là g(n), ký hiệu, nếu f(n) = O(g(n)) và f(n) =  (g(n)).
Ví dụ 2.5: Xét hàm f(n) = 60n2 +9n +9
Do 60n2 +9n +9   60n2 +9n2 +n2 = 70n2 với mọi n 1
Chọn C1 = 70 theo định nghĩa ta có: f(n)=O(n2),
Do 60n2 +9n +9  60n2  với mọi n 1
Chọn C2 = 70 theo định nghĩa ta có: f(n)= (n2),
 Từ đó ta có f(n) =  (n2)
Định nghĩa 2.3: 
Nếu thuật tốn địi hỏi thời gian tính tốt nhất là t(n) với kích thước đầu vào n và  
t(n) = O(g(n)) ta nói thời gian tính tốt nhất của thuật tốn có bậc khơng q g(n)  
hay thời gian tính tốt nhất của thuật tốn là O(g(n)).
Nếu thuật tốn địi hỏi thời gian tính tồi nhất là t(n) với kích thước đầu vào n và  
t(n) = O (g(n)) ta nói thời gian tính tồi nhất của thuật tốn có bậc khơng q g(n)  
hay thời gian tính tồi nhất của thuậttốn là O(g(n)).
Nếu thuật tốn địi hỏi thời gian tính trung bình là t(n) với kích thước đầu vào n 
và t(n) = O(g(n)) ta nói thời gian trung bình của thuật tốn có bậc khơng q g(n)  
hay thời gian tính trung bình của thuật tốn là O(g(n)).
Trong định nghĩa trên, nếu thay O bởi   và khơng q bởi ít nhất ta có bậc ít nhất 
của thời gian tính tốt nhất, tồi nhất và trung bình của thuật tốn. Nếu thời gian tính tốt 
nhất của thuật tốn vừa là O(g(n)) vừa là  (g(n)), tá nói thời gian tính tốt nhất của thuật  
tốn là  (g(n)). Tương tự như vậy ta cũng định nghĩa thời gian tính tồi nhất và trung bình  
của thuật tốn là  (g(n)).
Cần đánh giá thời gian tính tốt nhất, tồi nhất và trung bình của thuật tốn so với 
kích thước đầu vào n. Thời gian tính của thuậ  tốn có thể  đánh giá bởi số  lần thực hiện  
câu lệnh trong vòng lặop repeat.



24
­ Nếu a1 = x thì câu lệnh i:=i+1 trong thân vịng lặp repeat thực hiện  một lần. Do đó 
thời gian tính tốt nhất của thuật tốn là  (1).
­ Nếu x khơngcó mặt trong dãy đã cho, thì câu lệnh i:=i+1 thực hiện n lần. Do đó  
thời gian tính tốt nhất của thuật tốn là  (1).
­ Cuối cùng ta tìm thời gian tính trung bình của thuật tốn. Nếu x tìm thấy  ở  vị  trí  
thứ i của dãy (x = ai) thì câu lệnh i:=i+1 phải thực hiện i lần (i = 1,2, ...n); nếu x khơng có  
mặt trong dãy đã cho thì câu lệnh i := i+1 thực hiện n lần. Từ đó suy ra số lần trung bình 
phải thực hiện câu lệnh i :=i+1 là : 
[(1+2+... + n) + n]/ (n+1)   (n2 + n)/(n + 1) = n
Vậy thời gian tính trung bình của thuật tốn là O(n).
Mặt khác, do 
[(1 + 2 + ... + n)]/(n+1)   (n2/4 + n)/(n+1)   (n2/4 + n/4)/(n+1) = n/4 nên thời gian 
tính trung bình của thuật tốn là  (n).
13.
Đánh giá độ phức tạp của thuật tốn
Một điều quan trọng cần phải biết là máy tính phải cần bao lâu để  giải xong một  
bài tốn.Thí dụ, nếu một thuật tốn địi hỏi 10 giờ, thì có thể cịn đáng chi phí thời gian máy 
tính địi hỏi để giải bài tốn đó.Nhưng nếu một thuật tốn địi hỏi 10 tỉ năm để giải một bài 
tốn, thì thực hiện thuật tốn đó sẽ là một điều phi lý. Một trong những hiện tượng lý thú 
nhất của cơng nghệ  hiện đại là sự  tăng ghê gớm của tốc độ  và lượng bộ  nhớ  trong máy 
tính. Một nhân tố quan trọng khác làm giảm thời gian cần thiết để  giải một bài tốn là sự 
xử lý song song ­ đây là kỹ thuật thực hiện đồng thời các dãy phép tính. Do sự tăng tốc độ 
tính tốn và dung lượng bộ  nhớ của máy tính, cũng như  nhờ  việc dùng các thuật tốn lợi 
dụng được ưu thế của kỹ thuật xử lý song song, các bài tốn vài năm trước đây được xem  
là khơng thể giải được, thì bây giờ có thể giải bình thường.
Các thuật ngữ thường dùng cho độ phức tạp của một thuật tốn
Dạng đánh giá

Tên gọi


(1)
(log2n)
(n)
(nlog2n)
(n2)
(n3)
(nm)
(mn), m   2
(n!)

Hằng số
Logarithm
Tuyến tính
n log n
Bậc hai
Bậc ba
Đa thức
Hàm mũ
Giai thừa

Hình 2.1: Các đánh giá thơng dụng
Trong bảng, các đánh giá được sắp xếp theo thứ tự tăng dần của tốc độ tăng (ngoại 
trừ trường hợp  (nm))


25
Bảng dưới đây cho ta thấy thời gian tính tăng như  thế  nào với các đánh giá khác  
nhau khi sử dụng đơn vị thời gian 0,001 giây (những số có đơn vị kèm theo là những số gần 
đúng).

Thời gian tính nếu n =

Đánh giá
1
log2n
n
nlog2n
n2
n3
2n
N !

2

8

32

64

0,001
1
2
2
4
8
4
2

0,001

3
8
24
64
512
256
40,3 giây

0,001
5
32
160
1,02  giây
32,7 giây
49,71 giây
8,34.1023 năm

0,001
6
24
384
4,09 giây
4,36 giây
5,85 . 108 năm
4,02.1078 năm

Hình 2.2: Thời gian máy tính được dùng bởi một thuật tốn

Bài tập chương11­02
Bài 1 : Cho   vàf(x) = 3x2­ 2x + 5. 

Hãy tính f (A)?
Bài 2 :Tìm Anvới 
Bài 3 :Hãy viết ma trận hệ số hệ phương trình :
a) 
b) 
Bài 4 : Cho ma trận :
và I là ma trận đơn vị cấp 3. 
Hãy tính A + 2I ?
Bài 5 :Cho 2 ma trận :
;
Hãy tính AB và BA ?
Bài 6 :Cho ma trận:
Hãy tính A2và A2 + 5A
Bài 7: Chứng minh rằng:
a.= O(x)
b.2n+ 17 = O(3n)
Bài 8: Tìm một số ngun n nhỏ nhất sao cho f(x)=O(xn), nếu:
a. f(x)=2x3 + x2lgx


×