thuật toánelearning.vnua.edu.vn/uploads/images/users_1341112/do... · 2019. 9. 20. · tính...

47
Thuật toán Định nghĩa Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán và độ phức tạp Thuật toán Algorithm Thuật toán Algorithm i n i := 1 + 1/47 FITA 29/08/2015 i := i + 1

Upload: others

Post on 02-Dec-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán và độ phức tạp

Thuật toán Algorithm

Thuật toán Algorithm

i n

i := 1

+

1/47FITA

29/08/2015

i := i + 1

Page 2: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán GIỚI THIỆU

Algorithm INTRODUCTION

Chúng ta sẽ học:

•Thuật toán: định nghĩa, tính chất

•Một số ví dụ

• Khái niệm Big-O

2/47FITA

29/08/2015

• Khái niệm Big-O

• Độ tăng của hàm

• Độ phức tạp của thuật toán trong trường hợp xấu nhất

•Độ phức tạp của thuật toán trong trường hợp trung bình

Page 3: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỊNH NGHĨA

Algorithm DEFINITION

Định nghĩa DefinitionĐịnh nghĩa Definition

Định nghĩa

3/47FITA

29/08/2015

Thuật toán là tập hợp hữu hạn các lệnh chính xác để thực hiện tính toán hoặc để giải một bài toán.Thuật toán là tập hợp hữu hạn các lệnh chính xác để thực hiện tính toán hoặc để giải một bài toán.

Page 4: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỊNH NGHĨA

Algorithm DEFINITION

Tính chất Properties

Các thuật toán thường có một số tính chất chung:

• Đầu vào: Dữ kiện bài toán.

• Đầu ra: Mỗi đầu vào cho một đầu ra, nghiệm của bài toán.

• Tính xác định: Các bước của thuật toán phải được xác

Tính chất

4/47FITA

29/08/2015

• Tính xác định: Các bước của thuật toán phải được xác định một cách chính xác.

• Tính đúng đắn: Phải giải ra nghiệm chính xác với mỗi dữ kiện đầu vào.

• Tính hữu hạn: Thuật toán phải dừng sau hữu hạn bước.

• Tính hiệu quả: Mỗi bước phải thực hiện được một cách chính xác và trong một khoảng thời gian hữu hạn.

• Tính tổng quát: Áp dụng cho mọi bài toán cùng dạng.

Page 5: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỊNH NGHĨA

Algorithm DEFINITION

Ví dụ Example

Hai thủ tục tính toán sau thủ tục nào là một thuật toánChia 2Nhân 2

procedure nhân(n: nguyêndương)

procedure chia(n: nguyêndương)

Tính chất

5/47FITA

29/08/2015

dương)

không là thuật toán vì không dừng

dương)

while n > 0 while n mod 2 = 0

n := 2n n := n/2

là thuật toán với đầu ra là ước số lẻ lớn nhất của đầu vào n

trong khi n>0 làm công việc bên dưới

Page 6: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán LỚN NHẤT

Algorithm MAXIMUM

Bài toán tìm phần tử lớn nhất ProblemBài toán tìm phần tử lớn nhất Problem

Cho một tập hợp hữu hạn các phần tử có thể so Cho một tập hợp hữu hạn các phần tử có thể so

Lớn nhất

6/47FITA

29/08/2015

Cho một tập hợp hữu hạn các phần tử có thể so sánh được với nhau (tập các số, tập các từ, …). Hãy tìm phần tử lớn nhất của tập đã cho.

Cho một tập hợp hữu hạn các phần tử có thể so sánh được với nhau (tập các số, tập các từ, …). Hãy tìm phần tử lớn nhất của tập đã cho.

Page 7: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán LỚN NHẤT

Algorithm MAXIMUM

Thuật toán tìm phần tử lớn nhất Algorithm

procedure LớnNhất(a1, a2,…, an)

LN: = a1 LN là phần tử lớn nhất trong a , a ,…, a

