搜索。从初始位置添加移动成本

2024-05-13 22:34:49 发布

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

如果f=g+h,那么在下面的代码中,我在哪里加g?你知道吗

另外,除了从我的初始位置添加移动成本外,我还可以如何使此代码更有效?你知道吗

def a_star(initial_node):
    open_set, closed_set = dict(), list()
    open_set[initial_node] = heuristic(initial_node)
    while open_set:
        onode = get_next_best_node(open_set)
        if onode == GOAL_STATE:
            return reconstruct_path(onode)
        del open_set[onode]
        closed_set.append(onode)
        for snode in get_successor_nodes(onode):
            if snode in closed_set:
                continue
            if snode not in open_set:
                open_set[snode] = heuristic(snode)
                self.node_rel[snode] = onode
    return False

Tags: 代码innodegetreturnifdefopen
1条回答
网友
1楼 · 发布于 2024-05-13 22:34:49

在最后if,如果snode不在open\u集中(没有双关语!)不应该只设置启发式,而应该设置启发式加上当前节点的成本。如果snode在open集中是,则应检查当前值和当前值之间的最小值(如果有两种或两种以上的方法到达同一节点,则应考虑代价最小的方法)。你知道吗

这意味着您需要同时存储节点的“实际”成本和“估计”成本。初始节点的实际成本为零。对于每个新节点,它是每个传入弧的最小值,介于另一个顶点的开销加上弧的开销(换句话说,最后一个节点的开销加上从该节点移动到当前节点的开销)之间。估计的成本必须加上两个值:到目前为止的实际成本加上启发式函数。你知道吗

我不知道这些节点在代码中是如何表示的,所以我不能给出比这更具体的建议。如果您仍然有疑问,请编辑您的问题提供更多细节。你知道吗

相关问题 更多 >