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

Амальгама

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

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


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


Другая тень

Сообщений 451 страница 480 из 1000

451

#p109653,Zagar написал(а):

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

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

0

452

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

Короче,
"Я тут порисую... немножко!"
(с) Лукомор

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

0

453

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

Действительно, сначала данные кучкуются

В дейтамайнинге это называется таксономия.

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

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

Если ты про эту самую таксономию, то она не статистический метод.

0

454

#p109653,Zagar написал(а):

Мне так кажется, что для больших карт должны быть эффективны алгоритмы с фрагментацией карты.

Я,
при изложении своего метода "объединения пунктов",
умолчал,
в основном, для того, чтобы не перегружать изложение подробностями, напрямую не относящимися к методу,
но и, отчасти умышленно, чтобы потом рассмотреть отдельно,
но в методе "объединения точек", как побочный эффект,
уже на первой итерации возникает как раз такая фрагментация карты.
Если внимательно рассмотреть самый первый этап работы метода, где вычисляется для каждого пункта ближайший к нему пункт,

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

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

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

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

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

Отредактировано Лукомор (2019-08-27 07:53:32)

0

455

#p109662,Zagar написал(а):

таксономия

Исходно я думал о кластеризации, но пусть будет таксономия.

0

456

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

с выбором ближайшей точки с примерным совпадением направления движения челнока?

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

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

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

Вообще-то мне нужно до 1 сентября закончить эту тему, выложить всё, что у меня по ней осталось, поскольку с 1 сентября до 1 сентября по старому стилю  http://www.kolobok.us/smiles/standart/smile3.gif ,
у меня будут гости, и будет всяких хлопот невпроворот.

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

0

457

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

но пусть будет таксономия.

Та главное, шоб не таксидермия...
http://sh.uploads.ru/t/58Byx.jpg
http://www.kolobok.us/smiles/standart/smile3.gif

0

458

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

метод, который это учитывает

как то в двух-трех словах
а ?

0

459

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

как то в двух-трех словах
а ?

Ни в двух, ни в трех словах не получится никак:

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

1.метод,
2. который
3. это
4. учитывает

- уже четыре слова!  http://www.kolobok.us/smiles/standart/smile3.gif

0

460

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

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

Смотри только много хлопот не употребляй, А то
*пытается подобрать русский перевод слову "заклопотаный"* вредно в общем.

0

461

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

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

С этого места продолжу...
Уже после первой итерации возникают сами  собой четыре фрагмента маршрута, уже с готовыми кратчайшими маршрутами внутри фрагментов (напомню, мы эти участки выбирали по методу ближайшего соседа).
http://s3.uploads.ru/t/W8DnV.jpg

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

http://s5.uploads.ru/t/Xr2ub.jpg

С двумя соединительными линиями сразу все понятно: участки 1 - 16  и  3 - 9 сомнения не вызывают.
их сразу включаем в маршрут, и убираем лишние красные линии.

http://s5.uploads.ru/t/VRr60.jpg

Остается два варианта включения участка 0 - 14 - 12 - 8 в кольцо маршрута:
0 - 2  и  8 - 15,
дибо
0 - 15  и 2 - 8.
Тут уже надо считать суммы длин пар отрезков.
Первый вариант:
90,139 + 25,179 = 115,318
Второй вариант:
58,258 + 55,902 = 114,160
С небольшим перевесом, но второй вариант победил.

http://sd.uploads.ru/t/6Escn.jpg

Хотя, почему, собственно, с небольшим перевесом?
Второй вариант, в качестве бонуса, имеет еще скрытую петлю между пунктами №8 и №15.
Её распутывание сократит общий маршрут еще на 4,322 км и мы вновь получим кратчайший маршрут в 448,150 км.
Первый вариант скрытых петель не имеет. Улучшать его некуда...

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

Отредактировано Лукомор (2019-08-28 06:19:24)

0

462

надеюсь это будет формирование глобуса с последующей натяжкой

