P vs NP: Ví dụ hướng dẫn về thời điểm tìm kiếm Brute Force có thể tránh được


8

Để có thể giải thích vấn đề P vs NP cho những người không phải là nhà toán học, tôi muốn có một ví dụ sư phạm về việc khi nào Brute Force-search có thể tránh được. Vấn đề lý tưởng nên được hiểu ngay lập tức và mẹo không nên quá dễ cũng không quá khó.

Điều tốt nhất tôi nghĩ ra cho đến nay là

SUBSET_PRODVEL_IS_ZERO

Vấn đề rất dễ hiểu (được cung cấp một bộ số nguyên, có thể hình thành một tập hợp con với sản phẩm 0 không?), Nhưng mẹo này quá dễ (kiểm tra xem 0 có nằm trong số các số đã cho không, nghĩa là không cần thiết phải xem nhiều tập hợp con).

Bất kỳ đề xuất?



2n/2+o(n)

Có lẽ tôi đã không hiểu rõ câu hỏi, nhưng nếu bạn cần một vấn đề dễ hiểu trong P với thuật toán thời gian đa thức "mức trung gian", thì tôi đề nghị mức độ thỏa mãn 2-CNF cổ điển .
Marzio De Biasi

4
Làm thế nào về 2-màu vs 3-màu?
Serge Gaspers

6
O(n!)O(n22n)

Câu trả lời:


22

Tôi khuyên bạn nên Jenga !

3NΘ(N)N6NNΘ(N)

Nhưng trên thực tế, Uri Zwick đã chứng minh vào năm 2005 rằng bạn có thể chơi Jenga một cách hoàn hảo bằng cách theo dõi chỉ ba số nguyên, sử dụng một bộ quy tắc đơn giản mà bạn có thể dễ dàng đặt trên danh thiếp. Ba số bạn cần là

  • m=
  • n=
  • t=

nmod3mmod3nm

nhập mô tả hình ảnh ở đây

Ở đây II có nghĩa là bạn nên di chuyển viên gạch giữa từ bất kỳ lớp 3 lớp nào trên cùng, II- có nghĩa là bạn nên di chuyển viên gạch bên từ lớp 3 lên trên cùng, -I- có nghĩa là bạn nên di chuyển viên gạch bên từ lớp 2 lên đỉnh và bob-omb có nghĩa là bạn nên nghĩ về cái chết và buồn bã . Nếu có nhiều hơn một di chuyển được đề xuất trong một hộp, bạn có thể chọn bất kỳ một trong số họ. Việc thực hiện chiến lược này trong thời gian là chuyện nhỏ nếu bạn đã biết thời gian gấp ba hoặc trong thời gian nếu bạn không biết.O(1)(m,n,t)O(N)

Đạo đức: Jenga chỉ vui nếu mọi người vụng về và / hoặc say rượu.


Đó là một ví dụ giảng dạy tuyệt vời, nhưng tôi sẽ chỉ được +1 cho tài liệu tham khảo Pilgrim.
Luke Mathieson

10

Một nhân viên thu ngân phải trả lại xu thay đổi cho khách hàng. Đưa ra những đồng tiền cô ấy có sẵn, cô ấy có thể làm được không và bằng cách nào?x

  • Brute force: xem xét tất cả các bộ sưu tập tiền có thể và xem nếu một trong số chúng cộng với .x
  • Lực lượng không vũ phu: làm điều đó như mọi nhân viên thu ngân làm, bằng lập trình động.

Có hai biến thể của vấn đề:

  1. Dễ dàng : nhân viên thu ngân có nguồn cung không giới hạn của tất cả các mệnh giá.
  2. Khó hơn: nhân viên thu ngân có nguồn cung tiền hạn chế.

Các biến thể dễ dàng có thể được giải quyết bằng một thuật toán tham lam. Cái khó hơn đòi hỏi phải lập trình động.

Trên thực tế, cách trình bày này là đề xuất giải pháp vũ phu, khiến mọi người hiểu rằng nó rất không hiệu quả, và sau đó hỏi họ nhân viên thu ngân làm gì, trước tiên là biến thể dễ, sau đó là khó. Bạn nên có sẵn một số ví dụ có sẵn từ dễ đến khó chịu.


1

Tôi nghĩ rằng tôi đã tìm thấy một ví dụ hữu ích bản thân mình!

Có lẽ tôi hơi mơ hồ, nhưng tôi đang tìm kiếm một vấn đề đáp ứng các thông số kỹ thuật sau:

  • Vấn đề chính nó phải dễ dàng để giải thích cho một người nghiên cứu khoa học xã hội.
  • Nó nên có một thuật toán rõ ràng nhưng không hiệu quả.
  • Nó nên có một thuật toán tốt hơn cũng dễ giải thích cho ai đó nghiên cứu khoa học xã hội.

Đối với Chu kỳ Euler, thật dễ dàng để giải thích rằng đó là một điều kiện cần thiết mà mọi nút phải có mức độ chẵn, nhưng không dễ để giải thích tại sao đó là điều kiện đủ.

Đây là vấn đề mà tôi nghĩ cho đến nay đáp ứng tốt nhất các đặc điểm kỹ thuật ở trên:

FORM_TARGET_SET_WITH_UNIONS

Bộ sưu tập của bộC={S1,S2,...,Sn}

Bộ mục tiêuT

Câu hỏi: Có thể hình thành tập hợp mục tiêu bằng cách lấy liên kết của một số bộ trong không?TC

Thuật toán rõ ràng nhưng không hiệu quả:

  • Thành lập tất cả công đoàn có thể2n
  • Xem nếu một trong số chúng tương ứng vớiT

Thuật toán tốt hơn

  • Đánh dấu các tập hợp trong có trongCT
  • Hình thành liên minh của các bộ nàyS
  • Nếutrả lời , nếu không thì trả lời|S|=|T|YESNO

Ngoài ra còn có vấn đề chị em

FORM_TARGET_SET_WITH_INTERSECTIONS

trong đó thuật toán tốt hơn

  • Đánh dấu các tập hợp trong có chứaCT
  • Tạo giao điểm của các bộ nàyS
  • Nếutrả lời , nếu không thì trả lời|S|=|T|YESNO

Như bạn có thể thấy tôi đang tìm kiếm thứ gì đó thực sự đơn giản (gần như đơn giản như SUBSET_PRODVEL_IS_ZERO).

Vấn đề cũng có thể tương phản với SUBSET SUM và SUBSET SẢN PHẨM, hoàn thành NP nhưng tương tự trong công thức của chúng. Trong tất cả các vấn đề này, người ta được trình bày với một tập hợp các đối tượng và được hỏi liệu một thao tác trên một lựa chọn các đối tượng này có thể tạo ra một kết quả mong muốn hay không.


1
Các vấn đề khác như vậy là nguyên thủy , Horn-SATkết hợp tối đa .
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.