Python 中的 8 拼图问题17 Mar 2025 | 6 分钟阅读 本文介绍了 8 拼图问题的解决方案。提供一个3x3 的棋盘,上面有 8 个数字块(每个块的数字从 1 到 8)和一个单独的空格。目标是利用空白格将数字块排列成目标状态。可以将相邻的四个(左、右、上、下)数字块移动到空位。 例如, ![]() 1. DFS (深度优先搜索,穷举法)我们可以在状态空间树(一个特定问题的状态集合,即从初始状态可以到达的所有状态)上执行深度优先搜索。 ![]() 图:8 拼图的状态空间树 在此解决方案中,进一步的移动可能并不总是让我们更接近目标,反而会让我们远离。无论初始状态如何,状态空间树都会沿着根节点的左侧路径搜索。使用此方法,可能永远找不到目标节点。 2. BFS (广度优先搜索,穷举法)我们可以使用广度优先方法搜索状态空间树。它总是能找到最接近根的目标状态。但是,该算法无论初始状态如何,都会尝试与 DFS相同的移动序列。 3. 分支限界法通过避免搜索不包含目标节点的子树,一个“智能”的评估函数,也称为近似成本函数,可以经常加速查找目标节点的过程。然而,它不使用回溯法,而是执行类似 BFS 的搜索。 基本上,分支限界法涉及三种不同类型的节点。
成本函数在搜索树中,每个节点 Y 都有一个相应的成本。下一个E 节点可以通过成本函数找到。具有最低成本的 E 节点是下一个。该函数可以定义为: 8 拼图算法的最佳成本函数是: 我们假设将一块数字块向任何方向移动将花费一个单位。基于此,我们为 8 拼图算法创建以下成本函数: 有一个算法可以估计 h(y) 的未知值,该算法是可用的。 最终算法
上述算法从提供的 8 拼图起始配置到达最终配置所走的路径如下图所示。请注意,只有成本函数值最低的节点才会被扩展。 ![]() 代码输出 1 2 3 5 6 0 7 8 4 1 2 3 5 0 6 7 8 4 1 2 3 5 8 6 7 0 4 1 2 3 5 8 6 0 7 4 |
?假设您在 Python 社区待了一段时间。那么,您可能会回忆起关于 Python 2 与 Python 3 的对话,或者您可能已经观察到 Python 3.10 和 Python 3.11 等版本的发布,并伴随着相当大的兴奋。您可能已经观察到......
阅读 10 分钟
引言 人工智能领域取得了巨大的进步,导致了各种算法的开发来处理复杂的任务。其中一个算法是 LightGBM,它是 Light Gradient Boosting Machine 的缩写。LightGBM 因其效率、速度和处理大规模数据集的能力而广受欢迎。
阅读 6 分钟
? Python 是当前最流行和多功能的语言。Python 在 Windows 中不提供预打包,但这并不意味着 Windows 用户不能灵活使用 Python。一些操作系统(如 Linux)带有可以运行 Python 包管理器...
阅读1分钟
在本教程中,我们将讨论 Python 程序如何仅接受包含所有元音的字符串。在以下示例中,我们传递一个字符串来检查是否包含所有元音。我们已考虑大小写元音...
阅读 4 分钟
在本教程中,我们将编写 Python 程序来解决图像(矩阵)的旋转问题。这是一个与矩阵相关的问题。让我们了解一下问题陈述。问题陈述:一个 nxn 的 2D 矩阵代表一个图像。我们需要将图像顺时针旋转 90 度....
阅读 4 分钟
一种流行且有效的排序算法 Quick Sort 使用分治法来组织列表或数组中的项。虽然 Quick Sort 通常实现为基于文本的算法,但您可以使用 Python 的 Matplotlib 以三维方式可视化该方法,以便更好地...
阅读 6 分钟
Python 是一种功能极其丰富的编程语言,被许多大公司采用。它语法简单易懂,非常适合那些初次尝试掌握计算机编程的人。它是一种高级编程语言。其基本设计原则是关于...
5 分钟阅读
简介:在本文中,我们将讨论 Python 描述符。描述符旨在管理许多通过引用获取项的训练的属性。描述符使用了三种不同的策略:__getters__()、__setter__() 和 __delete__()。当这种方法在对象上定义时,我们将调用...
阅读 3 分钟
SNMP,即简单网络管理协议,是 SDN 的必要工具,是控制软件中设备的最佳选择。除此之外,应用程序内访问是 SNMP 的主要目的。毫无疑问,所有监控系统都利用 SNMP 来...
11 分钟阅读
在本教程中,我们将了解 FlashText 模块以及如何使用 FlashText 替换文本序列中的单词。这提供了替换文本文档中大量单词的高效方法。FlashText 算法的工作原理 FlashText 算法基于...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India