Travelling salesman problem

Travelling salesman problem - Nearest neighbour algorithm - Messages

#1 Posted: 10/13/2026 5:52:29 AM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Do you know more good solution with SMath?
TSP-n Метод ближайшего соседа.sm (19.27 KiB) downloaded 44 time(s).
TSP-n Метод ближайшего соседа.png
1 users liked this post
Victor 10/13/2026 7:54:03 AM
#2 Posted: 10/13/2026 7:52:14 AM
Victor

Victor

2 likes in 14 posts.

Group: User

А я для задачи коммивояжера использую алгоритм динамического программирование. Недавно написал программу (На маткаде)
#3 Posted: 10/13/2026 8:39:27 AM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Wrote

А я для задачи коммивояжера использую алгоритм динамического программирование. Недавно написал программу (На маткаде)


А вы можете переписать вашу программу на SMath. или просто ею поделиться с нами.
#4 Posted: 10/13/2026 9:24:13 AM
Victor

Victor

2 likes in 14 posts.

Group: User

У меня стоит семерка и SMath не работает. Но в сообщении выше Alvaro написал программу с использованием адгоритма
Белмана-Форда для решения задачи о дилижансе (коммивояжере). Вообще-то алгоритм динамического программирования описан
в литературе туманно и длинно. Для решения предлагается заполнять массу таблиц. Я сперва разобрался с решением вручную, а затем
написал программу. Программу проверил - работает хорошо. Выдает значение оптимального решения и номера пунктов (городов)
через которые проходит этот оптимальный путь.
#5 Posted: 10/13/2026 4:55:20 PM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Wrote

У меня стоит семерка и SMath не работает. Но в сообщении выше Alvaro написал программу с использованием адгоритма
Белмана-Форда для решения задачи о дилижансе (коммивояжере). Вообще-то алгоритм динамического программирования описан
в литературе туманно и длинно. Для решения предлагается заполнять массу таблиц. Я сперва разобрался с решением вручную, а затем
написал программу. Программу проверил - работает хорошо. Выдает значение оптимального решения и номера пунктов (городов)
через которые проходит этот оптимальный путь.


Пришлите Mathcad расчёт, плз!
#6 Posted: 10/13/2026 5:28:58 PM
Victor

Victor

2 likes in 14 posts.

Group: User

Валерий Федорович, а как здесь вставлять картинки?
#7 Posted: 10/13/2026 5:39:55 PM
Victor

Victor

2 likes in 14 posts.

Group: User

Программа состоит из трех подпрограмм. Первые две основные и третья просто убирает лишние нули из вектора-ответа второй.
#8 Posted: 10/13/2026 5:44:07 PM
Victor

Victor

2 likes in 14 posts.

Group: User

Динамика.JPGМатрица динамика.JPG
1 users liked this post
Alvaro 10/14/2026 12:59:37 PM
#9 Posted: 10/13/2026 5:56:03 PM
Victor

Victor

2 likes in 14 posts.

Group: User

Получилась вставка картинки. Итак, первая подпрограмма возвращает длину оптимального пути, вторая-возвращает номера пунктов через которые проходит оптимальный путь (с лишними нулями), третья-убирает эти нули. Аргументом каждой программы является матрица, которая задает стоимость пути из пункта i в пункт j. Если эта стоимость равна нулю-значить такого пути нет.
Матрица r небольшая - можно набрать отличные от нуля элементы вручную.
При использование алгоритма динамического программирования находится оптимальный путь.
P.S.. Первая программа возвращает , конечно. не длину, а стоимость оптимального пути.
Edited 10/13/2026 6:04:39 PM
#10 Posted: 10/13/2026 6:39:27 PM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Wrote

