2015-07-18 2 views
0

Будет ли проблема выдавать, является ли данное скремблированное слово истинным английским словом, является эквивалентной проблемой для проблемы коммивояжера? Хорошо известная стратегия состоит в том, чтобы сгенерировать все перестановки данного слова и сравнить все их со всеми словами в английском словаре. Этот алгоритм будет иметь временную сложность O(N!). Я мог представить себе, что эти два отличаются в важном аспекте: если вы найдете перестановку, которая соответствует слову, вы можете прекратить генерировать перестановки, тогда как с помощью TSP вам придется проверять каждую комбинацию маршрутов независимо. Однако я написал алгоритм, который вместо генерации всех перестановок заданного слова длиной n вместо этого сортирует буквы в данном слове и выполняет тот же алгоритм на словах словаря, а затем сравнивает две отсортированные строки (этот метод работает в 100% случаев). Мой алгоритм использует сортировку по умолчанию Java, и после исследования я обнаружил, что он работает от O(n log n). В целом, моя программа работает от O(n log n), потому что этот термин растет самым большим, поскольку n приближается к бесконечности. Этот алгоритм работает меньше, чем полиномиальное время. Итак, если проблемы эквивалентны, не могли бы вы использовать аналогичный метод для решения проблемы TSP? Как это относится к P против NP? Извините, если что-либо из этого не имеет смысла, или я не использовал терминологию правильно, я не так разбираюсь в этом полеTSP vs. Word Unscrambler

+0

Тот факт, что вы можете решить проблему скремблирования слова в O (n log n) (который BTW является полиномиальным временем), является ключом к тому, что проблемы не эквивалентны. Если бы они были эквивалентны, это означало бы, что любая проблема TSP может быть превращена в соответствующую проблему скремблирования слов, которую вы могли бы затем решить в многократное время - и поскольку TSP доказано, что NP-жесткий, это будет означать, что NP = P, и вы выиграете миллион долларов. –

+0

@j_random_hacker, это именно то, что я надеялся на lol – Michael

ответ

4

Тот факт, что существуют алгоритмы одинаковой сложности для решения двух задач, t обязательно означает, что проблемы имеют одинаковую сложность, потому что могут существовать более эффективные алгоритмы для одной из проблем, но не для другой.

Правильный способ соотнесения сложности различных проблем сокращение: Если вы можете показать, что любой экземпляр задачи может быть преобразован в экземпляр задачи B таким образом, что ответ на трансформированный экземпляр такой же, как ответ на исходный экземпляр, то задача в, по крайней мере столь же сложным, как проблема (так как алгоритм, который решает B также может решить A). Если вы также можете показать снижение в обратном направлении, то A и B одинаково сложны.

В вашем случае в настоящее время не существует способа преобразования произвольной задачи TSP в эквивалентную проблему разборки, поэтому он (насколько нам известно) не тот случай, когда проблемы имеют одинаковую сложность.

+2

+1, но TTBOMK «это невозможно» слишком сильно, так как это означает, что это доказанный факт. Я считаю, что все, что мы можем сказать, заключается в том, что никто еще не нашел сокращения от любой NP-жесткой проблемы до любой проблемы в P, несмотря на десятилетия внимания лучших умов в информатике. –

+0

@j_random_hacker: Вы правы (и я неаккуратно замалчивал это); Я отредактировал свой ответ. –

Смежные вопросы