Artificial intelligence 为什么?;BFS节点在生成时如何进行目标测试?

Artificial intelligence 为什么?;BFS节点在生成时如何进行目标测试?,artificial-intelligence,Artificial Intelligence,在BFS中,节点在生成时进行目标测试。在其他搜索中,节点在展开之前进行目标测试。这两种语句之间的区别是什么?这有什么好处 广度优先搜索(BFS)使用节点队列进行处理。类似地,可以使用堆栈编写用于比较的深度优先搜索(DFS) 展开节点时,所有相邻的未访问节点都将添加到队列(或堆栈)中 当对节点进行目标测试时,算法将检查该节点是否具有所需的属性,并应返回该节点,而不是继续搜索 注意,这是一个搜索,一旦找到所需的节点就会停止,而不是遍历,遍历总是访问所有可到达的节点 将新节点添加到队列之前,BFS目标

在BFS中,节点在生成时进行目标测试。在其他搜索中,节点在展开之前进行目标测试。这两种语句之间的区别是什么?这有什么好处

广度优先搜索(BFS)使用节点队列进行处理。类似地,可以使用堆栈编写用于比较的深度优先搜索(DFS)

展开节点时,所有相邻的未访问节点都将添加到队列(或堆栈)中

当对节点进行目标测试时,算法将检查该节点是否具有所需的属性,并应返回该节点,而不是继续搜索

注意,这是一个搜索,一旦找到所需的节点就会停止,而不是遍历,遍历总是访问所有可到达的节点

将新节点添加到队列之前,BFS目标检查。BFS从队列中提取节点后展开节点

出于效率原因,BFS可以在添加到队列之前进行目标测试。对于BFS,从根节点向外遍历以查找目标节点。如果已经找到目标(或者目标,如果它不是唯一的),则无需进一步搜索相邻节点。如果在将节点添加到队列之前进行目标测试,这也意味着队列中已经存在的节点都不是目标。从另一个角度看,如果在从队列中提取节点时测试了目标,则在添加第一个目标节点之前,不会从队列中提取目标节点。通过这种推理,无论是在将节点插入队列时进行目标测试,还是在从队列中提取节点时进行目标测试,最终都应该找到相同的节点。不同之处在于,首先通过目标测试,您不必在返回目标节点之前处理队列中已经存在的所有节点。

您似乎在问一个关于算法的纯理论问题。这样的问题最好在网上提出。