Lớn nhất

7/47FITA

29/08/2015

for i: = 2 to n

if LN < ai then LN: = ai

trong a1, a2,…, an

Page 8: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán LỚN NHẤT

Algorithm MAXIMUM

Thuật toán Algorithm

LN là giá trị lớn nhất sai

a1, a2, …, an: nguyênLN: = a1; i: = 2

đầu vàoLớn nhất

8/47FITA

29/08/2015

LN là giá trị lớn nhất trong {a1, a2, …, an}

i n

đúng

sai

LN: = ai

LN < ai

i: = i + 1

đúng

sai đầu ra

Page 9: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán LỚN NHẤT

Algorithm MAXIMUM

Ví dụ Example

Tìm giá trị lớn nhất trong dãy các số nguyên sau

1 52 63 4

LN: = 2 LN: = 2

2 < 1 2 < 5 5 < 3 5 < 6 6 < 4

LN: = 5 LN: = 5 LN: = 6 LN: = 6

1 52 63 4

Lớn nhất

9/47FITA

29/08/2015

1 52 63 4

lớn nhất

1 52 63 4

procedure LonNhat(a1, a2, …, an)LN: = a1for i: = 2 to n

if LN < ai then LN: = ai

LN: = a1i: = 2

LN < ai

i = 3LN: = ai

i = 4i = 5i = 6

Page 10: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Bài toán tìm kiếm ProblemBài toán tìm kiếm Problem

Cho một danh sách các phần tử a1, a2, …, an. Xácđịnh vị trí phần tử x nếu nó có trong danh sách hoặcxác định rằng nó không có trong danh sách đó.

Cho một danh sách các phần tử a1, a2, …, an. Xácđịnh vị trí phần tử x nếu nó có trong danh sách hoặcxác định rằng nó không có trong danh sách đó.

Tìm kiếm

10/47FITA

29/08/2015

Chúng ta sẽ học:

• Thuật toán tìm kiếm tuyến tính.

• Thuật toán tìm kiếm nhị phân.

trong danh sách bất kì

trong danh sách các phần tử được sắp theo thứ tự tăng dần

Page 11: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Tuyến tính

Thuật toán tìm tuyến tính Algorithm

procedure TìmTT(x; a1, a2,…, an phân biệt)

i : = 1

while (i n and x ai)

11/47FITA

29/08/2015

while (i n and x ai)

if i n then vị trí: = i vị trí là chỉ số của số hạng bằng x hoặc là 0 nếu không tìm được x

i : = i + 1

else vị trí: = 0

Page 12: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Thuật toán Algorithm

x: nguyên; a1, a2, …, an: nguyên phân biệt

i: = 1

Tuyến tính

12/47FITA

29/08/2015

i n andx ai

đúng

sai

vị trí: = ii n

i: = i + 1

đúng

sai

vị trí: = 0

Page 13: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Ví dụ Example

Tìm vị trí (nếu có) của 3, 7 trong dãy các số nguyên sau

3 2 3 1

i: = 1 i: = 3 i: = 4

3 5 3 3

i: = 2

Tuyến tính

13/47FITA

29/08/2015

1 52 63 4

3 2 3 1 3 5 3 3

vị trí của 3 trong dãy trên là 4

không có 7 trong dãy trên

7 2 7 1

i: = 1 i: = 3 i: = 4 i: = 5 i: = 6

7 5 7 3 7 6 7 4

i: = 2 i: = 7

1 52 63 4

Page 14: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Khi danh sách được sắp xếp theo thứ tự (tăng dần), có thể dùng thuật toán tìm kiếm nhị phân:

Tại mỗi bước, chia danh sách làm 2 nửa, rồi giữ lại nửa chứa phần tử đang tìm (bỏ đi nửa còn lại).

Nhị phân

14/47FITA

29/08/2015

<x x<<x <x

x<

Page 15: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Thuật toán tìm nhị phân Algorithm

