Содействие - исключение из 3-го закона Ньютона.

Амальгама

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Амальгама » Лукоморье 2.0 » Другая тень


Другая тень

Сообщений 421 страница 450 из 1000

421

#p108989,DoctorLector написал(а):

Неужели задачу коммивояжёра впервые поставил австрийский художник?

Речь о конкретной конфигурации для 17 пунктов.
И эта конфигурация к нам сюда из Московского Энергетического Института приплыла.
Может, что-то на подсознательном .уровне..  http://www.kolobok.us/smiles/artists/laie/LaieA_016.gif

0

422

Ага! Вот же она! Не в ту папку сохранил...
Пятая, и последняя итерация:

http://s9.uploads.ru/t/U8wWl.png

Все восемь пунктов чудесным образом разбились на пары,
и осталось всего четыре пункта!

http://sh.uploads.ru/t/MzLvV.png

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

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

Поскольку "есть время объединять пункты, и есть время разделять пункты".  http://www.kolobok.us/smiles/standart/smile3.gif
Но мы пока этого делать не будем.

Потому что переход от четырех сразу к восьми пунктам, совсем не сложный, но пестрит разноцветными линиями, так что в глазах рябит.
Чтобы как-то объяснить алгоритм обратного разделения пунктов, и что при этом происходит, я перейду по накатанной схеме от четырех пунктов к трем, а потом быстренько -обратно к четырем - пара действий лишних в плане решения задачи коммивояжера, но весьма полезных в методическом плане, для понимания алгоритма, и его работы.

Итак, делаем шестую итерацию:

http://sg.uploads.ru/t/6BzwF.png

Получаем один взаимно-кратчайший маршрут, между пунктами M  и   N, находим последний медианный пункт Р, и получаем треугольник KLP, крайнюю точку нашего движения на уменьшение числа пунктов.

http://s5.uploads.ru/t/4oQLm.png

Отредактировано Лукомор (2019-09-13 08:45:02)

0

423

знал бы где упал
постелил бы бабу с возу

0

424

#p109000,лукаш написал(а):

знал бы где упал
постелил бы бабу с возу

Баба с возу
вылетит - не поймаешь!  http://www.kolobok.us/smiles/light_skin/unknw.gif

Отредактировано Лукомор (2019-08-20 11:47:21)

0

425

Крайняя итерация заключалась в том, что отрезок MN мы заменили медианным пунктом P,
который мы соединили с пунктами  K и L.

Высадив бабу с воза, и развернув кобылу на обратный путь, мы должны проделать следующее:
восстановить отрезок MN, исключив пункт Р,
и
соединить концы восстановленного отрезка - пункты М и N - с пунктами К и L.

В отличие от отдельного пункта, который можно соединить с двумя пунктами единственным образом,
отрезок с двумя теми же пунктами можно соединить "либо так, либо наоборот".

http://s8.uploads.ru/t/Klmer.png

И нам необходимо выбрать такую "полярность" подключения, чтобы суммарная длина двух соединительных отрезков была минимальной.
Компьютер это посчитает, сделав перебор из двух вариантов, а мы с вами видим и так, что сумма длин двух "красных" линий, больше, чем сумма длин двух "зеленых".
Вот эти зеленые и выберем.
Дальше я везде буду придерживаться такой красно-зеленой нотации.

Теперь нам нужно перепрыгнуть от четырех пунктов к восьми.
Мы восстанавливаем отрезки:
№3 - Е (исключив из рассмотрения пункт К)
№9 - B (исключив пункт L)
№0 - F (исключив пункт M)
№1 - J (исключив пункт N)

http://s3.uploads.ru/t/fiAKd.png

Эти четыре отрезка надо соединить теперь так, чтобы получился замкнутый маршрут минимальной длины.
Чтобы не делать полный перебор всех вариантов, я разбиваю процедуру на два этапа.
На предварительном этапе, благо его можно проводить для каждого из четырех новых отрезков по отдельности, этот выбор никак не влияет на соседние отрезки,
я выбираю отрезок (например №9 - В) и сравниваю, опять же, два варианта суммы расстояний от его концов до старых пунктов, K и  M, как будто трех других новых отрезков еще нет.
Так я поступаю независимо с каждым новым отрезком, полагая на время, что это единственный новый отрезок, а остальные все точкипункты из прошлой итерации.

