Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задача коммивояжера с переменными весами 
:(
    Опции темы
GooG2e
Дата 17.2.2016, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.2.2016

Репутация: нет
Всего: нет



Всем привет!
Сразу скажу, что задача сложная и я надеюсь хоть на какую-то помощь и совет. Любые мысли и идеи приветствуются и предлагаю их обсуждать. Позже постараюсь с примерами картинок оформить.
Чем отличается задача от традиционного коммивояжёра:
1)У перехода две стоимости - время и расстояние
2)Переход от точки к точки допустимо совершать только в определённое время и от перехода зависит время перехода (грубо говоря мы переходим из A в B и допустим в 13:00 это стоит 1 час времени, а в 15:00 - 2 часа времени, стоимость в расстоянии не меняется). Соответственно у нас есть время отправления и прибытия из точки в точку. По каждому необходимо пройтись ОДИН раз. Если где-то осталась непройденное направление, то допускается пройтись ещё один раз по направлению (учитывая времена).
3)В каждой точке коммивояжёр должен отдохнуть определённое время(зависит от точки и только после этого он может ехать дальше)
4)При набеге определённой стоимости в часах, либо в километрах коммивояжёр обязан оказаться в определённом городе (поспать допустим). Можно прийти заранее, но позже нельзя. 
5)Город начала и время отправления можно выбрать самостоятельно - в приоритете города, в которых коммивояжёр может поспать (4).

Соответственно жду подсказок, вопросов и обсуждения 

Какие есть мысли на данный момент, возможно они кого-то натолкнут на более интересные:
1)Город следует выбирать по принципу различия входов и выходов - допусти приехать можно 8 способами, а уехать 9 способами (опять же предположение)
2)Следующее направление движение следует выбирать на основе стоимостных функций. Одна стоимостная функция зависит от приближения времени сна т.е. она увеличивается при приближении данного времени и если данное направление приводит в город, в котором можно отдохнуть. Вторая функция зависит от среднего количества неиспользованных направлений движения т.е. она увеличивается в направлении где много неотработанных направлений. Это нужно для того чтобы не использовать возможность повторного проезда по направлению (она нежелательна).

Пока больше мыслей нет..
PM MAIL   Вверх
ksnk
Дата 17.2.2016, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
GooG2e
Дата 17.2.2016, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.2.2016

Репутация: нет
Всего: нет



Ну мы вот сейчас ходим и в ТЗ проверяем условия, по которым можно что-то отрезать при волновом поиске.
PM MAIL   Вверх
Akina
Дата 17.2.2016, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(GooG2e @  17.2.2016,  15:38 Найти цитируемый пост)
мы вот сейчас ходим и в ТЗ проверяем условия, по которым можно что-то отрезать при волновом поиске.

Жаль, что Вы не ответили на мой вопрос на Винграде:
Цитата(Akina)

Цитата(GooG2e)
По каждому необходимо пройтись ОДИН раз. 

Именно направлению? Не узлу?
В данном случае это важно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GooG2e
Дата 17.2.2016, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.2.2016

Репутация: нет
Всего: нет



Цитата(Akina @  17.2.2016,  16:15 Найти цитируемый пост)
В данном случае это важно. 

да необходимо пройтись именно по каждому направлению, а не узлу. Грубо говоря есть расписание автобусов и нужно на всех автобусах хоть раз прокатиться. На одном атвобусе нельзя кататься больше двух раз
PM MAIL   Вверх
Akina
Дата 17.2.2016, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(GooG2e @  17.2.2016,  17:21 Найти цитируемый пост)
да необходимо пройтись именно по каждому направлению, а не узлу.

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

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GooG2e
Дата 19.2.2016, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.2.2016

Репутация: нет
Всего: нет



Цитата(Akina @  17.2.2016,  16:36 Найти цитируемый пост)
Ну, как я уже сказал, это не задача коммивояжёра, а задача обхода ориентированного графа. Стандартные методы решения - это использование конечных автоматов, обычно основанных на построении остова графа с поиском в глубину или в ширину по нему. Из оптимизаций тут можно применить разве что откаты по остову, но особых результатов от такой оптимизации я бы не ждал, особенно если количество рёбер невелико. 

Пока есть вариант с поиском в глубину, чтобы при нахождении одного варианта мы могли начать отбрасывать другие, если они хуже по определённому критерию.
PM MAIL   Вверх
GooG2e
Дата 20.2.2016, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.2.2016

Репутация: нет
Всего: нет



Сегодня возник ещё один вариант - строить дерево вширь, но на каждом этапе искать вариант с минимльной стоимостью и все элементы, которые имеют стоимость в n раз больше отсекать. При необходимости n можно повышать т.е. в цикле увеличивать значение, если при прошлом обходе не получился ответ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0788 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.