Получилась вставка картинки. Итак, первая подпрограмма возвращает длину оптимального пути, вторая-возвращает номера пунктов через которые проходит оптимальный путь (с лишними нулями), третья-убирает эти нули. Аргументом каждой программы является матрица, которая задает стоимость пути из пункта i в пункт j. Если эта стоимость равна нулю-значить такого пути нет.
Матрица r небольшая - можно набрать отличные от нуля элементы вручную.
При использование алгоритма динамического программирования находится оптимальный путь.
P.S.. Первая программа возвращает , конечно. не длину, а стоимость оптимального пути.


Прикрепите саму программу, плз!
#11 Posted: 10/13/2026 7:24:14 PM
Victor

Victor

2 likes in 14 posts.

Group: User

Вот.Дилижанс 14.mcd (16.37 KiB) downloaded 39 time(s).
1 users liked this post
Alvaro 10/14/2026 12:59:31 PM
#12 Posted: 10/14/2026 5:27:36 AM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Wrote

Вот.Дилижанс 14.mcd (16.37 KiB) downloaded 39 time(s).


Thanks!
One remark.
By solving the traveling salesman problem, we mean the following problem.
There are two vectors, X and Y, storing the coordinates of n points on a plane.
You need to create a function that returns a vector of length n+1 containing the numbers of the points — the traveling salesman path.
You don’t have this.
Спасибо!
Одно замечание.
Под решением задачи коммивояжёра понимают такую задачу.
Есть два вектора X и Y, хранящие координаты n точек на плоскости.
Нужно создать функцию, которая возвращает вектор длиной n+1, содержащий номера точек - путь коммивояжёра.
У вас этого нет.
#13 Posted: 10/14/2026 5:47:54 AM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

The opposite task is to visit all the points via the longest possible route.
TSP-n Метод дальнего соседа.sm (19 KiB) downloaded 23 time(s).
TSP-n Метод дальнего соседа.png
#14 Posted: 10/14/2026 8:26:50 AM
Victor

Victor

2 likes in 14 posts.

Group: User

Я взял классическую постановку задачи коммивояжера для решения ее с помощью алгоритма динамического программирования (см. например Г.Вагнер Основы исследования операций т2." Имеется n городов в некотором государстве, связанных между собой некоторой сетью дорог. Нужно переехать из самого восточного города в самый западный. Задана стоимости переездов из одного города в другой в направлении с востока на запад.Найти путь из самого восточного города в самый западный минимальной стоимости.
Т.е. найти стоимость этого минимального пути и номера городов через которые он проходит. Предложенная мной программа решает эту задачу. Алгоритм ближайшего соседа в общем случае не находит этот оптимальный путь и номера городов через которые он проходит.
#15 Posted: 10/14/2026 8:40:41 AM
Valery Ochkov

Valery Ochkov

67 likes in 707 posts.

Group: User

Wrote

Я взял классическую постановку задачи коммивояжера для решения ее с помощью алгоритма динамического программирования (см. например Г.Вагнер Основы исследования операций т2." Имеется n городов в некотором государстве, связанных между собой некоторой сетью дорог. Нужно переехать из самого восточного города в самый западный. Задана стоимости переездов из одного города в другой в направлении с востока на запад.Найти путь из самого восточного города в самый западный минимальной стоимости.
Т.е. найти стоимость этого минимального пути и номера городов через которые он проходит. Предложенная мной программа решает эту задачу. Алгоритм ближайшего соседа в общем случае не находит этот оптимальный путь и номера городов через которые он проходит.


Прошу простить, но...
Классическая постановка задачи коммивояжера
https://ru.wikipedia.org/wiki/Задача_коммивояжёра

Нарисуйте n городов и проведите через них путь вашего путешественника, а не коммивояжёра. Коммивояжёр выходит из одного города и в него и возвращается.
#16 Posted: 10/14/2026 10:01:23 AM
Victor

Victor

2 likes in 14 posts.

Group: User

Есть незамкнутая задача коммивояжера - когда ему не нужно возвращаться в город из которого он вышел.
Я ошибочно считал, что задача о дилижансе и задача о коммивояжере - это одна и та же задача.
Моя программа решает задачу о дилижансе.
  • New Posts
  • No New Posts