http://sd.uploads.ru/t/d3Tl1.png
Выясняется (я всё посчитал), что:
Сумма длин отрезков (№3 - L)  и (E - N)
меньше чем (№3 - N) и (E - L).
Сумма длин отрезков (№9 - K)  и (B - M)
меньше чем (№9 - M) и (B - K).
Сумма длин отрезков (№0 - N)  и (F - L)
меньше чем (№0 - L) и (F - N).
Сумма длин отрезков (№1 - K)  и (J - M)
меньше чем (№1 - M) и (J - K).

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

http://s5.uploads.ru/t/35bMi.png

Для этого мы попарно соединяем пункты, из которых более короткие пути ведут во встречных направлениях.
Мы выяснили на предварительном этапе, что из пункта №3 соединительная линия пойдет в сторону пункта L,
то -есть, теперь уже в направлении пары, (№9 - В) ,
а от точки №9 - в направлении пункта К, то-есть теперь уже в направлении пары (№3 - Е).
Из этих четырех пунктов совпадают только два №3 и №9.
Вот их мы и соединим окончательно.
Аналогично, из пункта Е будем двигаться в направлении пунктов №1 и J, из пункта №1 в направлении №3 или Е.
Соединяем, соответственно, совпавшие  пункты №1 и Е.
Точно также совпадут пункты B   и  F,  №0 и J.
Окончательная картинка получившегося кратчайшего маршрута через 8 пунктов такова:

http://sg.uploads.ru/t/2J8RC.png

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

Отредактировано Лукомор (2019-09-13 08:45:59)

0

426

При объединении пунктов, мы переходили от 9 пунктов к 8.
Теперь нас ждет обратный переход от 8 пунктов к 9.
Для моих постоянных читателей,
которые вместе со мной совершили героический переход от четырех пунктов сразу к восьми пунктам -
это семечки.
Действительно, вот окончательная схема для 8 пунктов.
Мы должны точку J разделить на точки №15 и H.

http://s8.uploads.ru/t/W5abe.png

Точка J была соединена с точками №0 и №1.

Имеем 2 варианта полярности соединения:
Либо №15 - №0 и Н - №1,
либо наоборот -  №15 - №1 и Н - №0.

прямым расчетом находим, что первый вариант предпочтительнее (зеленые линии).
Соединяем.

Отредактировано Лукомор (2019-08-20 12:12:22)

0

427

легко понять ...(с)

0

428

#p109011,лукаш написал(а):

легко понять ...(с)

Там всё просто.
Что непонятно, то либо пропускаем, либо сразу задаем вопросы, а то я потом тоже забуду, о чем шла речь...

0

429

Я дико извиняюсь, но мой эклер подсказывает, что я где-то похожее с группированием видел... Но я своему эклеру не верю. Он карамелизирован.

0

430

Двухфазные (кластерные) алгоритмы.

Смысл подхода двухфазных алгоритм состоит в разбиении задачи на две операции — группирование вершин для будущего маршрута (кластеризация) и решение задачи коммивояжера (ЗК) для каждой из этих групп. Двухфазные методы также делятся на еще две группы алгоритмов:

1) сначала происходит кластеризация, затем выполняется поиск решения ЗК;

2) сначала ищется решение ЗК, а затем оно делится на несколько маршрутов. При этом ЗК решается на всем исходном множестве вершин.

0

431

#p109015,Шарпер написал(а):

Смысл подхода двухфазных алгоритм состоит в разбиении задачи на две операции — группирование вершин для будущего маршрута (кластеризация) и решение задачи коммивояжера (ЗК) для каждой из этих групп.

- Знаете ли вы, кто был главным противником антиалкогольной компании,
объявленной Горбачевым?
- Пьяницы?
- Некрасивые женщины!
http://www.kolobok.us/smiles/light_skin/yahoo.gif

ЗЫ: Карлсон улетел, но угрожал вернуться.  http://www.kolobok.us/smiles/standart/smile3.gif
ЗЗЫ: Цифру назови - длину кратчайшего маршрута для этой задачи...

Отредактировано Лукомор (2019-08-20 12:28:40)

0

432

попугай усевшись на плече Кацмана
заорал гнусным голосом
- НА ГЛОБУС !
-НА ГЛОБУС !!