procedure TìmNP(x; a1< a2 < …< an)i : = 1

while (i < j)

begin

j : = n

k cho ra số nguyên lớn nhất nhỏ hơn hoặc bằng k (hàm sàn). Ở đây ta xét số nằm giữa danh sách.

Nhị phân

15/47FITA

29/08/2015

if x = ai then vị trí: = i

else vị trí: = 0

m: = (i + j)/2

if x > am then i: = m + 1 else j: = m

endvị trí là chỉ số của số hạng bằng x hoặc là 0 nếu không tìm được x

Nhấn vào để tải về và chạy thuật toán này trong Maxima

nếu x>am thì x ở nửa bên phải

nếu không x ở nửa trái

Page 16: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Ví dụ Example

Tìm vị trí (nếu có) của 3, 7 trong dãy các số nguyên sau

m: = 2j: = 2

3 = 3

Thuật toán TÌM KIẾM

Algorithm SEARCHING

3 41 86 9

3 > 1 3 > 3

i: = 1 m: = 3

3 > 4

3 41 86 9

j: = 6j: = 3m: = 1 i: = 2

Nhị phân

16/47FITA

29/08/2015

3 41 86 9

vị trí của 3 trong dãy trên là 2

không có 7 trong dãy trên

3 41 86 9

7 > 6 7 > 8

i: = 1 m: = 3 i: = 4

7 > 4

j: = 5j: = 6

m: = 5m: = 4i: = 5

7 = 8

Page 17: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán TÌM KIẾM

Algorithm SEARCHING

Thuật toán Algorithm

i < j vị trí: = i

x: nguyên; a1, a2, …, an: nguyên tăng dầni: = 1; j: = n

saix = ai

Nhị phân

đúng

17/47FITA

29/08/2015

i < j

đúng

sai

vị trí: = i

x > amj: = m

đúng

vị trí: = 0m: = (i + j)/2

i: = m + 1

x = ai

sai

Page 18: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Bài toán sắp xếp ProblemBài toán sắp xếp Problem

Cho một tập hợp hữu hạn các phần tử có thể so sánh được với nhau (tập các số, tập các từ, …). Hãy liệt kê các phần tử thành danh sách có thứ tự (từ lớn đến bé/từ bé đến lớn).

Cho một tập hợp hữu hạn các phần tử có thể so sánh được với nhau (tập các số, tập các từ, …). Hãy liệt kê các phần tử thành danh sách có thứ tự (từ lớn đến bé/từ bé đến lớn).

Sắp xếp

18/47FITA

29/08/2015

(từ lớn đến bé/từ bé đến lớn).(từ lớn đến bé/từ bé đến lớn).

Chúng ta sẽ học:

•Thuật toán sắp xếp kiểu nổi bọt.

•Thuật toán sắp xếp kiểu chèn.

Page 19: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Nổi bọt

Thuật toán sắp xếp kiểu nổi bọt dựa trên ý tưởng sau

Đi từ đầu đến cuối danh sách, tại vị trí thứ i nếu ai > ai+1

thì thực hiện đổi chỗ 2 phần tử này: ai “nặng hơn” sẽ “chìm xuống” (ở sau)ai+1 “nhẹ hơn” sẽ “nổi lên” (ở trước)

Hết bước này số nằm cuối danh sách là số lớn nhất.

19/47FITA

29/08/2015

Hết bước này số nằm cuối danh sách là số lớn nhất.

Thực hiện lại thủ tục như trên để thu được phần tử lớn thứ 2, 3, …

Sau n-1 lần lặp ta được danh sách sắp xếp cần tìm.

Page 20: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Ví dụ Example

Sắp xếp dãy sau theo thứ tự tăng dần bằng thuật toán nổi bọt

1

5

1

5

Thuật toán SẮP XẾP

Algorithm SORTING

1

2

Nổi bọt

20/47FITA

29/08/2015

2

6

3

4

