问题:在有向循环图中给定一个边对象,找到前 n 个最近边(2000)。
数据结构:链接类和节点类。链接类有一个 from 和 to 节点,指向各自的节点对象。节点对象具有链接对象的传入和传出列表。
错误:我遇到了RuntimeError: maximum recursion depth exceeded。你能帮我找到解决方法吗。如果逻辑有问题或代码需要优化,请告诉我。我相信我遵循 BFS 策略,即从对象相关节点中创建一个队列,我可以遍历这些节点并查看它是否已被访问并尝试递归。
def start_search(self,link_object,neighbour_links):
buffer_links=[]
link_object.visited_flag=1
neighbour_links.append(link_object)
from_node=link_object.from_node
to_node=link_object.to_node
[buffer_links.append(link_object) for link_object in from_node.incoming_links]
[buffer_links.append(link_object) for link_object in from_node.outgoing_links]
[buffer_links.append(link_object) for link_object in to_node.outgoing_links]
[buffer_links.append(link_object) for link_object in to_node.incoming_links]
while len(buffer_links)>0 and len(neighbour_links)<1000:
link_object=buffer_links.pop()
if link_object.visited_flag==0:
self.start_search(link_object,neighbour_links)
return neighbour_links