Phức tạp tính toán của bài toán

Một phần của tài liệu Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải (Trang 25)

1.2.1. Khái niệm về độ phức tạp của bài toán

Như đã biết, đối với một bài toán có thể có nhiều thuật toán khác nhau để giải. Mỗi thuật toán có độ phức tạp tính toán khác nhau. Một câu hỏi được đặt ra là độ phức tạp tính toán của các thuật toán có liên quan gì đến bài toán không? Hay nói cách khác có phải bài toán nào cũng khó như nhau không? Câu trả lời là không. Mỗi bài toán nó có một mức độ khó khác nhau và được đặc trưng bởi độ phức tạp tính toán của thuật toán tốt nhất trong số tất cả các thuật toán có thể để giải nó.

Định nghĩa 1.3. Độ phức tạp tính toán của một bài toán là thời gian của thuật toán tốt nhất trong số tất cả các thuật toán có thể để giải bài toán đó.

~ 25 ~

Một vấn đề được đặt ra là làm thế nào có thể xác định độ phức tạp tính toán của bài toán khi mà chúng ta còn chưa biết hết các thuật toán có thể để giải bài toán. Có 2 cách để giải quyết vấn đề này

 Cách thứ nhất ta tìm cách để đưa ra cận dưới cho độ phức tạp tính toán của bài toán.

 Còn trong cách thứ hai ta tìm cách chỉ ra rằng bài toán đang xét có mức độ khó (tức là độ phức tạp tính toán) không thua kém gì bất kì một bài toán khó nào hiện biết.

Phần còn lại của mục này chúng ta đi tìm hiểu về cách tiếp cận thứ nhất, còn cách tiếp cận thứ 2 sẽ được trình bày ở mục tiếp theo.

Định nghĩa 1.4. Gọi là thời gian tính của thuật toán đối với đầu vào . Khi đó, thời gian tính trong tình huống tồi nhất của thuật toán đối với dữ liệu đầu vào kích thước được định nghĩa là thời gian tính lớn nhất của thuật toán trên mọi bộ dữ liệu có kích thước bằng .

| |

Định nghĩa 1.5. Độ phức tạp trong tình huống tồi nhất của bài toán là thời gian tính trong tình huống tồi nhất của thuật toán nhanh nhất để giải nó, tức là

| |

trong đó là tập tất cả các thuật toán giải bài toán .

Thông thường do tính phức tạp của bài toán cũng như các thuật toán giải nó nên không dễ dàng gì để đưa ra một đánh giá chính xác cho thời gian tính của nó. Do đó thay vì đi tìm đánh giá chính xác cho độ phức tạp tính toán của một bài toán, người ta có thể đi đánh giá cận trên và cận dưới của nó.

~ 26 ~

Định nghĩa 1.6. Nếu là một thuật toán để giải bài toán và có thời gian tính trong tình huống tồi nhất là thì rõ ràng

tức là ta có cận trên cho độ phức tạp của bài toán là .

Định nghĩa 1.7. Để chỉ ra cận dưới của độ phức tạp tính toán của bài toán là

ta cần phải chỉ ra được rằng mọi thuật toán giải bài toán đều đòi hỏi thời gian tính trong tình huống tồi nhất là .

Định nghĩa 1.8. Để chỉ ra rằng

ta cần có đồng thời 2 điều kiện sau:

i. Có thuật toán với thời gian tính để giải bài toán ;

ii. Mọi thuật toán giải bài toán đều đòi hỏi thời gian tính trong tình huống tốt nhất là

Điều kiện ii) có thể thay bởi điều kiện

ii*) Cận dưới cho độ phức tạp tính toán của bài toán là

Ví dụ xét bài toán tìm kiếm một giá trị khóa trên danh sách gồm phần tử không có thứ tự. Rõ ràng để tìm kiếm xem trong phần tử có phần tử nào có giá trị khóa bằng khóa cần tìm hay không chúng ta cần phải duyệt tất cả phần tử. Vì vậy cận dưới cho bài toán này là . Hơn nữa dễ thấy chỉ cần so sánh với khóa của phần tử là đủ để kiểm tra xem khóa có xuất hiện trong dãy hay không. Như vậy độ phức tạp của bài toán này là .

~ 27 ~

