лучше бы придумал алгоритм разаязывания петель в коммивояжере.
Что такое петли, и зачем их развязывать?!
Амальгама |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Амальгама » Лукоморье 2.0 » Вторая тень
лучше бы придумал алгоритм разаязывания петель в коммивояжере.
Что такое петли, и зачем их развязывать?!
лучше бы придумал алгоритм разаязывания петель в коммивояжере.
Сначала нужно придумать сам алгоритм решения задачи коммивояжера, а потом уже смотреть, какие там петли...
А мужики то и не знают !!
Впрочем, весьма возможно, что ты прав!
возьмем наш родной четырехугольник
у него есть ПУТЬ и ИМЯ - периметр
выкинем узел
и чо будет ПУТЬ короче чем периметр *?
Вот как-то сразу не нашел опровергающий пример...
И потом не нашел...
Зато нашел ошибку в своих расчетах...
Теперь мне нужно проверить,
всегда ли, выкидыванием любой одной точки из N,
из кратчайшего маршрута через N точек получается кратчайший маршрут через N-1 точку.
Если да, то это просто здорово!
Случай N=5 для моих исходных данных - я уже был готов выложить быстренько,
но нашел нестыковку, которая есть следствие ошибки, которую не нашел пока.
Поэтому начинаю выкладывать здесь и сейчас, поскольку нужно идти уже дальше,
но быстренько уже не получится, поскольку надо будет всё перепроверять
попутно
Случай N=5, поехали!
А, нет, стоп!
никуда покуда не поехали...
У меня еще не все углы расчитаны...
Отредактировано Лукомор (2019-01-19 08:41:49)
Что такое петли, и зачем их развязывать?!
Сначала нужно придумать сам алгоритм решения задачи коммивояжера, а потом уже смотреть, какие там петли...
Ну вот способ ближвйшего соседа неплох, но петьли дает
https://habr.com/ru/post/329604/
А мой параллельный коммутацией коротких лучше, но тоже дает петли
А мой параллельный коммутацией коротких лучше, но тоже дает петли
Так и не понял, что такое эти "петли", и чем они тебе не угодили?!
петли - это наверно пересечения
хотя.....
Если пересечение не находится на точке, можно укоротить путь, сменив коммутацию точек в пересечении и направление прохода петли.
Если пересечение не находится на точке, можно укоротить путь, сменив коммутацию точек в пересечении и направление прохода петли.
Да, тут в этом конкретном примере напильником легко доработать...
Петля: (100,90), (85,20), (100,0), (85,50) перестановкой двух внутренних точек переводится в контур: (100,90), (100,0), (85,20), (85,50),
а петля из 12 звеньев от (100,90) до (50,75) перестановкой (100,90), (50,100), (10,85) в начале петли, и (25,70), (50,75) в конце петли.
А мой параллельный коммутацией коротких лучше, но тоже дает петли
Он таки "лучше", или "тоже дает петли"?
Он таки "лучше", или "тоже дает петли"?
И то и это. Ближ. сосед вдобавок зависит от точки начала и петляет по-разному, а мой не зависит
Если пересечение не находится на точке, можно укоротить путь, сменив коммутацию точек в пересечении и направление прохода петли.
А ты не знаешь будет пересечение или нет,пока сам себя не загонишь в тупик
А ты не знаешь будет пересечение или нет,пока сам себя не загонишь в тупик
Никто не запрещает методом последовательных приближений допиливать пошагово!
С каждой итерацией улучшая чего-нить...
Вот, например:
Петля: (100,90), (85,20), (100,0), (85,50) перестановкой двух внутренних точек
переводится в контур: (100,90), (100,0), (85,20), (85,50),
это действо (в правом нижнем углу твоего примера)
дает сокращение пути ажно на 3,791,
с 564,516 до 560,725, т.е. менее одного прОцента...
а петля из 12 звеньев от (100,90) до (50,75)
перестановкой (100,90), (50,100), (10,85) в начале петли,
и (25,70), (50,75) в конце петли.
Это уже более радикальная перестановка,
она дает выигрыш в 34,985, что, с учетом предыдущего улучшения,
дает кратчайший путь длиною в 525,740.
Общий выигрыш от развязывания двух петель составил без малого 7 процентов от исходного решения.
Отредактировано Лукомор (2019-01-19 12:07:29)
А ты не знаешь будет пересечение или нет,пока сам себя не загонишь в тупик
Это хороший алгоритм поимки льва в пустыне:
просто сидишь и ждешь, когда лев сам себя загонит в тупик.
Ближ. сосед вдобавок зависит от точки начала и петляет по-разному, а мой не зависит
Казалось бы, причем тут точка начала,
если маршрут всё равно замкнутый,
а замкнутый маршрут остается кратчайшим,
с какой точки не начинай обход.
Казалось бы, причем тут точка начала,
если маршрут всё равно замкнутый,
а замкнутый маршрут остается кратчайшим,
с какой точки не начинай обход.
А вот, оказывается, что способ ближ. соседа дает разные путанки в зависимости от начала
А вот, оказывается, что способ ближ. соседа дает разные путанки в зависимости от начала
Это крайне плохо!
То что пути разные, означает, просто, что они не кратчайшие.
Хуже всего то, что он может и вобще не дать кратчайшего пути, даже после перебора всех начальных точек...
Если пересечение не находится на точке, можно укоротить путь, сменив коммутацию точек в пересечении и направление прохода петли.
с кем ты разговариваешь ?
а замкнутый маршрут остается кратчайшим,
с какой точки не начинай обход.
по сурьезу ?
кстати
насчет возврата в ноль в условии имх ничего не сказано
или я что то пропустил
что
у него хаза там ?
А вот, оказывается, что способ ближ. соседа дает разные путанки в зависимости от начала
Это если из середки брать. А ты попробуй за начальный брать самый крайний, например, самый нижний/самый правый.
То что пути разные, означает, просто, что они не кратчайшие.
естественно. Это ж эвристический способ, который не дает гарантии точного. Точный только с отсевом всех возможных запретных с получением кратчайшего разрешенного
И еще я бы метод ближайшего соседа дополнил бы предварительной таксономией, чтобы разбить все точки на группы.
И это даже для перебора выигрышно.
Типа, три группы по 10 точек каждая лучше, чем одна группа 30 точек. Имеется в виду, что перебор путей идет сначала между группами в целом, а уже потом внутри каждой группы между точками.
Это должно хорошо работать для существенно неравномерного распределения точек в пространстве. Типа, несколько городов, внутри каждого сколько-то точек - достаточно оптимизировать маршрут внутри каждого города, а потом маршруты между городами, не надо перебирать все варианты связей между всеми точками.
И, соответственно, будет неэффективно, если распределение в пространстве более-менее равномерное.
Это если из середки брать. А ты попробуй за начальный брать самый крайний, например, самый нижний/самый правый.
Из какой середки? Способ ближайшего зависит от точки начала. Мой способ параллельной коммутации не зависит от начальной точки, но путанку тоже дает.
разбить все точки на группы.
Есть такой, не помню названия
кстати
насчет возврата в ноль в условии имх ничего не сказано
или я что то пропустил
что
у него хаза там ?
Ты что-то пропустил...
Вот классическая формулировка:
Задача коммивояжёра (англ. Travelling salesman problem, сокращённо TSP) —
одна из самых известных задач комбинаторной оптимизации,
заключающаяся в поиске самого выгодного маршрута,
проходящего через указанные города хотя бы по одному разу
с последующим возвратом в исходный город.
В сущности, этот классический вариант более всего соответствует смыслу работы реального коммивояжера.
Пробежавшись по всему маршруту,
распродав по пути товар,
он возвращается на базу,
в город, где у него типа склад.
Там он затаривается новой порцией товара,
и уходит на следующий цикл.
Существуют всякие еретические отступления от классического варианта задачи, например:
Замкнутый и незамкнутый варианты задачи[править | править код]
В замкнутом варианте задачи коммивояжёра требуется посетить все вершины графа, после чего вернуться в исходную вершину.
Незамкнутый вариант отличается от замкнутого тем, что в нём не требуется возвращаться в стартовую вершину.
Это, как: "увидеть Париж, и умереть".
Задача одноразового коммивояжера.
Отредактировано Лукомор (2019-01-19 17:03:52)
он возвращается на базу,
я не возражаю
но раньше я это себе представлял как детский билиард где маленькая пушечка последовательно выстреливает шарики и они безвозвратно находят пути с разными очками
с кем ты разговариваешь ?
А разве я обязан к кому-то конкретно обращаться ?
А разве я обязан к кому-то конкретно обращаться ?
че так серьезно
сразу ?
это обычное обращение,когда человек не может вникнуть в текст аффтора )
и представляет его голос как бы исходящий из зеркала
Кто-то вдруг произнес с выражением:
-- "Устремив свои мысли на высшее "Я", свободный от вожделения и
себялюбия, исцелившись от душевной горячки, сражайся, Арджуна!"
Я вздрогнул. Парень тоже вздрогнул.
-- "Бхагавад-гита"! -- сказал голос. -- Песнь третья, стих
тридцатый.
то же из этой серии
- какие же вы дураки оба !!
я вообще не могу понять о чем вы говорите
Незамкнутый вариант отличается от замкнутого тем, что в нём не требуется возвращаться в стартовую вершину.
о
блин!!
а я и не знал
что я говорю прозой (с)
Вы здесь » Амальгама » Лукоморье 2.0 » Вторая тень