Làm thế nào khó khăn để đếm số lượng đường dẫn đơn giản giữa hai nút trong một biểu đồ có hướng?


29

Có một thuật toán đa thức dễ dàng để quyết định xem có một đường dẫn giữa hai nút trong biểu đồ có hướng hay không (chỉ cần thực hiện một biểu đồ thường xuyên đi qua với, giả sử, tìm kiếm theo chiều sâu).

Tuy nhiên, có vẻ như, đáng ngạc nhiên, vấn đề trở nên khó khăn hơn nhiều nếu thay vì kiểm tra sự tồn tại mà chúng ta muốn đếm số lượng đường dẫn.

Nếu chúng ta cho phép các đường dẫn sử dụng lại các đỉnh thì có một giải pháp lập trình động để tìm số lượng đường dẫn từ s đến t với n cạnh. Tuy nhiên, nếu chúng ta chỉ cho phép các đường dẫn đơn giản, không sử dụng lại các đỉnh, thì giải pháp duy nhất tôi có thể nghĩ đến là liệt kê lực lượng của các đường dẫn , một thứ có độ phức tạp theo thời gian theo cấp số nhân.

Vì vậy tôi hỏi,

  • Việc đếm số lượng đường đi đơn giản giữa hai đỉnh có khó không?
  • Nếu vậy, nó là loại NP-hoàn thành? (Tôi nói loại này vì về mặt kỹ thuật không phải là vấn đề quyết định ...)
  • Có vấn đề nào khác trong P có phiên bản đếm khó như vậy không? **

BTW, tôi thực sự biết câu trả lời cho câu hỏi này bây giờ nhưng tôi tò mò về loại câu trả lời tôi sẽ nhận được nếu tôi hỏi lại khi tôi lần đầu tiên đưa ra câu hỏi.
hugomg


@Suresh: Tôi biết cách viết mã tìm kiếm vũ phu. Câu hỏi của tôi nếu có một thuật toán hiệu quả hơn. Trong mọi trường hợp, câu hỏi SO này sẽ giống nhau hơn, và thậm chí bao gồm một câu trả lời của tôi, nếu bạn quan tâm đến spoilers.
hugomg

Câu trả lời:


18

Lớp phức tạp phổ biến nhất liên quan đến các vấn đề đếm là #P . Quyết định nếu có một đường dẫn đơn giản từ một nút nhất định đến một nút khác rõ ràng là trong NP. Đếm chúng sau đó là #P.

n!

Câu trả lời cho hai câu hỏi đầu tiên của bạn là: có, nó khó, nó là # P-Complete (ref) .

Bài viết Wikipedia cung cấp các sự kiện thích hợp: 1) các thuật toán xác suất rất hữu ích để tính gần đúng các hàm # P-hoàn chỉnh và đó là loại thuật toán được sử dụng cho phép tính gần đúng trong bài viết trước. 2) Có các vấn đề dễ dàng khác với các phiên bản đếm cứng (# P-Complete):

  • tìm kiếm (tuyến tính) so với việc đếm tất cả các bài tập thỏa mãn công thức DNF hoặc một thể hiện của 2-SAT
  • tìm kiếm (tuyến tính) so với đếm sắp xếp tôpô
  • tìm kiếm (O (VE)) so với đếm kết hợp hoàn hảo trong đồ thị lưỡng cực

Bạn đã biết rằng nếu bạn loại bỏ ràng buộc "đường dẫn đơn giản" thì vấn đề rơi vào P (bạn cũng phải giới hạn độ dài của các đường dẫn bằng một đa thức kích thước của biểu đồ hoặc đưa ra ràng buộc trong unary)

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.