コード例 #1
0
    for x in range(m):
        if y == source[1] and x == source[0]:
            node = Node(destination[1], destination[0], x, y, 0, option)
            node.val = 0
            queue.insert(node)
            node_dict.update({(x, y): node})

        elif maze[y][x] != 0:
            node = Node(destination[1], destination[0], x, y, infinity, option)
            queue.insert(node)
            node_dict.update({(x, y): node})

is_visited = [[False for x in range(m)] for y in range(n)]

while True:
    node = queue.extract_min()
    is_visited[node.y][node.x] = True
    if node == node_dict[(m - 1, n - 1)]:
        break

    adj = get_adjacency(node)

    for point in adj:
        if is_visited[point[1]][point[0]]:
            continue
        p = node_dict[point]
        if node.val + 1 < p.val:
            p.parent = node
            p.val = node.val + 1
            queue.decrease_key(p, p.val + p.distance)
arr = []
コード例 #2
0
ファイル: HikingMap.py プロジェクト: LukasB97/Math
 def _next_step(self, open_nodes: Fheap):
     to_close = open_nodes.extract_min()
     self._close_node(to_close.x, to_close.y, open_nodes)
     return to_close