Bài giảng Phân tích và thiết kế giải thuật - Chương 7: Vấn đề NP-đầy đủ
1.Giải thuật thời gian đa thức tất định và không tất định
2.Vấn đề NP-đầy đủ
3.Định lý Cook
4.Một số bài toán NP-đầy đủ
5.Một số kỹ thuật để đối phó với những bài toán NP-đầy đủ
Tồn tại hay không tồn tại giải thuật hữu hiệu
•Đối với nhiều bài toán chúng ta có những giải thuật hữu hiệu để giải.
•Tuy nhiên, có rất nhiều bài toán khác không có giải thuật hữu hiệu để giải.
•Và đối với một lớp khá lớn của những bài toán như vậy, chúng ta không thể nói có tồn tại giải thuật hữu hiệu để giải nó hay không.
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phân tích và thiết kế giải thuật - Chương 7: Vấn đề NP-đầy đủ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- bai_giang_phan_tich_va_thiet_ke_giai_thuat_chuong_7_van_de_n.ppt
Nội dung text: Bài giảng Phân tích và thiết kế giải thuật - Chương 7: Vấn đề NP-đầy đủ
- 2. Vấn đề NP-đầy đủ Có một danh sách những bài toán mà đã biết là thuộc về lớp NP nhưng không rõ có thể thuộc về lớp P hay không. (Tức là, ta giải chúng dễ dàng trên một máy không tất định nhưng chưa ai có thể tìm thấy một giải thuật hữu hiệu chạy trên máy tính thông thường để giải bất kỳ một bài toán nào của chúng). Những bài toán NP này lại có thêm một tính chất nữa là: “Nếu bất kỳ một trong những bài toán này có thể giải được trong thời gian đa thức thì tất cả những bài toán thuộc lớp NP cũng sẽ được giải trong thời gian đa thức trên một máy tất định.” 11
- Những bài toán như vậy được gọi là những bài toán NP-đầy đủ (NP-complete) Hình 6.1 NP-complete NP P 12
- Tính khả thu giảm đa thức (Polynomial reducibility) • Lớp NP-đầy đủ là lớp con của những bài toán khó nhất trong lớp NP. • Công cụ chính để chứng minh một bài toán thuộc loại NP- đầy đủ là ý tưởng về tính khả thu giảm đa thức (polynomial reducibility). • Bất cứ giải thuật nào giải được bài toán mới thuộc loại NP có thể được dùng để giải một bài toán NP-đầy đủ nào đó đã biết bằng cách sau: biến thể một thể hiện bất kỳ của bài toán NP-đầy đủ đã biết thành một thể hiện của bài toán mới, giải bài toán này bằng giải thuật đã có để tìm ra một lời giải, rồi biến thể lời giải này trở về thành một lời giải của bài toán NP-đầy đủ đã biết. 13
- Tính khả thu giảm đa thức (tt.) Để chứng minh một bài toán thuộc loại NP là NP-đầy đủ, ta chỉ cần chứng tỏ rằng một bài toán NP-đầy đủ đã biết nào đó thì khả thu giảm đa thức về bài toán mới ấy. Định nghĩa: (Thu giảm về). Ta bảo bài toán L1 thu giảm về (reduces to) bài toán L2, ký hiệu là L1 L2 nếu bất kỳ giải thuật nào giải được L2 thì cũng có thể được dùng để giải L1. 14
- Tính khả thu giảm đa thức (tt.) Để chứng minh một bài toán mới L là NP-đầy đủ, chúng ta cần chứng minh: 1. Bài toán L thuộc lớp NP 2. Một bài toán NP-đầy đủ đã biết thu giảm về L. Thí dụ: Cho hai bài toán ◼ Bài toán người thương gia du hành (TSP): cho một tập các thành phố và khoảng cách giữa mỗi cặp thành phố, tìm một lộ trình đi qua tất cả mọi thành phố sao cho tổng khoảng cách của lộ trình nhỏ hơn M. ◼ Bài toán chu trình Hamilton (HCP): Cho một đồ thị, tìm một chu trình đơn mà đi qua tất cả mọi đỉnh. 15
- Tính khả thu giảm đa thức (tt.) Giả sử ta biết HCP là NP-đầy đủ và muốn xác định xem TSP cũng là NP-đầy đủ hay không. Bất kỳ giải thuật nào có thể được dùng để giải bài toán TSP cũng có thể được dùng để giải bài toán HCP, thông qua sự thu giảm sau: Cho một thể hiện của bài toán HCP (một đồ thị), hãy tạo ra một thể hiện của bài toán TSP tương ứng như sau: • tạo ra các thành phố của bài toán TSP bằng cách dùng tập đỉnh trong đồ thị; • về khoảng cách giữa hai cặp thành phố ta gán giá trị 1 nếu có tồn tại một cạnh giữa hai đỉnh tương ứng trong đồ thị và giá trị 2 nếu không có cạnh. Rồi thì dùng giải thuật giải TSP để tìm một lộ trình N (N là số đỉnh trong đồ thị). 16
- Tính khả thu giảm đa thức (tt.) Nghĩa là HCP thu giảm về TSP, như vậy tính chất NP-đầy đủ của HCP hàm ý tính chất tính chất NP-đầy đủ của TSP. Sự thu giảm HCP về TSP là đơn giản vì hai bài toán có những nét tương tự nhau. Sự thu giảm thời gian đa thức có thể sẽ rất phức tạp khi chúng ta liên kết những bài toán mà tương đối khác nhau. Thí dụ: Có thể thu giảm bài toán thoả mãn mạch logic (CSP) về bài toán HCP. 17
- 3. Định lý Cook Nhưng: Bài toán nào là bài toán NP-đầy đủ đầu tiên? S.A. Cook (1971) đã đề xuất được một chứng minh trực tiếp đầu tiên rằng bài toán thỏa mãn mạch logic (CSP) là bài toán NP-đầy đủ. “Nếu tồn tại một giải thuật thời gian đa thức để giải bài toán thỏa mãn mạch logic thì tất cả mọi bài toán trong lớp NP có thể được giải trong thời gian đa thức.” Chứng minh của Cook rất phức tạp nhưng chủ yếu dựa vào máy Turing (Turing machine) tổng quát. 18
- 4. Một số bài toán NP-đầy đủ Hàng nghìn bài toán khác nhau được biết là NP-đầy đủ. Danh sách này bắt đầu bằng bài toán thoả mãn mạch logic, bài toán người thương gia du hành (TSP) và bài toán chu trình Hamilton. Một vài bài toán khác như sau: - Bài toán phân hoạch số: Cho một tập những số nguyên, có thể phân hoạch chúng thành hai tập con mà có tổng trị số bằng nhau? - Bài toán qui hoạch nguyên: Cho một bài toán qui hoạch tuyến tính, liệu có tồn tại một lời giải toàn số nguyên? 19
- - Xếp lịch công việc trên đa bộ xử lý ( multiprocessor scheduling): Cho một kỳ hạn (deadline) và một tập các công tác có chiều dài thời gian khác nhau phải được thực thi trên hai bộ xử lý. Vấn đề là có thể sắp xếp để thực thi tất cả những công tác đó sao cho thỏa mãn kỳ hạn không? - Bài toán phủ đỉnh (VERTEX COVER): Cho một đồ thị và một số nguyên N, có thể kiếm được một tập nhỏ hơn N đỉnh mà chạm hết mọi cạnh trong đồ thị ? - Bài toán xếp thùng (BIN PACKING): cho n món đồ mà phải đặt vào trong các thùng có sức chứa bằng nhau L. Món đồ i đòi hỏi li đơn vị sức chứa của thùng. Mục đích là xác định số thùng ít nhất cần để chứa tất cả n món đồ đó. 20
- P NP ? Những bài toán nêu trên và nhiều bài toán liên quan có những ứng dụng thực tế quan trọng. Sự kiện không có những giải thuật tốt được tìm thấy cho bất kỳ bài toán nào trong số những bài toán nêu trên là một bằng chứng mạnh mẽ rằng P NP. Dù cho P có khác NP hay không, một sự kiện thực tế là chúng ta không có những giải thuật đảm bảo có thể giải bất kỳ một bài toán NP-đầy đủ nào một cách hữu hiệu. 21
- Một số kỹ thuật để đối phó với những bài toán NP-đầy đủ 1. Dùng “giải thuật xấp xỉ “(approximation algorithm) để tìm lời giải xấp xỉ tối ưu (near-optimal). 2. Dựa vào hiệu năng của trường hợp trung bình để phát triển một giải thuật mà tìm ra lời giải trong một số trường hợp nào đó, mặc dù không làm việc được trong mọi trường hợp. 3. Sử dụng những giải thuật có độ phức tạp hàm mũ nhưng hữu hiệu, ví dụ như giải thuật quay lui. 4. Đưa heuristic vào giải thuật để tăng thêm hiệu quả của giải thuật. 5. Sử dụng metaheuristic. 22
- Heuristic và meta heuristic ▪ Heuristic là tri thức về bài toán cụ thể được sử dụng để dẫn dắt quá trình tìm ra lời giải của giải thuật. Nhờ sự thêm vào các heuristic mà giải thuật trở nên hữu hiệu hơn. ▪ Meta heuristic là loại heuristic tổng quát có thể áp dụng cho nhiều lớp bài tóan. ▪ Gần đây meta heuristic là một lãnh vực nghiên cứu phát triển mạnh mẽ, với sự ra đời của nhiều meta heuristic như: - giải thuật di truyền (genetic algorithm) - giải thuật mô phỏng luyện kim (simulated annealing) - tìm kiếm tabu (Tabu search) v.v . 23
- Đóng góp của vấn đề NP-đầy đủ Có nhiều bài toán NP-đầy đủ trong các lãnh vực ❑ giải tích số (numerical analysis), ❑ sắp thứ tự và tìm kiếm, ❑ xử lý dòng ký tự (string processing), ❑ Mô hình hóa hình học (geometry modeling) ❑ xử lý đồ thị (graph processing). Sự đóng góp quan trọng nhất của lý thuyết về NP-đầy đủ là: nó cung cấp một cơ chế để xác định một bài toán mới trong các lãnh vực trên là “dễ” hay “khó”. 24
- Bốn lớp bài toán phân theo độ khó ▪ Những bài toán bất khả quyết (Undecidable problems): Đây là những bài toán chưa hề có giải thuật để giải. Thí dụ: Bài toán quyết định xem một chương trình có dừng trên một máy Turing. ◼ Những bài toán khó giải (intractable) : đây là những bài toán mà không tồn tại giải thuật thời gian đa thức để giải chúng. Chỉ tồn tại giải thuật thời gian hàm mũ để giải chúng. ◼ Những bài toán NP-đầy đủ Những bài toán NP-đầy đủ là một lớp con đặc biệt của lớp bài toán NP. ◼ Những bài toán P. 25