Phức tạp của thuật toỏn

Một phần của tài liệu Nghiên cứu phương pháp bảo vệ thông tin dùng trên thiết bị cầm tay (Trang 29 - 32)

Lý thuyết thuật toỏn và cỏc hàm số tớnh đƣợc ra đời từ những năm 30 của thế kỷ 20 đó đặt nền múng cho việc nghiờn cứu cỏc vấn đề “tớnh đƣợc”, “giải đƣợc” trong toỏn học, đƣa đến nhiều kết quả rất quan trọng và lý thỳ. Nhƣng từ cỏi “tớnh đƣợc” một cỏch trừu tƣợng, hiểu theo nghĩa tiềm năng, đến việc tớnh đƣợc trong thực tế của khoa học tớnh toỏn bằng mỏy tớnh điện tử, là cả một khoảng cỏch rất lớn. Vấn đề là do ở chỗ những đũi hỏi về khụng gian vật chất và về thời gian để thực hiện cỏc tiến trỡnh tớnh toỏn nhiều khi vƣợt quỏ xa những khả năng thực tế. Từ đú, vào khoảng giữa những năm 60 (của thế kỷ trƣớc), một lý thuyết về độ phức tạp tớnh toỏn bắt đầu đƣợc hỡnh thành và phỏt triển nhanh chúng, cung cấp cho chỳng ta nhiều hiểu biết sõu sắc về bản chất phức tạp của cỏc thuật toỏn và cỏc bài toỏn, cả những bài toỏn thuần tỳy lý thuyết đến những bài toỏn thƣờng gặp trong thực tế. Sau đõy giới thiệu sơ lƣợc một số khỏi niệm cơ bản và vài kết quả sẽ đƣợc dựng đến của lý thuyết đú.

Trƣớc hết, hiểu độ phức tạp tớnh toỏn (về khụng gian hay về thời gian) của một tiến trỡnh tớnh toỏn là số ụ nhớ đƣợc dựng hay số cỏc phộp toỏn sơ cấp đƣợc thực hiện trong tiến trỡnh tớnh toỏn đú.

Dữ liệu đầu vào đối với một thuật toỏn thƣờng đƣợc biểu diễn qua cỏc từ trong một bảng ký tự nào đú. Độ dài của một từ là số ký tự trong từ đú.

Cho một thuật toỏn A trờn bảng ký tự  (tức cú đầu vào là cỏc từ trong ). Độ phức tạp tớnh toỏn của thuật toỏn A đƣợc hiểu là một hàm số fA(n) sao cho với mỗi số

n, fA(n) là số ụ nhớ, hay số phộp toỏn sơ cấp tối đa mà A cần để thực hiện tiến trỡnh tớnh toỏn của mỡnh trờn cỏc dữ liệu vào cú độ dài n. Ta núi thuật toỏn A cú độ phức tạp thời gian đa thức, nếu cú một đa thức P(n) sao cho với mọi n đủ lớn ta cú fA(n)

P(n), trong đú fA(n) là độ phức tạp tớnh toỏn theo thời gian của A.

Về sau khi núi đến cỏc bài toỏn, ta hiểu đú là cỏc bài toỏn quyết định, mỗi bài toỏn P nhƣ vậy đƣợc xỏc định bởi:

- Một tập cỏc dữ liệu vào I (trong một bảng ký tự  nào đú),

- Một cõu hỏi Q trờn cỏc dữ liệu vào, sao cho với mỗi dữ liệu vào x1, cõu hỏi

Q cú một trả lời đỳng hoặc sai.

Bài toỏn quyết định B là giải được, nếu cú thuật toỏn để giải nú, tức là thuật toỏn làm việc cú kết thỳc trờn mọi dữ liệu vào cỏc bài toỏn, và cho kết quả đỳng hoặc

sai tựy theo cõu hỏi Q trờn dữ liệu đú cú trả lời đỳng hoặc sai. Bài toỏn lớp P là đơn định giải đƣợc trong thời gian đa thức, nếu cú thuật toỏn giải nú với độ phức tạp thời gian đa thức. Sau đõy là vài vớ dụ về cỏc bài toỏn quyết định:

Bài toỏn SATISFIABILYTY (viết tắt là SAT):

- Mỗi dữ liệu vào là một cụng thức F của logic mệnh đề, đƣợc viết dƣới dạng hội chuẩn tắc, tức dạng hội của một số cỏc “clause”.

- Cõu hỏi là: cụng thức F cú thỏa đƣợc hay khụng?

Bài toỏn CLIQUE:

- Mỗi dữ liệu vào là một graph G và một số nguyờn k.

- Mỗi cõu hỏi là: Graph G cú một clique với ≥ k đỉnh hay khụng? (một clique của G là một graph con đầy đủ của G).

Bài toỏn KNAPSACK:

- Mỗi dữ liệu là một bộ n + 1 số nguyờn dƣơng I = (s1, ...sn; T). - Cõu hỏi là: cú hay khụng một vectơ Boole (x1, ...,xn) sao cho

n i i i 1 x s T ?    

(vectơ Boole là vectơ cú cỏc thành phần là 0 hoặc 1)

Bài toỏn thặng dƣ bậc hai:

- Mỗi dữ liệu gồm hai số nguyờn dƣơng (a, n).

- Cõu hỏi là: a cú là thặng dƣ bậc hai theo mod n hay khụng?

Bài toỏn hợp số:

- Mỗi dữ liệu là một số nguyờn dƣơng N.

- Cõu hỏi: N là hợp số khụng?

Tức cú hay khụng hai số m, n >1 sao cho N = m.n?

Tƣơng tự, nếu đặt cõu hỏi là “N là số nguyờn tố hay khụng?” thỡ ta đƣợc bài toỏn số nguyờn tố.

Đối với tất cả cỏc bài toỏn kể trờn, trừ bài toỏn hợp số và số nguyờn tố, cho đến nay ngƣời ta đều chƣa tỡm đƣợc thuật toỏn giải chỳng trong thời gian đa thức.

Một phần của tài liệu Nghiên cứu phương pháp bảo vệ thông tin dùng trên thiết bị cầm tay (Trang 29 - 32)