Як я можу перевірити рішення проблеми мандрівного продавця в поліноміальний час?


31

Отже, проблема рішення TSP (Проблема продавця подорожей) не є повною .

Але я не розумію, як я можу переконатися, що дане рішення TSP насправді є оптимальним за багаточленного часу, враховуючи, що немає можливості знайти оптимальне рішення в поліноміальний час (це тому, що проблема не в P)?

Що-небудь, що може допомогти мені побачити, що перевірка насправді може бути виконана за полиномним часом?

Відповіді:


20

Щоб бути більш точним, ми НЕ знаємо , якщо TSP в . Цілком можливо , що вона може бути вирішена за поліноміальний час, хоча , можливо, загальне переконання в тому , що PN P . Тепер пригадайте, що означає для проблеми N P- твердий та N P -комплектний, дивіться, наприклад, мою відповідь тут . Я вважаю , що ваш джерело плутанини виникає з визначення: N P -Жорсткий проблема не обов'язково в N P .PPNPNPNPNPNP

Як ви і на сторінці Вікіпедії Ви зв'язуєтеся стану, то проблема рішення є -повний: враховуючи витрати і ціле число х , вирішити , чи є тур дешевше , ніж х . Один із способів бачити проблему в N P полягає в тому, щоб побачити, що, даючи рішення, в поліноміальний час легко перевірити, чи рішення є дешевшим, ніж x . Як ви можете це зробити? Просто слідкуйте за поданою екскурсією, запишіть її загальну вартість і, нарешті, порівняйте загальну вартість до x .NPxxNPxx


"Just follow the tour given, record its total cost and finally compare the total cost to x." -> Yes, but there are exponential number of tours to check!
Lazer

2
I was just a tad too slow, it seems. ;-)
Niel de Beaudrap

3
@Lazer No, there is exactly one tour to check. You are given a tour and you record its length. If it is less than x, output yes, otherwise no.
Juho

"decide whether there is a tour" this definitely means that we are not given a tour. What am I missing?
Lazer

3
@Lazer No, in the problem you are given a weighted graph and a target cost. The certificate is a tour. For an alternative explanation, see Niel's answer. Just as in the example on Wiki in the case of SUBSET-SUM, we are not given zero, but instead we are given a particular subset as a certificate.
Juho

34

The crux is that you have to consider the decision problem:

Travelling Salesman Problem (Decision Version). Given a weighted graph G and a target cost C, is there a Hamiltonian cycle in G whose weight is at most C?

For a 'yes' instance, the certificate is just some Hamiltonian cycle whose weight is at most C. If you could solve this problem efficiently, you could find the cost of a minimum tour by binary search, starting with the weight of the entire network as an upper bound.


3

You are probably thinking of the problem of determining whether a given solution to the TSP is the best solution. However, there is no known polynomial solution for this, which means that this problem is in NP-hard, but not necessarily NP-Complete.

The TSP Decision Problem is actually about determining whether the weight of any solution in a graph G is at most cost C (as explained better in Niel's answer), which is certainly verifiable in polynomial time.


5
Sorry for the pedantry, but TSP is not NP-hard because there are O(n!) tours. For example, sorting is in P although there are n! possible permutations as well. Huge or quickly growing search spaces don't always imply hardness.
Juho

@Juho It is possible to verify that a sequence is sorted, by simply checking that n0<=n1<=.... However, to know that something is the BEST solution for TSP, it is required to know that the cost is the minimum cost, which inherently requires knowing all other costs.
Casey Kuball

4
No, you can obtain the optimum even without computing the lengths of all the other tours. And yes, it is possible to prove this is in fact the optimum without computing all the other tours. For an example consider branch & bound.
Juho

7
All I'm saying is that huge search spaces don't necessarily mean the problem is difficult. Even when we for example don't know of a better algorithm than brute-force that enumerates all the possibilities, it doesn't mean it's the only algorithm out there. Dynamic programming is good example even here: the Held-Karp algorithm is an exact algorithm for TSP running in O(n22n) time. Sorry, this is arguably just nitpicking, but I just wanted to add a reminder :)
Juho

@Juho good point. I've updated the answer to no longer indicate brute force as the only option (only that there aren't any polynomial solutions).
Casey Kuball

2

You can show that it is optimal given an oracle that solves the decision problem (see other answers) in polynomial time by querying if there exists a shorter solution. If your goal is to construct an optimal solution given the oracle, proceed as follows. Find the minimum total weight via binary search (or if there are non-integer edge weights, find a total weight which differs from the minimum by less than the min difference between two edge weights). Call this value M. For each edge in the graph, remove the edge, and query the oracle to see if there is still a solution of at most M. If so, leave the edge out, and continue. If not, put the edge back in, and continue. When you've processed all the edges, you'll be left with a Hamiltonian cycle of minimum weight.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.