Как найти количество цепей в графе
Перейти к содержимому

Как найти количество цепей в графе

  • автор:

Как найти количество цепей в графе

EnDeRBeaT → [Tool] Graph Debugger

rui_er → Codeforces Round 942 (Div. 1, Div. 2) Editorial

Haidora → A general approach to solve subree distinct values queries!

awoo → Разбор Educational Codeforces Round 165

Abito → Who’s going to IIOT 2024?

Некропост

dv.jakhar_ → How to solve this problem, any ideas?

gareeeeeeeeeeeeeeeev → Релиз версии бот 1.2

rui_er → Codeforces Round 942 (Div. 1, Div. 2)

Zanite → [Photos Dump] Jollybee CP Team, the Luxor WF, and the Indomie Aftermath

wuhudsm → TheForces Round #30 (Good-Forces) Editorial

Некропост

Igor_Kudryashov → Разбор задач Coder-Strike 2014 Финал

h ehezhou → 2024-The 6th Turing Cup Tournament

Некропост

MikeMirzayanov → Изменение правил об использовании стороннего кода в соревнованиях Codeforces

transfermarket → Report cheater obfuscate code

Asuna_Yuuki → MEME

Loserinlife → Need help

Некропост

Sharon → Who is going to UCF Saturday Practice — November 2nd, 2019 ?

Cipesta. → Beyond CP: What’s Next

tickbird → Been stuck at green almost a year

123gjweq2 → Can someone please help me?

Некропост

Monogon → Codeforces Round #639 Editorial

Некропост

Vladosiya → Codeforces Round 863 (Div. 3) Разбор

MofK → Codeforces Global Round 25 Editorial

Kolyanchick → До скорых встреч

awoo → Educational Codeforces Round 165 [рейтинговый для Div. 2]

Как найти количество цепей в графе

EnDeRBeaT → [Tool] Graph Debugger

rui_er → Codeforces Round 942 (Div. 1, Div. 2) Editorial

Haidora → A general approach to solve subree distinct values queries!

awoo → Разбор Educational Codeforces Round 165

Abito → Who’s going to IIOT 2024?

Некропост

dv.jakhar_ → How to solve this problem, any ideas?

gareeeeeeeeeeeeeeeev → Релиз версии бот 1.2

rui_er → Codeforces Round 942 (Div. 1, Div. 2)

Zanite → [Photos Dump] Jollybee CP Team, the Luxor WF, and the Indomie Aftermath

wuhudsm → TheForces Round #30 (Good-Forces) Editorial

Некропост

Igor_Kudryashov → Разбор задач Coder-Strike 2014 Финал

h ehezhou → 2024-The 6th Turing Cup Tournament

Некропост

MikeMirzayanov → Изменение правил об использовании стороннего кода в соревнованиях Codeforces

transfermarket → Report cheater obfuscate code

Asuna_Yuuki → MEME

Loserinlife → Need help

Некропост

Sharon → Who is going to UCF Saturday Practice — November 2nd, 2019 ?

Cipesta. → Beyond CP: What’s Next

tickbird → Been stuck at green almost a year

123gjweq2 → Can someone please help me?

Некропост

Monogon → Codeforces Round #639 Editorial

Некропост

Vladosiya → Codeforces Round 863 (Div. 3) Разбор

MofK → Codeforces Global Round 25 Editorial

Kolyanchick → До скорых встреч

awoo → Educational Codeforces Round 165 [рейтинговый для Div. 2]

Существует ли быстрый алгоритм поиска максимальной цепи в графе?

Здравствуйте. Задача: есть взвешенный ориентированный граф (полно циклов, у каждой вершины 5-20 связей), в нем нужно найти такой путь через все вершины, что бы сумма весов пройденных ребер была максимальной, а каждая вершина встречалась только один раз. Не сложно догадаться до полного перебора, но меня интересуют графы, в которых около сотни вершин. Существует ли алгоритм, который может найти такой путь? Если совсем нет, существует ли быстрый алгоритм, позволяющий найти хоть какой-нибудь путь в графе, проходящий через все вершины только один раз?

Отслеживать
задан 29 янв 2018 в 21:10
1,526 1 1 золотой знак 11 11 серебряных знаков 27 27 бронзовых знаков

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

29 янв 2018 в 21:48

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Предлагаю такой алгоритм.

Перебор всех вариантов с двумя поправками.

  1. Для последующих вариантов убираем те вершины через которые прошли (то есть они уже не будут участвовать в расчёте).
  2. Сначала идём не в ширину а в глубину. При переборе может быть разный порядок вычислений, в данном случае мы по очереди просматриваем не варианты разных выходов из одной вершины, а сначала идём вглубь переходя к следующей вершине, и уже если там не прошло то идём в ширь.

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

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

Найдя первый рабочий путь, смотрим варианты какие вершины можно в порядке прохождения поменять местами, и какие рёбра, если это ускоряет путь, значит нашли более быстрый (Метод улучшения пути).

Если нужна ещё большая оптимизация то ищем N первых рабочих путей, используя случайные варианты. И уже каждый из путей оптимизируем алгоритмом (Метод улучшения пути). Находим из них лучшее решение.

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode

Поиск элементарных цепей в графе

В этой статье речь пойдет об алгоритме поиска всех элементарных цепей в неориентированном графе. Будет приведено описание алгоритма и его реализация на языке программирования C#.

Цепь в графе - vscode.ru

Цепью в графе называется последовательность ребер , когда каждое предыдущее ребро соприкасается одним из своих концов со следующим ребром . Цепь обозначается последовательностью вершин, которые она содержит (2-5-3-6).

Цепь называется элементарной, если все вершины, входящие в нее, различны.

Приведем пример. Пусть дан граф, как на рисунке ниже:

Поиск элементарных цепей в графе - vscode.ru

Все элементарные цепи в нем: 1-2, 1-3-2, 1-2-3, 1-3, 1-2-3-4, 1-3-4, 2-1-3, 2-3, 2-1-3-4, 2-3-4, 3-4.

Пусть граф задан, как G = (V, E), где V — множество вершин графа, а E — множество его ребер. Вершины и ребра можно представить объектами следующих классов:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *