图中每个节点的终端节点

2024-06-28 10:59:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想列出图中一个节点的所有终端节点,我的代码可以工作,但是在复杂的图中它不能有效工作。正如你所看到的,我使用的递归在处理复杂的图形时效率不高

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是无向图

任何建议都会有帮助


Tags: and代码终端return节点abitemfruit
1条回答
网友
1楼 · 发布于 2024-06-28 10:59:40

以下代码应执行相同的操作,但不使用递归:

def neighbourT(graph):
    for node in graph.nodes():
        for n in graph.neighbors(node):
            if n > node and graph.degree(n) == 1:
                print(node,n)

例如,对于图T:

T = nx.Graph()
T.add_edge("A","B")
T.add_edge("A","C")
T.add_edge("B","D")
T.add_edge("B","F")
T.add_edge("C","E")
neighbourT(T)
# prints
B D
B F
C E

相关问题 更多 >