0

433

#p109016,Лукомор написал(а):

ЗЫ: Карлсон улетел, но угрожал вернуться.  http://www.kolobok.us/smiles/standart/smile3.gif

А чо сразу бегемот?

0

434

А мы, пока Шарпер угадывает  цифру для длины кратчайшего маршрута, поднимаемся от 9 точек к 10.

http://s5.uploads.ru/t/jLTHy.png
Пункт Н мы заменяем обратно отрезком №13 - G.
Снова из двух возможных вариантов выбираем один, более короткий (зеленые линии, не красные), получается вот такая хрень:

http://s3.uploads.ru/t/Wh45D.png
На следующей итерации заменяем отрезки E, F, G на отрезки №11 - А, №14 - С, №4 - D:

http://sg.uploads.ru/t/uIv65.png

И, наконец, переходим к 17 пунктам:

http://sh.uploads.ru/t/QMfjG.png

В результате не сложных преобразований переходим к заключительному варианту:

http://s7.uploads.ru/t/vNc2K.png

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

452.472 против 453.182.

Мы вновь победили!!!

Но и это еще не всё!

Внезапно мы замечаем, что скрытая петля, между пунктами №8 и №15, здесь вновь присутствует,
и можно ее распутать, как мы уже делали ранее, сократив и  этот маршрут:

http://sh.uploads.ru/t/fpClW.png

Тем самым, впервые, но не в последний раз, пробита психологическая отметка в 450 км.
для этой задачи!

Новый рекорд :  448.150.

УРА, товарищи!!!

Отредактировано Лукомор (2019-08-20 13:17:18)

0

435

#p109019,Шарпер написал(а):

А чо сразу бегемот?

#p109016,Лукомор написал(а):

Цифру назови - длину кратчайшего маршрута для этой задачи...

0

436

#p109023,Лукомор написал(а):

Цифру назови - длину кратчайшего маршрута для этой задачи...

Откуда мне ее знать? Я ваще примус починяю...

0

437

#p109019,Шарпер написал(а):

А чо сразу бегемот?

Вот по моим наблюдениям, пеккемоот никкоктаа не сраазу.

0

438

#p108976,DoctorLector написал(а):

Это не твой метод. Ещё при советской власти реализовали

#p109013,Шарпер написал(а):

Я дико извиняюсь, но мой эклер подсказывает, что я где-то похожее с группированием видел...

#p109015,Шарпер написал(а):

Двухфазные (кластерные) алгоритмы.

ЭхЪЪ!  http://www.kolobok.us/smiles/light_skin/scratch_one-s_head.gif
Недаром говорят: "Как свой метод назовёте, так критики и слетятся!" http://www.kolobok.us/smiles/standart/smile3.gif

Надо всё-таки было назвать, как и задумывал изначально,
не "Метод Объединения Пунктов", а просто:"Метод Пластилиновой Вороны"!  http://www.kolobok.us/smiles/light_skin/yahoo.gif 
Помните там , в эпическом мультике,
одна пластилиновая картинка скатывалась до куска пластилина,
http://s8.uploads.ru/t/oZdnx.png
а потом из этого куска раскатывалась совсем другая картинка?!
http://s3.uploads.ru/t/bQN1n.png

Это про мой метод, как раз!

Ничего, вот свой следующий метод, про который я расскажу чуть позднее я назвал "Метод Термоусадки"!  http://www.kolobok.us/smiles/light_skin/yahoo.gif
Замучитесь гуглить, нет ничего похожего!  http://www.kolobok.us/smiles/artists/snoozer/disobedient.gif

Отредактировано Лукомор (2019-08-20 18:27:04)

0

439

#p109057,Лукомор написал(а):

Недаром говорят: "Как свой метод назовёте, так критики и слетятся!"

Да я -то чо? Я ничо. Меня интересуют только точные методы, так что я просто услышал звон и решил проинформировать

0

440

#p109057,Лукомор написал(а):

"Метод Термоусадки"!

#p109018,лукаш написал(а):

попугай усевшись на плече Кацмана
заорал гнусным голосом
- НА ГЛОБУС !
-НА ГЛОБУС !!

+1

441