2

6

3

46

3

45

54

Page 21: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Thuật toán sắp xếp nổi bọt Algorithm

procedure SắpNB(a1, a2,…, an)

for i = 1 to n – 1

for to

Nổi bọt

a1, a2,…, an cho ra sẽ được sắp theo

21/47FITA

29/08/2015

if aj > aj+1 then đổi chỗ aj và aj+1

for j = 1 to n – i sẽ được sắp theo thứ tự tăng dần

Page 22: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Chèn

Thuật toán sắp xếp kiểu chèn dựa trên ý tưởng sau

Sắp xếp 2 phần tử đầu tiên của danh sách.Sắp xếp 3 phần tử đầu tiên của danh sách. …Sắp xếp n – 1 phần tử đầu tiên của danh sách.Sắp xếp toàn bộ danh sách.

22/47FITA

29/08/2015

Sắp xếp toàn bộ danh sách.

Việc chuyển tiếp giữa 2 bước lặp từ j-1 phần tử đầu tiên của danh sách đã được sắp xếp sang sắp xếp j phần tử đầu tiên được thực hiện như sau:

Tìm vị trí thích hợp của aj trong danh sách j-1 phần tử đầu tiên của danh sách đã được sắp xếp rồi chèn vào giữa.

Page 23: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Ví dụ Example

Sắp xếp dãy sau theo thứ tự tăng dần bằng thuật toán sắp xếp kiểu chèn

2

1

Chèn

2

1

1<2

23/47FITA

29/08/2015

6

4

5

1

3

6

4

5

1

3

3<5

4<5

Page 24: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán SẮP XẾP

Algorithm SORTING

Thuật toán sắp xếp chèn Algorithm

procedure SắpChèn(a1, a2,…, an, n > 1)

for j = 2 to n

begin

i : = 1

while a > a

Chèn

đi tìm vị trí cần chèn aj vào

24/47FITA

29/08/2015

for k = 0 to j – i – 1

end

while aj > ai

i : = i + 1

m : = aj

aj – k : = aj – k – 1

a1, a2,…, an cho ra sẽ tăng dần

ai : = m

chèn aj vào vị trí i, đẩy đoạn nằm sau i lùi xuống

Page 25: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán THAM LAM

Algorithm GREEDY

Định nghĩa DefinitionĐịnh nghĩa Definition

Để giải các bài toán tối ưu, những thuật toán tìm đến sự lựa chọn tốt nhất tại mỗi bước gọi là thuật toán tham lam.

Để giải các bài toán tối ưu, những thuật toán tìm đến sự lựa chọn tốt nhất tại mỗi bước gọi là thuật toán tham lam.

Tham lam

25/47FITA

29/08/2015

Ví dụ Example

Bài toán đổi n xu ra các đồng 25 xu, 10 xu, 5 xu, 1 xu sao cho số đồng xu là nhỏ nhất.

Ý tưởng cơ bản: tại mỗi bước, tìm đồng xu lớn nhất không vượt quá số tiền chưa đổi được để đổi.

Page 26: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán tham lam đổi tiền Algorithm

Thuật toán THAM LAM

Algorithm GREEDY

procedure ĐổiTiền(c1 > c2 > …> cr: tiền xu, n N*)

for i = 1 to r

begin

while n ci

26/47FITA

29/08/2015

begin

end

thêm một đồng mệnh giá ci

vào số các đồng xu đã đổi

n : = n - ciTham lam

Page 27: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán THAM LAM

Algorithm GREEDY

Thuật toán Algorithm

i rsai

c1 > c2 > … > cr > 0; n N*n1: = n2 = … = nr = 0i: = 1

n = n .c + … + n .c

Tham lam

27/47FITA

29/08/2015

i r

đúng

sai

i: = i + 1

đúng

sai

n = n1.c1 + … + nr.cr

n ci

ni : = ni + 1n := n - ci

Page 28: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất Ví dụ Example

