1. Trang chủ
  2. » Công Nghệ Thông Tin

Thuật toán: Độ phức tạp và tính đúng đắn pptx

35 1,3K 16

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 0,96 MB

Nội dung

Độ 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 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

Trang 1

complexity & correctness

độ phức tạp & tính đúng đắn

complexity & correctness

Thuật toán

Algorithm

Thuật toán

Algorithm

Trang 5

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), log k (n), n 1/k , n, nlog(n), n k , a n , n!, n n

0 10 20 30 40 50

log(n) n^2 2^n n!

Big-O

Trang 6

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

• af, f 1-b, (logb f) a O(f) với mọi a, b R và b ≥ 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)

• a n x n + a n -1 x n -1 + …+ a1x + a0 ∈ O(x n ) (a0, a1, …, a n là các số thực)

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

• af, f 1-b, (logb f) a O(f) với mọi a, b R và b ≥ 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)

Tính chất

Trang 7

= n

i

i n

= n2 n

O(n2)hoặc ∈ n2/2 + O(n)

) ( log

)

Tính chất

Trang 8

BIG-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 tồn

tại hai hằng số C > 0 và k sao cho

•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

Trang 10

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

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))

Tính chất

Trang 14

Độ 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 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

Độ 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 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 có một thuật toán chúng ta sẽ quan tâm đến

• Tính đúng đắn: kết quả chính xác không?

• Độ phức tạp: thuật toán có hiệu quả không?

sẽ học hôm nay

Độ phức tạp

Trang 16

khi i = n + 1

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)

Độ phức tạp

Trang 17

• độ 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 đa thức nếu có dạng O(n a ), a ≥ 1

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

• độ phức tạp giai thừa 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 đa thức nếu có dạng O(n a ), a ≥ 1

Trang 18

• Độ 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 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í.

• Độ 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 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í.

Độ phức tạp

Trang 20

ngoài vòng lặp

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

Xấu nhất

Trang 21

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)

Trung bình

Trang 23

sai

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

Xấu nhất

Trang 24

Một thuật toán 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 đắn của thuật toán gồm hai phần:

• Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết

quả đúng, tức là xác lập tính đúng đắn bộ phận.

• Chứng tỏ thuật toán kết thúc

Một thuật toán 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 đắn của thuật toán gồm hai phần:

• Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết

quả đúng, tức là xác lập tính đúng đắn bộ phận.

• Chứng tỏ thuật toán kết thúc

Tính đúng đắn

Trang 25

Để kiểm tra tính đúng đắn của chương trình hay đoạn

chương trình S ta thường sử dụng hai mệnh đề sau:

• Khẳng định đầu p: là điều kiện mà đầu vào của

chương trình cần phải có

• Khẳng đinh cuối q: là điều kiện mà đầu ra của

chương trình cần thỏa mãn

Bộ ba Hoare là kí hiệu pSq có nghĩa là: với mọi đầu

vào I sao cho mệnh đề p(I) là đúng, qua chương trình

S cho đầu ra O thì mệnh đề q(O) là đúng Khi có pSq

ta nói chương trình S đúng đắn bộ phận với khẳng

Để kiểm tra tính đúng đắn của chương trình hay đoạn

chương trình S ta thường sử dụng hai mệnh đề sau:

• Khẳng định đầu p: là điều kiện mà đầu vào của

chương trình cần phải có

• Khẳng đinh cuối q: là điều kiện mà đầu ra của

chương trình cần thỏa mãn

Bộ ba Hoare là kí hiệu pSq có nghĩa là: với mọi đầu

vào I sao cho mệnh đề p(I) là đúng, qua chương trình

S cho đầu ra O thì mệnh đề q(O) là đúng Khi có pSq

ta nói chương trình S đúng đắn bộ phận với khẳng

Tính đúng đắn

Trang 26

S đúng đắn bộ phận với:

S không đúng đắn bộ phận với:

khẳng định đầu: p(x) = x > 1 khẳng định cuối: q(x) = x > 4

khẳng định đầu: p(x) = x > 1 khẳng định cuối: q(x) = x > 3

Tính đúng đắn

Trang 27

như sau: p0S1p1, p1S2p2, …, p k–1Sk p k thì chương trình S

là đúng đắn bộ phận với khẳng định đầu p = p0, khẳng

định cuối q = p k

Một chương trình S được chia thành các đoạn chương trình con S1, S2, …, S k Giả sử các chương trình con là đúng đắn bộ phận với các bộ ba Hoare

như sau: p0S1p1, p1S2p2, …, p k–1Sk p k thì chương trình S

là đúng đắn bộ phận với khẳng định đầu p = p0, khẳng

định cuối q = p k

Một chương trình thường được chia thành các đoạn chương trình con cơ bản như rẽ nhánh điều kiện và vòng lặp Dưới đây trình bày tính đúng đắn của đoạn

Tính đúng đắn

Trang 28

Quy tắc suy luận của đoạn rẽ nhánh điều kiện

if điều kiện then S

với khẳng định đầu p và khẳng định cuối q là:

Quy tắc suy luận của đoạn rẽ nhánh điều kiện

if điều kiện then S

với khẳng định đầu p và khẳng định cuối q là:

(p điều kiện){S}q (p ¬điều kiện) → q

∴ p{if điều kiện then S}q

Trang 30

Quy tắc suy luận của đoạn rẽ nhánh điều kiện

if điều kiện then S1 else S2

với khẳng định đầu p và khẳng định cuối q là:

Quy tắc suy luận của đoạn rẽ nhánh điều kiện

if điều kiện then S1 else S2

với khẳng định đầu p và khẳng định cuối q là:

(p điều kiện) {S1} q (p ¬điều kiện) {S2} q

∴ p{if điều kiện then S1 else S2}q

Trang 31

Điều kiện

Trang 32

Quy tắc suy luận của đoạn vòng lặp

while điều kiện do S

với khẳng định đầu p và khẳng định cuối (¬điều kiện p)

là:

Quy tắc suy luận của đoạn vòng lặp

while điều kiện do S

với khẳng định đầu p và khẳng định cuối (¬điều kiện p)

là:

(p điều kiện) {S} p

∴ p{while điều kiện do S}(¬điều kiện p) Khi (p điều kiện){S}p đúng thì p gọi là bất biến vòng lặp

Trang 33

while i < n

begin

i: = i + 1 giai thừa: = giai thừa * i

end

khẳng định đầu p:

i n giai thừa = i!

Trang 34

while k < a

begin

x: = x + m k: = k + 1

Trang 35

– Chép bản slide này & thay đổi nó để nó dễ hiểu hơn với bạn.

Tóm tắt

Ngày đăng: 05/03/2014, 11:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w