0

463

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

надеюсь это будет формирование глобуса с последующей натяжкой

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

Действительно мой крайний метод начнется именно с формирования, типа глобуса...
А потом уже по этому сформированному типа глобусу... рюшечки..  http://www.kolobok.us/smiles/standart/smile3.gif .

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

0

464

я
я
четфертое измерениэ

0

465

Я вернулся!

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

Я начал с того, что взял для рассмотрения условия несложной учебной задачи
на 17 пунктов с вот этого сайта

Координаты пунктов:

http://s7.uploads.ru/t/OoRst.jpg

План местности:

http://sg.uploads.ru/t/CUfM0.jpg

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

Вот самый короткий из найденных маршрутов:

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

Его длина L = 457.504 км.

Далее я оптимизировал маршруты,
исключив пересечения, которые я также называю "явными петлями".
Новый диапазон кратчайших маршрутов от 455.413 до 532.008 км.

Вот новый самый короткий кратчайший маршрут:

http://s9.uploads.ru/t/xXG7Y.jpg

Его длина L = 455.412 км.

На следующем этапе я ввел новое понятие "скрытая петля".

Распутав скрытые петли я получил 10 различных кратчайших маршрутов в диапазоне длин маршрутов
от 453.182 до 509.714 км.

Абсолютным рекордсменом стал маршрут длиной
L = 453.182 км, вот он:

http://s7.uploads.ru/t/TgUL0.jpg

После того, как все возможности метода "ближайшего соседа" были исчерпаны,
я применил собственный, только что изобретенный, метод "объединения пунктов",
и нашел маршрут длиною  L = 452.472 км., который стал новым рекордом для данных начальных условий.

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

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

Недостаток метода в том, что он не находит скрытые петли.

Распутывание скрытой петли на найденном маршруте дало новый рекордный результат с длиной маршрута L = 448.150 км.

http://sd.uploads.ru/t/wry45.png

С этой отправной точки мы и отправимся в дальнейший путь.

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

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

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

0

466

Вот вам ещё одна задача коммивояжёра:

Рабинович, будучи владельцем трикотажной фабрики, принял на службу молодого коммивояжера.

— Вот шо, дорогой мой!.. Завтра же утренним поездом отправляйтесь в Бердичев… Как устроитесь в отель, отдохните, хорошенько позавтракайте, хлопните рюмашку Наполеончика для настроения и отправляйтесь к нашему давнему клиенту Зусману. Представьте ему нашу полную коллекцию чулок, сделайте заказ и пришлите мне СМС-ку о заключении сделки.

На следующий день вечером Рабинович получает СМС-ку от своего агента:

— Во всем Бердичеве нет “Наполеона”… Что делать?!

+2

467

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

изобретенный, метод "объединения пунктов",

внимательно оглядев диаграммы
пришел к однозначному выводу
диаграмма краткого пути должна быть антропоморфна !!!

0

468

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

диаграмма краткого пути должна быть антропоморфна !!!

Не зря же я выше геномы составлял этих коротких путей.
К этому, в итоге, все и свелось,
но дорога была извилистой как кратчайший маршрут коммивояжера...
Да!
Я вчера уже был готов это всё изложить в рамках данной темы.
Но... вчера был хоккей!
А хоккей - важнее!  http://www.kolobok.us/smiles/standart/smile3.gif

0

469

из школьного

(в темном зрительном зале)
что показывают ?
"спартака"
а Хусаинов играет ?
нет!
а хрена тогда тут смотреть ?

+1

470

Ладно!
Все дела насущные я сделал, теперь можно присесть, и спокойно завершить эту тему, не отвлекаясь по пустякам...

Я изобрел, во многом случайно, метод "объединения точек" для решения задачи коммивояжера.
На первой итерации, метод позволяет перейти от задачи с 17 пунктами, к задаче с 13 пунктами, что вполне достаточно для тестирования абсолютно всех онлайн-калькуляторов, существующих в сети.

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