Что-то я утомился в таком темпе флудить...
Беру краткосрочный отпуск на три дня.
А где-то ориентировочно в субботу, но не позднее понедельника,
напомню о своем втором открытии, и изложу своё второе изобретение,
в виде метода решения задачи коммивояжера, на этом втором открытии полностью базирующемся.

Если же до конца понедельника не объявлюсь:

"Значит, либо одно из двух,
либо одно из трёх!"

© Лукомор
http://www.kolobok.us/smiles/light_skin/yahoo.gif

0

442

#p109058,Шарпер написал(а):

так что я просто услышал звон и решил проинформировать

Так информируй уже! :

#p109015,Шарпер написал(а):

1) сначала происходит кластеризация, затем выполняется поиск решения ЗК;

2) сначала ищется решение ЗК, а затем оно делится на несколько маршрутов. При этом ЗК решается на всем исходном множестве вершин.

Вот я только что представил учёному содружеству "Амальгама" абсолютно новый алгоритм, сиречь метод,
он который из двух, тобою проинформированных?..

Может ты просто слышал звон?
Так это в церкви  колокола звонили...
или трамвай проехал...  http://www.kolobok.us/smiles/light_skin/pleasantry.gif

Отредактировано Лукомор (2019-08-20 18:53:39)

0

443

Вот отвлекся тут на бегемота, и забыл, что надо подвести итоги.

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

!. Он никогда не дает, в результате его применения,
маршрутов с пересечением отрезков (явных петель),
которые гарантированно отсекаются на этапе разделения пунктов.

2. Он не зависит от выбора начального пункта,
поскольку на первой итерации этапа объединения пунктов
выбираются первые участки маршрута сразу от всех пунктов одновременно.

К сожалению представленный метод имеет серьезный недостаток.
Он не находит скрытые петли, из-за чего найденный  маршрут не является абсолютно кратчайшим.

0

444

#p109058,Шарпер написал(а):

Меня интересуют только точные методы,

Как говорил Остап Бендер:
"Гарантию дает только страховой полис!".

Применительно к задаче коммивояжера: точный метод всего лишь один - полный перебор!

Все остальные методы - эвристические, в большей или в меньшей степени эффективные...

0

445

#p109065,Лукомор написал(а):

Применительно к задаче коммивояжера: точный метод всего лишь один - полный перебор!

Да. И не факт, что не существует способа

0

446

#p109065,Лукомор написал(а):

Применительно к задаче коммивояжера: точный метод всего лишь один - полный перебор!
Все остальные методы - эвристические, в большей или в меньшей степени эффективные...

Топик можно закрывать? http://www.kolobok.us/smiles/standart/smile3.gif

0

447

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

+7

448

#p109089,DoctorLector написал(а):

делятся на перебирастов и эвреев

Я Вам это ужо припомню!

0

449

#p109087,Ал написал(а):

Топик можно закрывать?

Не факт!
Мне вот пришла такая мысль в сознание:
Возможно для решения задачи коммивояжера за полиномиальное время нужно пользоваться не одним каким-то методом, а гибко и плавно переходить с одного метода на другой совершенствуя решение, подобно тому, как сложное изделие не изготавливается при помощи одной лишь кувалды, а требует соответствующего инструментария и.т.п.

Вот вечер понедельника, и я готов продолжить отчет о своих изысканных изысканиях в причудливом и загадочном мире коммивояжеров.

Короче,
"Я тут порисую... немножко!"
(с) Лукомор   http://www.kolobok.us/smiles/light_skin/blush.gif

0

450

#p109651,Лукомор написал(а):

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

Мне так кажется, что для больших карт должны быть эффективны алгоритмы с фрагментацией карты. Там должны быть методы крупного уровня, которые оптимально рубят карту на куски, и мелкого уровня, которые строят тракеторию внутри каждого куска.
Ну типа, на карте есть есть десять городков по 10 точек в каждом, маршрут строится внутри каждого городка, а потом один раз между городками. Такая задача много легче, чем для 100 равноценных точек на едином пространстве.
В принципе, таких уровней может быть и не два, а больше.
И да, еще могут быть разные алгоритмы для разных типов карт.
Я глобально согласен с тем, что такие комбинированные подходы будут плодотворнее, чем попытки построить единый универсальный алгоритм для любых карт с любым количеством точек.

0


Вы здесь » Амальгама » Лукоморье 2.0 » Другая тень