Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В орграфе найти "наибольший" замкнутый подграф, Наибольший - сумма весов вершин 
:(
    Опции темы
getch2
Дата 1.9.2014, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

Для пояснения замкнутости нарисовал очень простой (на практике - куда сложнее) граф с пронумерованными вершинами:
user posted image
Замкнутыми являются, например, эти подграфы:
1 -> 2 -> 3 -> 5 -> 6 -> 4
1 -> 2 -> 3
2 -> 4
и т.д.

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

Помогите с нахождением оптимального (скорость) алгоритма для решения этой задачи.
PM   Вверх
Akina
Дата 1.9.2014, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(getch2 @  1.9.2014,  16:10 Найти цитируемый пост)
Замкнутыми являются, например, эти подграфы:
1 -> 2 -> 3 -> 5 -> 6 -> 4
Замкнутость этого подграфа мне представляется сомнительной.

Цитата(getch2 @  1.9.2014,  16:10 Найти цитируемый пост)
правильно составить поисковый запрос, к сожалению, не смог.

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


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

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


Новичок



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

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



Цитата(Akina @ 1.9.2014,  15:56)
Цитата(getch2 @  1.9.2014,  16:10 Найти цитируемый пост)
Замкнутыми являются, например, эти подграфы:
1 -> 2 -> 3 -> 5 -> 6 -> 4
Замкнутость этого подграфа мне представляется сомнительной.

Верно, я поторопился и ошибся. Вот такой исходный граф имел в виду:
user posted image
Соответственно, примеры замкнутых подграфов такие:
2 -> 4 -> 6 -> 5 -> 3 -> 1
1 -> 2 -> 3
2 -> 4

Цитата

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

Спасибо, покопаю комивояжера. Жаль, что там только приблизительные методы.
PM   Вверх
Akina
Дата 1.9.2014, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(getch2 @  1.9.2014,  17:44 Найти цитируемый пост)
я поторопился и ошибся

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

Цитата(getch2 @  1.9.2014,  17:44 Найти цитируемый пост)
Жаль, что там только приблизительные методы. 

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


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

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


Новичок



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

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



Цитата(Akina @ 1.9.2014,  17:42)
Просто я как-то привык, что, расписывая путь в графе, последним узлом указывают именно последний, а не предпоследний. В случае замкнутого - тот же, что и начальный. Это позволяет избежать таких вот накладок...


Моя формулировка была вызвана особенностью решаемой практической задачи. Там не используется последовательность вершин искомого подграфа, а только сам список вершин (не имеет значения порядок).
PM   Вверх
getch2
Дата 2.9.2014, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Наверное, правильно сформулировать исходную задачу.

Есть функция F(X) = b[1](X) + b[2](X) + ... b[N](X) - (a[1](X) + a[2](X) + ... a[N](X)).

где b[i](X) и a[i](X) - функции, значения которых положительные вещественные числа.

При этом между этими функциями во всей области определения заданы следующие соотношения:
b[i] = a[i] + Ɛ[i] для всех i = 1 .. N, где Ɛ[k] - относительно слабые флуктуации.

И для некоторых функций имеются еще следующие соотношения:
либо b[k] = b[n] - a[m] + Ɛ[j[k]], либо b[k] = b[n] + b[m] + Ɛ[j[k]], либо a[k] = a[n] + a[m] + Ɛ[j[k]], либо a[k] = a[n] - b[m] + Ɛ[j[k]].

Задача для заданного X найти подпоследовтельности значений {p} из {1..N} и {q} из {1..N}, чтобы
F2 = b[p[1]] + b[p[2]] + b[p[p_max]] - (a[q[1]] + a[q[2]] + ... + a[q[q_max]]) = ±Ɛ[t[1]] ± Ɛ[t[2]] ± ... ± Ɛ[t[t_max]] было наибольшим.

Подошел к решению следующим образом (в лоб). Сначала выше обозначенные взаимосвязи между b[i] и a[j] решил представить в виде орграфа. Затем найти все его связанные компоненты и по итогу посчитать их сумму. С наибольшей суммой - и есть искомые подпоследовательности {p} и {q}.

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

Это сообщение отредактировал(а) getch2 - 2.9.2014, 10:48
PM   Вверх
getch2
Дата 4.9.2014, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Похоже, иногда проще делегировать за вознаграждение решение относительно несложной задачи, нежели бороться со своей возрастной деградацией...

Подскажите путь, как выйти на сильного олимпиадника по программированию?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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