Форум сайта python.su
graph = { 1: [2, 3], 2: [4] }
Отредактировано solo.test88 (Авг. 6, 2016 23:40:37)
Офлайн
>>> def walk_graph(tree, node): ... yield node ... if node in tree: ... for i in tree[node]: ... for j in walk_graph(tree, i): ... yield j ... >>> graph = { ... 1: [2, 3], ... 2: [4] ... } >>> >>> tuple(walk_graph(graph, 1)) (1, 2, 4, 3) >>>
Офлайн
Зря вы так. Гражданин даже вопрос не сформулировал.
Скажем так
Вот это короче.
>>> set(reduce(add,graph.values())+graph.keys()) set([1, 2, 3, 4])
Офлайн
doza_andВыводится не то. Во-первых, это множество, у которого нет порядка, а во-вторых, там нужно проходить в глубину (после двойки нужно выводить потомка двойки - четвёрку).
Вот это короче.set([1, 2, 3, 4])
Отредактировано py.user.next (Авг. 7, 2016 11:40:59)
Офлайн
py.user.nextГде это написано? Автор просил дать все вершины. Он их получил.
Выводится не то. ….. там нужно проходить в глубину
Офлайн
Супер! Большое спасибо Всем за помощь и оперативность))
Офлайн
doza_andПрямо у него в первом сообщении.
Где это написано?
solo.test88
и нужно вывести вершины в консоли:
1
2
4
3
Офлайн
Явного требования в спецификации нет.
Офлайн
doza_andГрафы обычно выводятся вполне определённо, поэтому было бы странным выводить просто какое-то неупорядоченное множество вершин. Мало того, у ориентированного графа есть понятие корня, поэтому ты не можешь просто начать выводить его весь с любой вершины, так как из некоторых вершин могут быть недостижимы какие-то вершины, тогда как от корня достижима любая вершина.
Явного требования в спецификации нет.
Отредактировано py.user.next (Авг. 7, 2016 15:06:29)
Офлайн
py.user.next
Тут возникла следующая проблема, если использовать данный граф:
graph = { 1: [2, 3], 2: [3, 4], 4: [1] }
Отредактировано solo.test88 (Авг. 7, 2016 17:34:26)
Офлайн