http://s5.uploads.ru/t/vbuj4.png

с матрицей расстояний между пунктами:

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

Этим же методом "объединения точек" я решил эту новую задачу, и получил вполне сносную длину кратчайшего пути через эти 13 точек,
L =393.845 км.

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

Отредактировано Лукомор (2019-09-12 16:57:44)

+1

471

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

Я изобрел, во многом случайно,

Поздравляю!
Ни хрена не понял, если честно
Но рад

0

472

а как же точка два ?

0

473

а не пробовал отбросить шестнадцать точек ?

0

474

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

путем объединения пары пунктов, взаимно ближайших друг к другу

А почему именно эти 13??

0

475

#p110950,fyunt написал(а):

Ни хрена не понял, если честно

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

А почему именно эти 13??

Для тех, кто не в теме, отсылаю на стр.14 этого топика, еще более точно,  к сообщению 411,
Еще точнее -

ТУДОЙ или СЮДОЙ!

С этого сообщения начинается изложение метода "объединения точек",
применительно как раз к этой задаче для 13 точек, которая получается там после первой итерации.
Заканчивается изложение метода на следующей странице, последнее сообщение имеет номер 434.
Дальнейшее всё: разумное, доброе и вечное, - накрыто девятым валом флуда...

0

476

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

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

Слесарь-гинеколог

0

477

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

а как же точка два ?

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

А почему именно эти 13??

У меня есть условия задачи с 17 пунктами, которую сюда приволок Шарпер когда-то с сайта МЭИ,
или с Хабра, и все свои теоретические построения я проверяю на ней, однообразия для.

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

http://sd.uploads.ru/t/DzUl0.png

При этом некоторые коммивояжеры двигаются навстречу друг другу. (зеленые линии на плане).
У нас таких взаимно ближайших точек нашлось - четыре пары: 7 и 16, 2 и 10, 8 и 12, 5 и 6.
Коммивояжеры вышедшие из этих пунктов, при условии равных скоростей, встретятся посредине, между соответствующими пунктами.
А остальные девять коммивояжеров не встретятся (красные стрелки), поскольку ближайшие пункты к их исходным пунктам, не соответствуют друг другу.

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

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

Поэтому (лукаш !) у нас больше нет пунктов 7 и 16, 2 и 10, 8 и 12, 5 и 6,
а есть лишь 13 пунктов: 0, 1, 3, 4, 9, 11, 13, 14, 15, А, B, C, D.

0

478

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

а не пробовал отбросить шестнадцать точек ?

В этом и заключается сущность метода "объединения точек".
На первой итерации я нашел четыре пары взаимно-ближайших точек, и заменил их четырьмя точками посредине между ними.
Для оставшихся 13 точек на второй итерации я нашел 3 пары, и уменьшил общее количество точек до 10.
На следующей итерации нашлась всего одна пара, потом еще одна, и у меня осталось 8 точек.
Зато на пятой итерации эти 8 точек развалились на 4 пары, и у меня остался выпуклый четырехугольник,
а находить кратчайший маршрут на выпуклых фигурах мы умеем.
Можно опуститься и до одной точки, но никакого практического смысла в этих действиях решительно нет.
Правда в методических целях я там дошел до трех точек, но лишь потому,
что обратный переход от 4 точек к 8 точкам несколько сложен для начального понимания, а переход от 3 точек к 4 точкам, -
прост и нагляден.
Вот и все.
Когда я, следуя несложным правилам, обратным ходом вернулся к 4, 8, 9, 10, 13, и , наконец, к 17 точкам,
у меня получился кратчайший маршрут для каждой из этих конфигураций.

0

479

а чо ж ты раньше то молчал !
ясен же пень - обычная ИТЕРАЦИЯ !

0

480

Анекдоты из России

А вы знаете, что безграмотных теперь в гроб не кладут, а ложат?

0


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