問題: 有向巡回グラフのエッジ オブジェクトを指定して、最初の n 個の最も近いエッジ (2000) を見つける。
データ構造: Link クラスと Node クラス。リンク クラスには、それぞれのノード オブジェクトを指す 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