【发布时间】:2021-01-04 22:24:42
【问题描述】:
我想列出关于图中节点的所有终端节点,我的代码确实可以工作,但是在复杂的图中它不能有效地工作。如您所见,我使用递归,在处理复杂图形时效率不高。
def neighbourt(T,item,st1,list1,list2):
for n1 in T.neighbors(item):
if n1 > item and T.degree(n1)> 1:
#print(n1)
st1=st1+neighbourt(T,n1,st1,list1,list2)
elif n1 > item and T.degree(n1)==1:
fruit_dictionary1 = dict(zip(list1,list2))
ab=fruit_dictionary1[n1]
st1=st1+str(ab)+"_"
#return st1
return st1
代码用python编写,item为节点,T为无向图。
任何建议都会有所帮助。
【问题讨论】:
-
你使用的是networkx图形包吗?我希望它会被优化以快速执行这种类型的递归。 python-course.eu/networkx.php
-
@C.Cooney,是的,我正在使用 NetworkX 图形包。有没有办法可以使用 Networkx 获取特定节点的子图。
-
终端节点是指叶子吗?您能否提供一个示例输入/预期输出?
-
@abc 是的,它表示叶节点示例 A->B,A->C,B->D,F,C->E,对于 B 我想要 D 和 F 而对于 C 我想要 E 。 ..