Là vấn đề đồ thị hữu hạn này có thể quyết định? Những yếu tố làm cho một vấn đề có thể quyết định?


17

Tôi muốn biết nếu vấn đề sau đây là quyết định và làm thế nào để tìm hiểu. Mọi vấn đề tôi thấy tôi có thể nói "có" hoặc "không" với nó, vì vậy hầu hết các vấn đề và thuật toán có thể quyết định được ngoại trừ một số ít (được cung cấp ở đây )?

Dữ liệu vào: Một đồ thị có hướng và hữu hạn , với và là các đỉnh Câu hỏi: Có một đường dẫn trong với là đỉnh ban đầu và là đỉnh cuối cùng tồn tại không?Gvu
Guv


Câu trả lời:


18

Bất kỳ vấn đề nào chỉ yêu cầu kiểm tra một lượng dữ liệu hữu hạn là có thể quyết định được, bởi vì có một thuật toán bao gồm liệt kê tất cả các giải pháp tiềm năng. Nó có thể chậm một cách lố bịch, nhưng điều đó không liên quan: nếu có một thuật toán, nó có thể quyết định được.

Vấn đề bạn nêu giả định một đồ thị hữu hạn, trong đó gợi ý mạnh mẽ rằng nó có thể quyết định được. Nói đúng ra, bạn cần nhìn xa hơn một chút. Vấn đề là một thuộc tính trên các đường dẫn trong biểu đồ và đôi khi có vô số đường dẫn, khi biểu đồ chứa một chu kỳ (bạn có thể lặp xung quanh chu trình này bao nhiêu lần tùy thích). Tuy nhiên, thật dễ dàng để biến vấn đề thành một vấn đề hữu hạn: nếu có bất kỳ đường dẫn nào bắt đầu bằng và kết thúc bằng v bao gồm một chu kỳ, thì bạn có thể cắt bỏ tất cả các chu trình trong đường dẫn đó và bạn có một giải pháp mới không bao gồm một chu kỳ. Vì có một số đường dẫn hữu hạn không liên quan đến một chu kỳ (nếu đồ thị có k cạnh, có nhiều nhất là k !uvkk!các đường dẫn không sử dụng cùng một cạnh nhiều lần), vấn đề tìm đường dẫn từ đến v là không chính xác, do đó có thể quyết định được.uv

Ngẫu nhiên, tài sản này được gọi là kết nối .

Cách tiếp cận này là một cách phổ biến, được gọi là giảm . Đưa ra một vấn đề không đơn giản, chúng tôi đã giảm nó thành một vấn đề mà chúng tôi biết cách giải quyết.

Thường rất khó để chứng minh rằng một vấn đề là không thể giải quyết được. Để chứng minh rằng một vấn đề là có thể quyết định, tất cả những gì chúng ta cần làm là trình bày một thuật toán quyết định nó. Để chứng minh rằng một vấn đề là không thể giải quyết được, chúng ta cần chứng minh rằng không có thuật toán nào có thể tồn tại. Có một vài vấn đề nổi tiếng không thể giải quyết được. Trong thực tế, hầu hết thời gian, khi chúng tôi chứng minh rằng một vấn đề là không thể giải quyết được, chúng tôi cho thấy rằng có một vấn đề nổi tiếng không thể giải quyết được làm giảm vấn đề của chúng tôi. Vì một thuật toán cho vấn đề của chúng tôi sẽ giải quyết vấn đề nổi tiếng không thể giải quyết được, nên vấn đề của chúng tôi cũng không thể giải quyết được.

Bạn thực sự không thể nói rằng các vấn đề của hầu hết các vấn đề trên thế giới là có thể giải quyết được Trong một số ý nghĩa lý thuyết, hầu hết tất cả các vấn đề là không thể giải quyết được, nhưng chúng tôi có xu hướng mạnh mẽ để giải quyết các vấn đề thú vị của Keith, và những vấn đề đó có nhiều khả năng có một giải pháp.


