검색 알고리즘을 실험하고 있는데 A * 알고리즘을 사용하여 문제를 해결하려고합니다.Python - 사전 목록 정렬
내부 노드 구조를 유지하기 위해 사전 목록을 사용하고 있습니다. 각 노드는 특정 상태 및 관련 비용으로 특징 지어집니다. 선택 함수는 비용이 가장 낮은 노드를 반환해야합니다. 이렇게하려면 매번 목록을 필터링하고 있습니다. 문제가 매우 작 으면 매우 빠르다는 것을 발견했습니다. 목록이 매우 큰 경우이 함수는 알고리즘의 총 시간 중 84 %를 사용합니다.
내 질문에이 일을하는 더 효율적인 방법이 있습니다.
def select(self, frontier):
frontier.sort(key = lambda x: x['f_cost'])
#select the node with the lowest f_cost
return frontier.pop(0)
우선 순위 대기열을 대신 사용해 볼 수도 있습니다. 예 : ['heapq'] (https://docs.python.org/3/library/heapq.html). –