2010-11-11 3 views
2

Вопрос о рекурсии (и тангенциально сетке графических библиотек): у меня есть ориентированный граф с узлом, у которого есть ребра, у которых есть атрибут ["value"], который может быть 0 или 1 (эффективно реберный вес) ,Рекурсивно поиск networkx graph

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

def checkAll(x): 
    for neighbor in graph.neighbors(x): 
     if neighbor is bad: 
      fail 
     else: 
      checkAll(neighbor) 
     #add all good neighbors here? This isn't working! 

Я неисправного на рекурсии, в принципе, я думаю, что из-за тем, как «за» цикл выполняется. Могу ли я получить помощь? (Я смотрел this other SO post, но это не выглядело особенно актуальным?)

Спасибо!

ответ

3

Отказ от ответственности: я не знаю ничего о NetworkX, но от моего понимания вашей проблемы может быть, это может помочь:

def examine(node, neighbors_list) 

    for neighbor in graph.neighbors(node): 
     if graph[x]["neighbor"]["value"] = 1: 
      return 
     else: 
      neighbors_list.append(neighbor) 
      examine(neighbor, neighbors_list) 


x = parent_node 

neighbors = [] 
examine(x, neighbors) 
+0

Я не знаю, что моя реализация не работает, но спасибо вы! Надеюсь, это тоже поможет другим. – Rio

+0

@Rio: я видел, что вы удалили этот ответ из полезного, если он вам не помогает, пожалуйста, дайте мне знать :) – mouad