Chúng ta thấy đánh giá cận trên của bài toán cho ta biết rằng bài toán có thể được giải bằng một thuật toán nào đó có độ phức tạp không quá . Còn đánh giá cận dưới của bài toán ta muốn biết xem bài toán khó đến mức nào, tức là ta không thể giải bài toán bằng một thuật toán nào đó mà có độ phức tạp thấp hơn .

1.2.2 Các bài toán NP

Như đã đề cập đến ở phần trước, để đánh giá độ phức tạp của một bài toán chúng ta có thể đi tìm cận dưới độ phức tạp của nó, hoặc đi chứng minh rằng bài toán đang xét có độ phức tạp không thua kém bất cứ một bài toán khó nào hiện biết. Nếu chúng ta chứng minh được điều đó thì bài toán đang xét sẽ được xếp vào lớp các bài toán NP-khó.

Định nghĩa 1.9. Bài toán quyết định (decision problems) là bài toán mà đầu ra chỉ có thể là ‗yes‘ hoặc ‗no‘ ( hay là đúng/sai, 0/1, chấp nhận/từ chối, accept/reject). Đối với một bài toán quyết định, có những bộ dữ liệu vào của nó có câu trả lời (đầu ra) là ‗yes‘ và cũng có những bộ dữ liệu vào có câu trả lời là ‗no‘. Những bộ dữ liệu vào với câu trả lời ‗yes‘ (‗no‘) sẽ được gọi là bộ dữ liệu vào ‗yes‘ (‗no‘). Và tương tự, những bộ dữ liệu vào với câu trả lời ‗no‘ sẽ được gọi là bộ dữ liệu vào ‗no‘. Ví dụ:

Bài toán về tính nguyên tố: ―Hỏi số nguyên có là số nguyên tố hay không?‖.Với là bộ dữ liệu vào ‗yes‘, còn là bộ dữ liệu vào ‗no‘ của bài toán.

Bài toán tổng con (Subset sum): ―Cho tập gồm số nguyên dương

và số nguyên dương . Hỏi có thể tìm được tập con của với tổng các số trong là bằng ?‖

~ 28 ~

Bài toán người du lịch dạng quyết định (Dec-TSP): ―Cho ma trận chi phí

và một số . Hỏi rằng tồn tại hay không hành trình của người du lịch với tổng chi phí không vượt quá ?‖

Định nghĩa 1.10. Xét bài toán tối ưu hóa (P)

Ta gọi bài toán dạng quyết định tương ứng với bài toán tối ưu (P) là bài toán quyết định sau:

(PD) ―cho giá trị . Hỏi có tìm được sao cho hay không?‖ Giữa bài toán tối ưu hóa và bài toán dạng quyết định của nó tồn tại mối liên hệ được phát biểu trong định lý sau

Định lý 1. Nếu bài toán quyết định tương ứng với một bài toán tối ưu có thể giải được hiệu quả (chẳng hạn bằng thuật toán có thời gian tính đa thức) thì bài toán tối ưu đó cũng giải được hiệu quả (bằng thuật toán thời gian tính đa thức).

Chứng minh:

Giả sử bài toán (PD) được giải bằng thuật toán A có thời gian tính với là hằng số. Ta cũng giả thiết rằng là hàm nhận giá trị nguyên có cận trên và cận dưới trên miền xác định là và với . Khi đó sơ đồ thuật toán giải bài toán tối ưu (P) có thể cho như sau:

Bước lặp thứ

 Tính ⁄

 Nếu tìm được thỏa mãn thì đặt ; . Trái lại đặt và .

~ 29 ~

Rõ ràng số bước lặp của thuật toán trên là . Thời gian tính của mỗi bước lặp bằng thời gian tính của một lần thực hiện thuật toán giải bài toán dạng quyết định, tức là bằng . Do đó thuật toán giải bài toán tối ưu (P) ở trên có tổng thời gian tính là . Vậy ta có điều phải chứng minh.

Rất nhiều bài toán quyết định cùng có một đặc điểm chung là để xác nhận câu trả lời ‗yes‘ đối với bộ dữ liệu vào ‗yes‘ của chúng, ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes‘ cho bộ dữ liệu vào ‗yes‘ đó.

Ví dụ

