讨论题
1.搜索为什么是 AI 系统的重要组成部分?
① 状态空间的探索:搜索算法能够在复杂的状态空间中找到解决问题的路径。这意味着AI系统可以通过搜索算法来探索所有可能的解决方案,从而找到最优或近似最优的解。
② 问题解决的一种方式:搜索算法是解决问题的一种方式,AI系统通过将现实世界中的问题抽象化并输入到计算机中,利用搜索算法来达到解决问题的目标。
③ AI与搜索的紧密关系:近十年来,AI与搜索的结合越来越紧密。AI从搜索中获取数据和反馈不断进化,同时也大幅提升了搜索的智能化水平。两者形成了相互促进的关系,AI技术的发展使得搜索引擎更加智能化,而搜索引擎的大量数据和用户行为又为AI提供了学习和进化的素材。
④ 搜索技术的历史地位:搜索技术在人工智能的发展历程中始终扮演着至关重要的角色。从早期的简单规则引擎到现在复杂的深度学习模型,搜索技术一直是AI研究和应用的核心内容之一。
2.状态空间图是什么?
状态空间图是一种有向图,用于描述问题的全部可能状态及其相互关系。某个具体问题的解将对应状态空间图中的一条路径。
3.描述生成-测试范式。
生成-测试范式是人工智能中用于问题解决的一种方法,它包含两个主要步骤:生成和测试。
在生成阶段,AI系统通过搜索算法探索状态空间,生成可能的解决方案或路径。这个过程涉及到从初始状态开始,应用一系列操作来产生新的状态或解决方案。搜索的方向和范围取决于具体的问题和算法的设计。
生成阶段的目标是产生一个或多个潜在的解决方案,这些解决方案将作为候选解进入测试阶段。
在测试阶段,AI系统对每个生成的候选解进行评估,以确定其是否满足给定的条件或标准。这个过程通常涉及到对候选解的性能、有效性或正确性进行验证。测试的结果可以用来接受或拒绝候选解,或者将其与其他候选解进行比较。
4.生成器有什么属性?
生成器是一种特殊类型的迭代器,它具有以下属性:
- 可迭代性:生成器对象实现了可迭代协议,这意味着它可以在for循环中使用或与其他迭代工具一起使用。
- 迭代性:生成器也遵循迭代器协议,它可以通过调用next()方法来逐个产生序列中的值。
- 动态计算:生成器在每次迭代时都会动态计算下一个值,而不是一次性计算出所有值。这种机制使得生成器能够在不需要存储整个序列的情况下处理大量数据。
- 状态保存:生成器会保存算法的状态,这样在下一次调用时可以继续从上一次停止的地方开始计算。
- 单次使用:通常情况下,生成器只能被消耗一次,即一旦迭代到最后一个元素,再次调用next()方法将不会返回更多的值。
此外,生成器的使用方法通常包括定义一个生成器函数,该函数包含一个或多个yield语句。当调用这个函数时,它不会立即执行,而是返回一个生成器对象。随后,通过调用这个对象的next()方法,可以逐个获取序列中的值,直到没有更多值为止。
总的来说,生成器提供了一种高效的方式来处理数据序列,特别是当序列非常大或无限时,生成器能够显著减少内存的使用,并且提高程序的运行效率。
5.回溯法如何对完全枚举法进行改进?
① 剪枝:在搜索过程中,一旦发现当前路径不可能达到问题的解,就立即停止这条路径的搜索,即剪枝。这样可以节省大量不必要的计算,提高算法效率。
② 递归实现:回溯法通常使用递归来实现,这使得算法的代码更加简洁易懂。递归的每一步都对应了解空间树的一层,当需要回溯时,只需返回上一层即可。
③ 深度优先搜索:回溯法与深度优先搜索有着密切的联系,它们都是通过递归来实现的。深度优先搜索可以帮助回溯法更深入地探索解空间,直到找到解或确定解不存在为止。
6.用一两句话描述贪心算法。
贪心算法是一种在每一步选择中都采取在当前看来最好的选择的算法,即它所做出的每一次选择都是最有利的。
贪心算法的特点是它简单、直观,并且易于实现,但是它的缺点是不能保证得到整体最优解,只能保证在某种意义上的局部最优解。
7.陈述旅行商问题。
给定一组城市和它们之间的距离,找到一条最短的路径,使得旅行商从某个城市出发,访问每个城市恰好一次,然后回到出发城市。这个问题可以用图论来表示,其中城市是顶点,路径是边,边的权重表示城市之间的距离。
8.简述 3 种盲目搜索算法。
① 广度优先搜索(BFS):这种算法从根节点开始,逐层向下搜索,直到找到目标节点为止。在图或树的数据结构中,宽度优先搜索会先访问所有兄弟节点,然后再访问子节点。
② 深度优先搜索(DFS):与广度优先搜索相反,深度优先搜索会尽可能深地搜索图的分支,直到找到目标节点或到达无解的末端,然后回溯到上一个分叉点继续搜索。
③ 二分搜索:这是一种高效的搜索算法,但它要求数据集必须是已排序的。通过比较目标元素与数据集中间元素的大小,二分搜索可以不断地缩小搜索范围,直到找到目标元素。
9.在何种意义上,盲目搜索算法是盲目的?
盲目搜索算法之所以被称为“盲目”,是因为它们在搜索时不考虑问题的具体特征,而是按照固定的规则进行搜索,这可能会导致搜索效率不高。
10.按照完备性、最优性和时空复杂性,比较本章描述的 3 种盲目搜索算法。
完备性:
BFS(广度优先搜索)在有限的状态空间中是完备的,意味着如果存在解,BFS总能找到解。
DFS(深度优先搜索)在有限的状态空间中不一定完备,尤其是在存在无限路径的情况下,可能会陷入死循环。
二分搜索要求数据集必须是有序的,并且是确定的,因此它也是完备的。
最优性:
BFS保证找到的第一个解就是最优解,因为它按照层次扩展,总是先找到最短路径。
DFS不保证找到的是最优解,因为它可能沿着一个方向深入搜索,直到无法继续为止。
二分搜索在每次比较后都会排除一半的搜索空间,因此具有很高的效率,但它只适用于有序列表。
时空复杂性:
BFS的空间复杂度通常高于DFS,因为它需要存储所有待探索的节点,而DFS只需要存储当前路径上的节点。
DFS的时间复杂度可能低于BFS,尤其是在深度较小的图中,因为它可以更快地找到解。
二分搜索的时间复杂度为O(log n),空间复杂度较低,因为它不需要存储大量的节点信息。
BFS在完备性和最优性方面表现