Что Вы считаете (т.е. что называется решением) и что такое симметричный случай?
"Решение" - любой маршрут, удовлетворяющий условию:
1. каждый город посещён хотя бы один раз;
2. коммивояжёр возвращается в исходный город;
Симметричный случай - когда связи между городами задаются неориентированным графом.
Извиняюсь за то, что я также забыл указать, что все города связаны друг с другом (простейший вариант задачи).
В первую очередь обратите внимание на то обстоятельство, что по Вашему алгоритму каждое решение будет посчитано
раз.
Насколько я понимаю, это в силу того, что маршрут замкнутый?
То есть, если
- текущий маршрут (поскольку все рёбра связаны друг с другам концовку
я не указываю), то маршруты
...
совпадают с ним.
Поэтому общее число перестановок
(каждая из которых соответствует некоторому маршруту) делим на
.
А после этого приглядитесь, чтобы увидеть, что каждый маршрут в симметричном случае (если я правильно понял, т. е. вес ребра туда и обратно одинаковый), вы посчитаете дважды. И всё.
Верно ли следующее обоснование? Поскольку все города связаны друг с другом, то обязательно найдутся два "противоположных" маршрута, проходящих одни и те же рёбра, но в противоположных направлениях.
Если
-
-ое ребро текущего маршрута, то соответствующими маршрутами будут следующие:
А поскольку рёбра
и
равнозначный, то два указанные маршрута соответствуют одному решению, поэтому
делим ещё на два. Верно ли такое рассуждение?