Đổi 47 xu ra các đồng 25 xu, 10 xu, 5 xu, 1 xu bằng

Thuật toán THAM LAM

Algorithm GREEDY

Tham lam

Định lí Theorem

Thuật toán trên tạo ra cách đổi tiền bằng các đồng 25 xu, 10 xu, 5 xu, 1 xu với số đồng xu là ít nhất.

28/47FITA

29/08/2015

Đổi 47 xu ra các đồng 25 xu, 10 xu, 5 xu, 1 xu bằng thuật toán tham lam

22 1047 25n = 47

2525 1010 55 11

n1 = 0 n2 = 0 n3 = 0 n4 = 0n1 = 1

n = 22 22 25n = 12n = 2 12 102 10 2 5 2 11 10 1

n2 = 1n2 = 2 n4 = 1n4 = 2

n = 1n = 0

47 = 1*25 + 2*10 + 0*5 + 2*1

Page 29: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-O

Algorithm BIG-O

Định nghĩa DefinitionĐịnh nghĩa Definition

Big-O

Với mỗi thuật toán số phép toán cần thực hiện sẽ là một hàm số theo kích thước đầu vào. Chúng ta sẽ đánh giá tính hiệu quả của mỗi thuật toán bằng cách khảo sát độ tăng của hàm này.

29/47FITA

29/08/2015

Định nghĩa DefinitionĐịnh nghĩa Definition

Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x)) hoặc f(x) là big-O của g(x) hay 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)| với mọi x k.

Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x)) hoặc f(x) là big-O của g(x) hay 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)| với mọi x k.

Ta sẽ chỉ xét các hàm dương nên sẽ bỏ dấu | |

Page 30: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-O

Algorithm BIG-O

Ví dụ Example

Chứng minh f(n) = 30n + 8 là big-O của g(n) = n.

Ta cần chứng minh c,k: n > k: 30n + 8 cn.

Lấy c = 31, k = 8. Khi đóvới n > k = 8,

30n+8cn =31n

Big-O

30/47FITA

29/08/2015

đóvới n > k = 8,cn = 31n = 30n + n > 30n+8

n>k=8

n

30n+8 O(n)

Giá trị cụ thể của c và kgọi là bằng chứng. Ta có thể tìm nhiều bằng chứng. Chẳng hạn:

c = 32, k = 9

Page 31: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất giai thừa

Thuật toán BIG-O

Algorithm BIG-O

Khái niệm big-O được sử dụng để đánh giá số phép toán cần dùng để giải một bài toán theo một thủ tục hoặc một thuật toán cụ thể. Các hàm số cơ bản thường được dùng để so sánh là: 1, log(log(n)), log(n), logk(n), n1/k, n, nlog(n), nk, an, n!,

nnhằng

logarit

đa thức

601

log(n)

Big-O

31/47FITA

29/08/2015

t

-10

0

10

20

30

40

50

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5n

log(n)n^22^n

n!

Page 32: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-O

Algorithm BIG-O

Định lí Theorem

• anxn + an -1xn -1 + …+ a1x + a0 = O(xn) (a0, a1, …, an

là các số thực)

= ( ) = ( ) = ( )

Tính chất

32/47FITA

29/08/2015

• O(g1+g2) = O(max(g1,g2)) = O(g1) nếu g2=O(g1)

• f = O(g) g = O(h) f = O(h)

• af, f 1-b, (logbf)a = O(f) với mọi a, b R và b a >

0.

• f1=O(g1) f2=O(g2) f1 f2 = O(g1g2)

• f1=O(g1) f2=O(g2) f1+f2 = O(g1+g2)

• O(g1+g2) = O(max(g1,g2)) = O(g1) nếu g2=O(g1)

Page 33: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Ví dụ Example

Đánh giá hàm số

Thuật toán BIG-O

Algorithm BIG-O

n

i