Bài toán kiểm tra tính hợp số: ―Có phải số n là hợp số?‖, để xác nhận câu trả lời ‗yes‘ cho đầu vào , ta có thể đưa ra một ước số của . Để kiểm tra xem đúng là ước số của ta có thể thực hiện phép chia cho sau thời gian đa thức. Trong ví dụ này là bằng chứng ngắn gọn (vì

) và dễ kiểm tra hiểu theo nghĩa là có thuật toán thời gian tính đa thức để kiểm tra đúng là ước số của

Bài toán tổng con, bằng chứng xác nhận câu trả lời ‗yes‘ đối với bộ dữ liệu

là vectơ , trong đó nếu được chọn vào tập và nếu trái lại. Việc kiểm tra xem tập gồm các số được chọn có thoả mãn yêu cầu đặt ra hay không, rõ ràng, có thể thực hiện sau thời gian đa thức.

Bài toán người du lịch dạng quyết định, bằng chứng xác nhận câu trả lời ‗yes‘ cho ma trận chi phí { } của bài toán là dãy các thành phố trên hành trình . Bằng việc cộng tổng chi phí trên các quãng đường, việc kiểm tra xem dãy các thành phố đã cho có phải là hành trình với chi phí không vượt quá có thể thực hiện xong sau thời gian đa thức.

~ 30 ~

Định nghĩa 1.11. Ta gọi bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes’

cho bộ dữ liệu vào ‘yes’ của bài toán là một bằng chứng có độ dài bị chặn bởi một đa thức bậc cố định của độ dài dữ liệu đầu vào của bài toán, và việc kiểm tra nó là bằng chứng xác nhận câu trả lời ‘yes’ đối với đầu vào đã cho của bài toán có thể thực hiện xong sau thời gian đa thức.

Hoàn toàn tương tự, có thể đưa ra định nghĩa bằng chứng ngắn gọn dễ kiểm tra để xác nhận câu trả lời ‘no’.

Có những bài toán việc đưa ra bằng chứng ngắn gọn dễ kiểm tra xác định câu trả lời

‘no’ là dễ tìm hơn so với việc đưa ra bằng chứng ngắn gọn xác định câu trả lời

‘yes’, và cũng có những bài toán thì ngược lại. Ví dụ:

 Đối với bài toán kiểm tra tính nguyên tố, để đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗no’ cho đầu vào của nó, ta có thể đưa ra một ước số của .

 Còn với bài toán kiểm tra tính hợp số thì để đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes’ cho đầu vào của nó, ta cũng chỉ cần đưa ra một ước số của .

Có những bài toán mà việc đưa ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‗yes’ cũng như ‗no’ đều là không dễ dàng.

Ví dụ:

 Bài toán về tính duy nhất của đường đi đơn nối 2 đỉnh của đồ thị vô hướng: Cho đơn đồ thị vô hướng . Hỏi đường đi đơn dài nhất nối hai đỉnh

và của đồ thị có tồn tại duy nhất?

~ 31 ~

Đôi khi còn được gọi là lớp các bài toán dễ giải bởi vì các bài toán thuộc lớp này có thể giải được nhờ các thuật toán thời gian tính đa thức.

Ví dụ:

Bài toán về tính liên thông của đồ thị có thể giải được nhờ thuật toán với thời gian tính là bài toán thuộc lớp .

Bài toán nhân dãy ma trận có thể giải được nhờ sử dụng quy hoạch động với thời gian tính cũng là bài toán thuộc lớp .

Định nghĩa 1.13. Ta gọi NP là lớp các bài toán quyết định mà để xác nhận câu trả lời ‗yes’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.

Ví dụ: Các bài toán kiểm tra tính hợp số, bài toán tổng con hay bài toán du lịch dạng quyết định là các bài toán thuộc lớp NP

Định nghĩa 1.14. Ta gọi co-NP là lớp các bài toán quyết định mà để xác nhận câu trả lời ‗no’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.

Ví dụ: Các bài toán kiểm tra tính nguyên tố, bài toán về tính không chấp nhận được của biểu thức Boolean là các bài toán thuộc lớp co-NP.

Còn bài toán về tính duy nhất của đường đi đơn nối 2 đỉnh của đồ thị vô hướng thì vẫn chưa biết là có thuộc lớp nào trong 2 lớp NP co-NP hay không.

