主页
  • 主页
  • 分类
  • 热文
  • 教程
  • 面试
  • 标签
Python 人工智能

Python 人工智能 教程

Python 人工智能 入门概念
Python 人工智能 开始使用
Python 人工智能 机器学习
Python 人工智能 数据准备
Python 人工智能 监督学习:分类
Python 人工智能 监督学习:回归
Python 人工智能 逻辑编程
Python 人工智能 无监督学习:聚类
Python 人工智能 自然语言处理 (NLP)
Python 人工智能 NLTK(自然语言工具包)
Python 人工智能 分析时间序列数据
Python 人工智能 语音识别
Python 人工智能 启发式搜索
Python 人工智能 游戏
Python 人工智能 神经网络
Python 人工智能 强化学习
Python 人工智能 遗传算法
Python 人工智能 计算机视觉
Python 人工智能 深度学习

教程

Python 人工智能 入门概念
Python 人工智能 开始使用
Python 人工智能 机器学习
Python 人工智能 数据准备
Python 人工智能 监督学习:分类
Python 人工智能 监督学习:回归
Python 人工智能 逻辑编程
Python 人工智能 无监督学习:聚类
Python 人工智能 自然语言处理 (NLP)
Python 人工智能 NLTK(自然语言工具包)
Python 人工智能 分析时间序列数据
Python 人工智能 语音识别
Python 人工智能 启发式搜索
Python 人工智能 游戏
Python 人工智能 神经网络
Python 人工智能 强化学习
Python 人工智能 遗传算法
Python 人工智能 计算机视觉
Python 人工智能 深度学习

Python 人工智能 启发式搜索


上一章 下一章

启发式是一种经验法则,它引导我们找到可能的解决方案。人工智能中的大多数问题是指数级的,有许多可能的解决方案。你不知道确切哪些解决方案是正确的,并且检查所有解决方案将会非常昂贵。

因此,使用启发式缩小了寻找解决方案的范围,并消除了错误的选择。使用启发式来引导搜索空间中的搜索的方法称为启发式搜索。启发式技术是非常有用的,因为当你使用它们时,搜索可以被加速。

无信息搜索与有信息搜索的区别

有两种类型的控制策略或搜索技术:无信息搜索和有信息搜索。它们的详细解释如下:

无信息搜索

这也被称为盲搜索或盲控制策略。之所以如此命名是因为只有关于问题定义的信息,而没有其他额外的信息可用。这种类型的搜索技术将在整个状态空间中搜索解决方案。广度优先搜索(BFS)和深度优先搜索(DFS)就是无信息搜索的例子。

有信息搜索

这也被称为启发式搜索或启发式控制策略。之所以如此命名是因为有关于状态的额外信息。这些额外的信息是有用的,用来计算探索和扩展子节点的偏好。每个节点都将有一个与之关联的启发函数。最佳优先搜索(BFS),A*,Mean 和 Analysis 都是有信息搜索的例子。

约束满足问题(CSPs)

约束意味着限制或局限。在人工智能中,约束满足问题是指必须在某些约束条件下解决的问题。在解决此类问题时,重点在于不要违反约束。最终,当我们达到最终解决方案时,约束满足问题必须遵守限制。

通过约束满足解决现实世界的问题

前面的部分讨论了创建约束满足问题。现在让我们也将其应用于现实世界的问题。一些通过约束满足解决的现实世界问题的例子如下:

解决代数关系

借助约束满足问题,我们可以解决代数关系。在这个例子中,我们将尝试解决一个简单的代数关系 a*2 = b。它将在我们定义的范围内返回 a 和 b 的值。

完成这个 Python 程序后,你将能够理解使用约束满足解决问题的基础。

注意,在编写程序之前,我们需要安装名为 python-constraint 的 Python 包。你可以通过以下命令来安装它:

pip install python-constraint

以下步骤展示了用于解决代数关系的 Python 程序:

导入约束包

from constraint import *

创建问题对象

problem = Problem()

定义变量

problem.addVariable('a', range(10))
problem.addVariable('b', range(10))

定义约束条件

problem.addConstraint(lambda a, b: a * 2 == b)

获取解决方案

solutions = problem.getSolutions()

输出结果

print(solutions)

你可以观察到上述程序的输出如下:

[{'a': 4, 'b': 8}, {'a': 3, 'b': 6}, {'a': 2, 'b': 4}, {'a': 1, 'b': 2}, {'a': 0, 'b': 0}]

魔方阵

魔方阵是一种独特的排列方式,其中不同的数字,通常是整数,在一个方形网格中排列,使得每一行、每一列以及对角线上的数字加起来都等于同一个被称为“魔数”的数字。

以下是生成魔方阵的简单 Python 代码的逐步执行:

定义一个名为 magic_square 的函数

def magic_square(matrix_ms):
   iSize = len(matrix_ms[0])
   sum_list = []

计算列方向上的总和

for col in range(iSize):
   sum_list.append(sum(row[col] for row in matrix_ms))

计算行方向上的总和

sum_list.extend([sum(lines) for lines in matrix_ms])

计算对角线方向上的总和

dlResult = 0
for i in range(0,iSize):
   dlResult += matrix_ms[i][i]
sum_list.append(dlResult)

drResult = 0
for i in range(iSize-1,-1,-1):
   drResult += matrix_ms[i][i]
sum_list.append(drResult)

检查所有方向的总和是否一致

if len(set(sum_list)) > 1:
   return False
return True

测试矩阵并检查输出

print(magic_square([[1,2,3], [4,5,6], [7,8,9]]))

你可以观察到输出将是 False,因为总和不是同一个数。

print(magic_square([[3,9,2], [3,5,7], [9,1,6]]))

你可以观察到输出将是 True,因为总和是同一个数,这里是 15。

上一章 下一章
阅读号二维码

关注阅读号

联系二维码

联系我们

© 2024 Yoagoa. All rights reserved.

粤ICP备18007391号

站点地图