统一成本解决方案中的算法问题

发布于 2024-09-10 13:41:02 字数 377 浏览 5 评论 0原文

我正在做统一成本搜索算法。我得到的解决方案比实际的稍大。扩展的节点数量比实际数量要多。

我使用了这个算法:

获取初始节点并将其放入优先级队列中。P.queue 会根据成本自行排列其中的节点。成本较低的节点将首先出现。

使用 while 循环,直到队列为空。

从队列中删除一个节点并检查它是否是目标状态。如果没有,检查它是否在访问列表中。访问列表是包含所有已展开节点的集合。如果不存在于访问列表中,则获取其后继者以及成本和操作。

计算到该节点的成本。

如果后继节点的成本大于父节点的成本,则将其添加到队列中并检查该后继节点是否在父目录中。如果没有,让他成为透明人,这样我们就可以原路返回。

我的算法是正确的还是我需要检查其他内容:

I am doing the unifrom cost search algorithm. I am getting my solution slightly larger than actual. The number of expanded nodes are coming larger than actual.

I used this algorithm:

Get the initial node and put it into the priority queue.The P.queue will itself arranges the nodes in it according to the cost. Lower cost node will come first.

use the while loop, it goes until the queue is empty.

remove a node from the queue and check if it is a goal state or not. if not, check if it in the visited list or not. visited list is a set that has all the nodes that are already expanded. if not present in the visited list, get its successors along with cost and action.

calculate the cost upto this node.

if the cost of succcessor is larger than the cost of parent node, add it into the queue and check if this successor is in the parentdirectory or not. If not, make him a pparent so that we can backtrack the path.

is my algorithm is right or do i need to check something else:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零崎曲识 2024-09-17 13:41:02

看来您正在实现带有优先级队列的 Dijkstra 。但由于成本是统一的,BFS 就足够了。

It seems that you're implementing a Dijkstra with priority queue. But since the costs are uniform, BFS would be enough.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文