inf )(

Ta có

)()(

nninf

n

Tính chất

33/47FITA

29/08/2015

i

nn

= O(n2)

hoặc n2/2 + O(n)

Bài tập: Chứng minh )(log)(

Oni

nfn

i

Page 34: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-THETA

Algorithm BIG-THETA

Khi f O(g) thì hàm f bị chặn trên bởi g. Dưới đây cung cấp một vài cách đánh giá khác về độ tăng của hàmĐịnh nghĩa DefinitionĐịnh nghĩa Definition

Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói

•f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu

Cho f(x) và g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói

•f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu

Big-Theta

34/47FITA

29/08/2015

•f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn tại hai hằng số C > 0 và k sao cho

|f(x)| C|g(x)| với mọi x k.

•f(x) là (g(x)) hoặc f(x) là big-Theta của g(x) nếu f O(g) và f Ω(g) tức là tồn tại các hằng số C1, C2, k > 0 sao cho

C1|g(x)| |f(x)| C2|g(x)| với mọi x k.

•f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn tại hai hằng số C > 0 và k sao cho

|f(x)| C|g(x)| với mọi x k.

•f(x) là (g(x)) hoặc f(x) là big-Theta của g(x) nếu f O(g) và f Ω(g) tức là tồn tại các hằng số C1, C2, k > 0 sao cho

C1|g(x)| |f(x)| C2|g(x)| với mọi x k.

g O(f)

f và g cùng bậc

Page 35: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-THETA

Algorithm BIG-THETA

Định lí Theorem

• anxn + an -1xn -1 + …+ a1x + a0 = (xn) (ở đây a0, a1,

…, an là các số thực và an ≠ 0)

• f = (g) g = (h) f = (h)

Tính chất

35/47FITA

29/08/2015

• f = (g) g = (h) f = (h)

• af = (f) với mọi a ≠ 0

• f1= (g1) f2= (g2) f1 f2 = (g1g2)

• f1= (g1) f2= (g2) f1+ f2 = (g1+g2)

• (g1+g2) = (max(g1,g2)) = (g1) nếu g2=O(g1)

Page 36: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-THETA

Algorithm BIG-THETA

Ví dụ Example

Cho 2 hàm số

Chứng minh f = (g)

f(n) = log(1) + log(2) + …+ log(n) g(n) = nlog(n)

f (n) g(n) n 1

Tính chất

36/47FITA

29/08/2015

f (n) = O(g(n))

2f(n) = log(1) + log(2) + …+ log(n)+ log(n) + log(n-1) +…+ log(1)

= log(1.n) + log(2(n-1)) + … + log(n.1)

g(n) n 1 f (n) = Ω(g(n))

Vậy f (n) = (g(n))

Page 37: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán BIG-THETA

Algorithm BIG-THETA

Ví dụ Example

Cho 2 hàm số

Chứng minh f (g)

f(n) = (log(n)+n!)/(en+n2) g(n) = n!/en

Tính chất

37/47FITA

29/08/2015

Chứng minh f (g)

limnf(n)/g(n) = limn [(log(n)+n!)/(n!).(en)/(en+n2)]

= 1.1 = 1

Vậy f (n) (g(n))

Page 38: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Định nghĩa DefinitionĐịnh nghĩa Definition

Độ phức tạp của thuật toán mô tả mức độ khó khăn khi thực hiện thuật toán, gồm hai loại:Độ phức tạp của thuật toán mô tả mức độ khó khăn khi thực hiện thuật toán, gồm hai loại:

Khi có một thuật toán chúng ta sẽ quan tâm đến• Độ phức tạp: thuật toán có hiệu quả không?

Độ phức tạp

38/47FITA

29/08/2015

khi thực hiện thuật toán, gồm hai loại:

•Độ phức tạp thời gian: thời gian cần thiết để thực hiện được thuật toán với kích thước đầu vào xác định, được biểu diễn qua số phép toán được dùng bởi thuật toán như: phép so sánh, cộng, trừ, nhân, chia, …

•Độ phức tạp không gian: dung lượng bộ nhớ cần sử dụng để thực hiện thuật toán.

khi thực hiện thuật toán, gồm hai loại:

•Độ phức tạp thời gian: thời gian cần thiết để thực hiện được thuật toán với kích thước đầu vào xác định, được biểu diễn qua số phép toán được dùng bởi thuật toán như: phép so sánh, cộng, trừ, nhân, chia, …

•Độ phức tạp không gian: dung lượng bộ nhớ cần sử dụng để thực hiện thuật toán.

sẽ học hôm nay

Page 39: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Ví dụ Example

Mô tả độ phức tạp thời gian của thuật toán tìm phần tử lớn nhất sau, dựa vào số phép so sánh?

procedure LớnNhất(a , a ,…, a : số nguyên)

Độ phức tạp

39/47FITA

29/08/2015

procedure LớnNhất(a1, a2,…, an: số nguyên)

LN: = a1

for i: = 2 to n

if LN < ai then LN: = ai

Page 40: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Ví dụ Example

LN là giá trị lớn nhất trong {a1, a2, …, an}i n

sai

a1, a2, …, an: nguyênLN: = a1; i: = 2

một phép so sánh để thoát ra khỏi vòng lặp khi i = n + 1

Độ phức tạp

40/47FITA

29/08/2015

đúng

LN: = ai

LN < aii: = i + 1

đúng

saicó n – 1 vòng lặp, mỗi vòng lặp gồm 2 phép so sánh: i n và LN ai

Cần tất cả: (n – 1).2 + 1 = 2n – 1 phép so sánh

→ độ phức tạp thuật toán (n)

Page 41: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Định nghĩa DefinitionĐịnh nghĩa Definition

Một thuật toán với kích thước đầu vào n gọi là có

• độ phức tạp hằng nếu có dạng O(1)

• độ phức tạp logarit nếu có dạng O(log n)

• độ phức tạp tuyến tính nếu có dạng O(n)

Một thuật toán với kích thước đầu vào n gọi là có

• độ phức tạp hằng nếu có dạng O(1)

• độ phức tạp logarit nếu có dạng O(log n)

• độ phức tạp tuyến tính nếu có dạng O(n)

Độ phức tạp

41/47FITA

29/08/2015

• độ phức tạp đa thức nếu có dạng O(na), a 1

• độ phức tạp hàm mũ nếu có dạng O(an), a > 1

• độ phức tạp giai thừa nếu có dạng O(n!)

• độ phức tạp đa thức nếu có dạng O(na), a 1

• độ phức tạp hàm mũ nếu có dạng O(an), a > 1

• độ phức tạp giai thừa nếu có dạng O(n!)

Ví dụ Example

Thuật toán tìm giá trị lớn nhất trong dãy các số nguyên có độ phức tạp tuyến tính.

Page 42: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Định nghĩa DefinitionĐịnh nghĩa Definition

• Độ phức tạp trong trường hợp xấu nhất là độ phức tạp tính trong trường hợp phải dùng tối đa các phép toán để giải bài toán theo thuật toán đang xét, ứng với một số đầu vào nào đó có kích thước xác định.

• Độ phức tạp trong trường hợp xấu nhất là độ phức tạp tính trong trường hợp phải dùng tối đa các phép toán để giải bài toán theo thuật toán đang xét, ứng với một số đầu vào nào đó có kích thước xác định.

Độ phức tạp

42/47FITA

29/08/2015

một số đầu vào nào đó có kích thước xác định.

• Độ phức tạp trong trường hợp trung bình là độ phức tạp tính số trung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước xác định.

• Những bài toán giải được bằng một thuật toán có độ phức tạp đa thức trong trường hợp xấu nhất gọi là bài toán dễ dử lí, nếu không gọi là bài toán không dễ xử lí.

một số đầu vào nào đó có kích thước xác định.

• Độ phức tạp trong trường hợp trung bình là độ phức tạp tính số trung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước xác định.

• Những bài toán giải được bằng một thuật toán có độ phức tạp đa thức trong trường hợp xấu nhất gọi là bài toán dễ dử lí, nếu không gọi là bài toán không dễ xử lí.

Page 43: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Ví dụ Example

Mô tả độ phức tạp thời gian của thuật toán tìm kiếm tuyến tính sau, dựa trên số phép so sánh?

procedure TìmTT(x Z; a , a ,…, a Z phân biệt)

Độ phức tạp

43/47FITA

29/08/2015

procedure TìmTT(x Z; a1, a2,…, an Z phân biệt)

i : = 1

while (i n and x ai)

if i n then vị trí: = i

i : = i + 1

else vị trí: = 0

Page 44: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Ví dụ Example

x: nguyên; a1, a2, …, an: nguyên phân biệt, i = 1

i n andx ai

đúngi: = i + 1

nếu x = ai có i vòng lặp

mỗi vòng lặp có 2 phép so sánh i n và x ≠ ai

nếu x ≠ ai i có n vòng lặp Xấu nhất

44/47FITA

29/08/2015

sai

vị trí: = ii n đúng

sai

vị trí: = 0

Trường hợp x ≠ ai i có 2n + 1 + 1= 2n + 2 phép so sánh

nếu x ≠ ai i có n vòng lặp và 1 phép so sánh để thoát ra khỏi vòng lặp

một phép so sánh ngoài vòng lặp

Trường hợp x = ai có 2i + 1 phép so sánh

Page 45: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

Ví dụ Example

Độ phức tạp của thuật toán tìm kiếm tuyến tính trong trường hợp xấu nhất là

2n + 2 = (n) (độ phức tạp tuyến

Trung bình

45/47FITA

29/08/2015

2n + 2 = (n) (độ phức tạp tuyến tính)

Nếu coi x có mặt trong danh sách và khả năng x ở mỗi vị trí là như nhau thì độ phức tạp của thuật toán tìm kiếm tuyến tính trong trường hợp trung bình là

(2.1 + 1) + (2.2 + 1) + …+ (2n + 1)

n= n + 2 = (n)

Page 46: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Ví dụ Example

Xác định độ phức tạp của thuật toán tìm kiếm nhị phân dựa trên số phép so sánh

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

procedure TìmNP(x Z; a1, a2,…, an Z tăng dần)

i : = 1

j : = nXấu nhất

46/47FITA

29/08/2015

while (i < j)

if x = ai then vị trí: = i

begin

else vị trí: = 0

j : = n

m: = (i + j)/2

if x > am then i: = m + 1 else j: = mend

Page 47: Thuật toánelearning.vnua.edu.vn/uploads/images/USERS_1341112/Do... · 2019. 9. 20. · Tính chất Ví dụ Big-O Độ phức tạp TH trung bình TH xấu nhất Thuật toán

Thuật toán

Định nghĩa

Tính chất

Ví dụ

Big-O

Độ phức tạp

TH trung bình

TH xấu nhất

Ví dụ Example

Thuật toán ĐỘ PHỨC TẠP

Algorithm COMPLEXITY

x: nguyên; a1, a2, …, an: nguyên tăng dầni: = 1; j: = n

i < j

đúng

vị trí: = isai

vị trí: = 0

x = ai

đúng

sai

1 phép so sánh để thoát khỏi VL, 1 ở ngoài VL

Xấu nhất

47/47FITA

29/08/2015

đúng

saix > amj: = m

đúng

vị trí: = 0m: = (i + j)/2

i: = m + 1

sai

mỗi vòng lặp có 2 phép so sánh i < j và x > am

sau mỗi vòng, kích thước danh sách giảm đi cỡ một nửa có không quá log2n vòng lặp

Độ phức tạp trường hợp xấu nhất: 2 log2n + 2 = (log n)