Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 13, 2015 06:26:08

alekscooper
Зарегистрирован: 2015-01-25
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

Уважаемые товарищи, всем привет!

Имеется задача:

1. Есть граф, направленный, взвешенный, с циклами (но без зацикливания вершин на самих себя).
2. Нужно итеративно построить дерево всех возможных самых глубоких путей из некоторой данной вершины графа.

Что есть и что я знаю:

1. Есть граф, сохранённый в виде списка вершин и списка рёбер с весами.

2. Я в курсе, что есть стек, дерево, рекурсия и т. п.

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

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

ПРИМЕЧАНИЕ: 1) я в курсе, что, наверное, есть и другие, более эффективные способы - нужно сделать именно ТАК. 2) я не прошу готовый скрипт - мне нужен алгоритмический пинок

Заранее всем спасибо!

Отредактировано alekscooper (Апрель 13, 2015 06:54:01)

Прикреплённый файлы:
attachment L19_graph.png (106,1 KБ)

Офлайн

#2 Апрель 13, 2015 21:12:26

kamisama
Зарегистрирован: 2014-07-08
Сообщения: 34
Репутация: +  4  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

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

def paths(node, acc=[]):
    if node in acc:
        return [acc]
    if children(node):
        return [sum(paths(child, acc + [node]), []) for child in children(node)]
    return [acc + [node]]

Офлайн

#3 Апрель 13, 2015 21:53:35

alekscooper
Зарегистрирован: 2015-01-25
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

Про рекурсию знаю, страха перед ней нет, просто лёгких путей мы не ищем

Офлайн

#4 Апрель 13, 2015 22:09:39

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

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



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Апрель 13, 2015 22:20:02

kamisama
Зарегистрирован: 2014-07-08
Сообщения: 34
Репутация: +  4  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

alekscooper
Про рекурсию знаю, страха перед ней нет, просто лёгких путей мы не ищем
Так тебе без рекурсии надо чтоли? Непонятно что имелось в виду под словом “итеративно”

Офлайн

#6 Апрель 13, 2015 23:12:26

alekscooper
Зарегистрирован: 2015-01-25
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

kamisama
Так тебе без рекурсии надо чтоли? Непонятно что имелось в виду под словом “итеративно”

Да, без рекурсии

Офлайн

#7 Апрель 14, 2015 13:29:32

alekscooper
Зарегистрирован: 2015-01-25
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

Вопрос отпал, стоило лишь включить мозг на 100% ТЕМА RESOLVED

Офлайн

#8 Апрель 14, 2015 14:49:00

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

alekscooper
стоило лишь включить мозг на 100%
смотрели фильм “Люси”? ))



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Апрель 14, 2015 16:19:37

alekscooper
Зарегистрирован: 2015-01-25
Сообщения: 66
Репутация: +  1  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

terabayt
мотрели фильм “Люси”? ))
Впервые слышу Люси знаю только песню про собачку, исполняемую писклявым газмановским отпрыском

Офлайн

#10 Апрель 14, 2015 16:53:06

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Дерево путей в графе с циклами - итеративно

alekscooper
Впервые слышу
ну вы посмотрите, очень интересный фильм



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version