Với một bài toán thuộc lớp P do ta có thể tìm được lời giải của nó sau thời gian đa thức nên ta cũng có thể xác nhận được câu trả lời ‗yes‘ hoặc ‗no‘ của nó (bằng việc giải nó) sau thời gian đa thức. Vì vậy,

và P co-NP. Tuy nhiên điều ngược lại

~ 32 ~ đến nay vẫn chưa ai trả lời được.

NP Co - NP

P

Hình 1-11 Mối quan hệ giữa 3 lớp bài toán P, NP và Co-NP.

Định nghĩa 1.15. Giả sử và là hai bài toán quyết định. Ta nói bài toán có thể qui dẫn sau thời gian đa thức về bài toán nếu tồn tại thuật toán thời gian đa thức cho phép biến đổi bộ dữ liệu vào của thành bộ dữ liệu vào của sao cho

là bộ dữ liệu ‗yes’ (nghĩa là bộ dữ liệu mà câu trả lời cho nó là ‗yes’) của khi và chỉ là bộ dữ liệu ‗yes‘ của .

Trong phần tiếp theo ta chỉ xét phép qui dẫn sau thời gian đa thức, vì thế để ngắn gọn, ta sẽ gọi là phép qui dẫn thay cho phép qui dẫn sau thời gian đa thức.

Nếu A qui dẫn được về B và để giải B đã có thuật toán đa thức thì A cũng sẽ giải được sau thời gian đa thức.

Giải thuật quy dẫn (R)

Giải thuật giải (B) Đầu vào cho B Đầu vào cho A Đầu ra của B Đầu ra của A R(x) x Yes/No Hình 1-12 Sơ đồ phép quy dẫn

Để nói bài toán có thể quy dẫn về bài toán ta có thể kí hiệu như sau:

~ 33 ~

Dễ thấy phép quy dẫn có tính chất bắc cầu: và thì .

Phép quy dẫn thường dùng để so sánh độ khó của 2 bài toán. Nếu quy dẫn được về thì, sai khác một thời gian đa thức, không khó hơn . Nếu A là khó (theo nghĩa chưa tìm được thuật toán thời gian tính đa thức để giải ) thì cũng là khó, còn nếu là dễ (nghĩa là đã có thuật toán thời gian tính đa thức giải ) thì cũng là dễ.

Từ khái niệm quy dẫn chúng ta đưa ra định nghĩa các định nghĩa về lớp các bài toán

NP-khóNP-đầy đủ như sau.

Định nghĩa 1.16. Một bài toán quyết định được gọi là NP-đầy đủ nếu như  là bài toán trong NP, nghĩa là

o là bài toán dạng quyết định

o Để xác nhận câu trả lời ‗yes‘ của ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.

 Mọi bài toán trong NP đều có thể quy dẫn về

NP-đầy đủ vẫn được người ta coi là lớp bài toán khó nhất trong lớp các bài toán NP.

Bổ đề 1.1. Giả sử bài toán là NP-đầy đủ, bài toán là thuộc NP, và bài toán qui dẫn về . Khi đó bài toán cũng là NP-đầy đủ.

Chứng minh:

Giả thiết đã cho là bài toán thuộc NP, vấn đề còn lại là chỉ việc chứng minh mọi bài toán trong NP đều có thể quy dẫn về . Thực vậy, vì là bài toán NP-đầy đủ

nên mọi bài toán NP đều có thể quy dẫn về , mà lại quy dẫn về . Do tính chất bắc cầu của phép quy dẫn ta có mọi bài toán NP đều quy dẫn được về . Từ đó ta có điều phải chứng minh.

Kết hợp định nghĩa 1.15 và bổ đề 1.1 ta có nếu là một bài toán NP-đầy đủ thì mọi bài toán thuộc lớp NP đều có thể quy dẫn về , tức là khó không kém bất cứ một

~ 34 ~

bài toán nào thuộc lớp NP. Suy rộng hơn nữa, vì mọi bài toán NP-đầy đủ trước tiên phải là bài toán NP, do đó các bài toán NP-đầy đủ có thể suy dẫn về nhau, hay nói cách khác chúng có độ khó tương đương nhau. Vấn đề khó khăn nhất là làm thế nào

Một phần của tài liệu Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải (Trang 25)

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

(121 trang)