15

Vấn đề là có thể quyết định tầm thường, như được chỉ ra bởi Gilles trong một bình luận. Đối với câu hỏi khác của bạn ...

hầu hết các vấn đề và thuật toán có thể quyết định được ngoại trừ một số ít (được cung cấp ở đây )?

Không. Trên thực tế, hầu hết các vấn đề là không thể giải quyết được. Trên thực tế, có vô số vấn đề (ngôn ngữ), nhưng chỉ có nhiều máy Turing có thể đếm được, điều đó có nghĩa là có nhiều nhất có thể đếm được nhiều vấn đề có thể quyết định.


8

Vâng, điều này là quyết định, bởi vì bạn có thể thực hiện tìm kiếm toàn diện tất cả các đường dẫn có thể. Không cần phải nhìn vào bất kỳ đường dẫn nào lặp lại một đỉnh, vì "đường vòng" có thể bị bỏ qua. Nhưng độ dài của bất kỳ đường dẫn không lặp lại nào bị giới hạn bởi kích thước của biểu đồ, là hữu hạn, và do đó chỉ có nhiều đường dẫn chính xác, có thể được kiểm tra từng cái một.

Gabab


Nó không phụ thuộc vào đầu vào? Ý tôi là khi thông tin đã cho không đủ để tìm ra câu trả lời, tôi có nên nói nó không thể giải quyết được không?
Gigili

Tôi không chắc chắn những gì bạn đang hỏi; cho vấn đề bạn mô tả đầu vào là đủ để tìm câu trả lời.
Carl Mummert

@Gigili Nếu vấn đề là không thể giải quyết được, sẽ không thể đưa ra thuật toán có thể xuất ra có hoặc không cho tất cả các đầu vào. Đó không phải là trường hợp trong vấn đề này vì với BFS, chúng ta luôn có thể xác định liệu một đường dẫn có tồn tại hay không (trong thời gian tuyến tính cũng vậy).
Zach Langley

@ZachLangley: Phải, tôi đã hỏi về trường hợp chung. Nếu thông tin đã cho là đầu vào không đủ để giải quyết vấn đề, thì vấn đề là không thể giải quyết được?
Gigili

uvuv

7

Không có phương pháp nào cho bạn biết liệu một vấn đề cụ thể có thể quyết định được hay không. Theo thời gian, bạn có thể có được một "linh cảm" tốt cho dù một vấn đề cụ thể có thể quyết định được hay không.

Những gì tôi thường làm là như sau:

  1. cố gắng giải quyết vấn đề Đó là, hãy thử nghĩ về một chương trình máy tính giải quyết vấn đề đã cho. Đối với vấn đề được đề xuất của bạn - một chương trình rất đơn giản sẽ chỉ kiểm tra bất kỳ đường dẫn có thể nào và do đó sẽ luôn thành công để tìm thấy nó (nếu nó tồn tại) hoặc cho bạn biết không có đường dẫn nào tồn tại.
  2. xây dựng vấn đề rõ ràng. Nhiều vấn đề chỉ là quá mơ hồ, nhưng khi được viết rõ ràng, rất dễ dàng để xem liệu có thể quyết định được hay không (bằng cách so sánh với các vấn đề khác, được biết là không thể / có thể quyết định hoặc bằng cách sử dụng các phương pháp đã biết như định lý của Rice )
  3. Nếu (2) không hoạt động nhưng bạn vẫn tin rằng vấn đề là không thể giải quyết được, hãy thử chứng minh bằng cách giảm từ một vấn đề không thể giải quyết được (vấn đề tạm dừng (hoặc bổ sung của nó) hoạt động trong nhiều trường hợp).

Hầu như luôn luôn, khi cố gắng thực hiện bước (1) cho một vấn đề không thể giải quyết được, bạn sẽ cần chương trình của mình để kiểm tra số thứ. Đây thường là một dấu hiệu cho thấy vấn đề không thể quyết định được.

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.