Lý thuyết độ phức tạp

Một phần của tài liệu Tìm hiểu mật mã học và ứng dụng trong xác thực chữ ký (Trang 44 - 47)

Chương 3. Một số công cụ hỗ trợ cho thuyết mật mã

3.2. Lý thuyết độ phức tạp

Một chương trình máy tính thường được cài đặt dựa trên một thuật toán đúng để giải quyết bài toán hay vấn đề. Tuy nhiên, ngay cả khi thuật toán đúng, chương trình vẫn có thể không sử dụng được đối với một dữ liệu đầu vào nào đó vì thời gian để cho ra kết quả là quá lâu hoặc sử dụng quá nhiều bộ nhớ (vượt quá khả năng đáp ứng của máy tính).

Khi tiến hành phân tích thut toán nghĩa là chúng ta tìm ra một đánh giá về thời gian và "không gian" cần thiết để thực hiện thuật toán. Không gian ở đây được hiểu là các yêu cầu về bộ nhớ, thiết bị lưu trữ, ... của máy tính để thuật toán có thể làm việc. Việc xem xét về không gian của thuật toán phụ thuộc phần lớn vào cách tổ chức dữ liệu của thuật toán. Trong phần này, khi nói đến độ phức tạp của thuật toán, chúng ta chỉ đề cập đến những đánh giá về mặt thời gian mà thôi.

Phân tích thuật toán là một công việc rất khó khăn, đòi hỏi phải có những hiểu biết sâu sắc về thuật toán và nhiều kiến thức toán học khác. Ðây là công việc mà không phải bất cứ người nào cũng làm được. Rất may mắn là các nhà toán học đã phân tích cho chúng ta độ phức tạp của hầu hết các thuật toán cơ sở (sắp xếp, tìm kiếm, các thuật toán số học, ...). Chính vì vậy, nhiệm vụ còn lại của chúng ta là hiểu được các khái niệm liên quan đến độ phức tạp của thuật toán.

Ðánh giá về thời gian của thuật toán không phi là xác định thời gian tuyệt đối (chạy thuật toán mất bao nhiêu giây, bao nhiêu phút,...) để thực hiện thuật toán mà là xác định mi liên quan giữa dữ liệu đầu vào (input) của thuật toán và chi phí (số thao tác, số phép tính cộng,trừ, nhân, chia, rút căn,...) để thực hiện thuật toán. Sở dĩ người ta không quan tâm đến thời gian tuyệt đối của thuật toán vì yếu tố này phụ thuộc vào tốc độ của máy tính, mà các máy tính khác nhau thì có tốc độ rất khác nhau. Một cách tổng quát, chi phí thc hin thut toán là mt hàm s ph thuc vào d liu đầu vào :

T = f(input)

K IL O B O O K S .C O M

Tuy vậy, khi phân tích thuật toán, người ta thường chỉ chú ý đến mối liên quan giữa độ ln ca d liu đầu vào và chi phí. Trong các thuật toán, độ lớn của dữ liệu đầu vào thường được thể hiện bằng một con s nguyên n. Chẳng hạn : sp xếp n con s nguyên, tìm con s ln nht trong n s, tính đim trung bình ca n hc sinh, ... Lúc này, người ta thể hiện chi phí thực hiện thuật toán bằng một hàm số phụ thuộc vào n :

T = f(n)

Việc xây dựng một hàm T tổng quát như trên trong mọi trường hợp của thuật toán là một việc rất khó khăn, nhiều lúc không thể thực hiện được. Chính vì vậy mà người ta chỉ xây dựng hàm T cho một số trường hợp đáng chú ý nhất của thuật toán, thường là trường hợp tt nht xu nht. Để đánh giá trường hợp tốt nhất và xấu nhất người ta dựa vào định nghĩa sau:

Cho hai hàm f và g có miền xác định trong tập số tự nhiên . Ta viết

f(n) = O(g(n)) và nói f(n) có cấp cao nhất là g(n) khi tồn tại hằng số C và k sao cho | f(n) | ≤ C.g(n) với mọi n > k

Tuy chi phí của thuật toán trong trường hợp tốt nhất và xấu nhất có thể nói lên nhiều điều nhưng vẫn chưa đưa ra được một hình dung tốt nhất về độ phức tạp của thuật toán. Ðể có thể hình dung chính xác về độ phức tạp của thuật toán, ta xét đến một yếu tố khác là độ tăng ca chi phí khi độ ln n ca d liu đầu vào tăng.

Một cách tổng quát, nếu hàm chi phí của thuật toán (xét trong một trường hợp nào đó) bị chặn bởi O(f(n)) thì ta nói rằng thuật toán có độ phức tạp là O(f(n)) trong trường hợp đó.

Như vậy, thuật toán tìm số lớn nhất có độ phức tạp trong trường hợp tốt nhất và xấu nhất đều là O(n). Người ta gọi các thuật toán có độ phức tạp O(n) là các thuật toán có độ phức tạp tuyến tính.

K IL O B O O K S .C O M

Sau đây là một số "thước đo" độ phức tạp của thuật toán được sử dụng rộng rãi.

Các độ phức tạp được sắp xếp theo thứ tự tăng dần. Nghĩa là một bài toán có độ phức tạp O(nk) sẽ phức tạp hơn bài toán có độ phức tạp O(n) hoặc O(logn).

K IL O B O O K S .C O M

Một phần của tài liệu Tìm hiểu mật mã học và ứng dụng trong xác thực chữ ký (Trang 44 - 47)

Tải bản đầy đủ (PDF)

(89 trang)