Lớp P là lớp các bài toán giải đƣợc bởi một thuật toán đơn định trong thời gian đa thức (P cũng là lớp các bài toán quyết định giải đƣợc trong thời gian đa thức). Lớp P có thể đƣợc xem là lớp các bài tốn có thể giải đƣợc
trong thời gian thực tế.
Lớp NP là lớp các bài toán giải đƣợc bởi một thuật tốn khơng đơn
định trong thời gian đa thức (NP cũng là lớp các bài toán quyết định tƣơng ứng). NP là lớp các bài tốn khơng thể giải đƣợc trong thời gian thực tế.
Vấn đề đặt ra là P = NP? Bài tốn này có thể phát biểu nhƣ sau:
Mọi bài toán giải đƣợc bởi một thuật tốn khơng đơn định với thời gian đa thức thì cũng giải đƣợc bởi một thuật tốn đơn định nào đó với thời gian đa thức?
Hiển nhiên, thuật toán đơn định là trƣờng hợp đặc biệt của thuật tốn khơng đơn định, vậy P NP. Nhƣng chúng ta không biết bao hàm thức trên có là thật sự hay khơng, bởi vì cho đến nay ngƣời ta vẫn chƣa tìm đƣợc một bài tốn thuộc lớp NP nhƣng khơng thuộc lớp P, tức là với một bài toán NP,
ngƣời ta chƣa tìm đƣợc một thuật tốn đơn định với thời gian đa thức để giải nó, nhƣng cũng không chúng minh đƣợc là khơng tồn tại thuật tốn đó. Vì vậy, câu hỏi P NP?, hay cũng vậy câu hỏi P = NP? vẫn còn bỏ ngỏ.
1.2.2. Các lớp bài toán NPC và NP-hard
Khái niệm qui dẫn
Cho 2 bài toán quyết định P và Q. Chúng ta nói P qui dẫn tới Q (ký
chuyển đổi các thông tin vào của P thành các thông tin vào của Q sao cho: x là thông tin vào "yes" của P khi và chỉ khi g(x) là thông tin vào "yes" của Q.
Bổ đề 1: Cho P, Q, R là các bài toán quyết định. Nếu P Q và Q R thì P R.
Bài tốn NPC
Q đƣợc gọi là NPC nếu Q thuộc lớp NP và mọi bài toán P thuộc lớp
NP đều qui dẫn tới Q.
Bài toán NP-hard
Q đƣợc gọi là NP-hard nếu mọi bài toán P thuộc lớp NP đều qui dẫn
tới Q.
Thƣờng việc chỉ ra một bài toán thuộc NP là khơng q khó khăn, vì
vậy để chứng minh một bài toán Q là NPC, cơng việc chủ yếu là tìm đƣợc
một bài tốn P thuộc lớp NPC sao cho P Q.
Các bài toán lập lịch là các bài toán tối ƣu. Ngƣời ta đã chứng minh đƣợc đa số các bài toán lập lịch đều là NP-hard.