文章目录
- 前言
- 一、Lowest-Cost-First Search (最低成本搜索)
- 二、Heuristic Search (启发式搜寻法)
- 三、Greedy best-first search (贪婪最佳优先搜索)
- 四、A* search(A星搜索)
- 五、Reference(参考文献)
- 总结
前言
介绍(个人吐槽):本人是一个大二的计算机科学的在读生,这一篇文章相当于复习笔记一样的。
为什么要写这个文章?
一,是因为我发现计算机科学要学的东西太多太多了,我实在顶不住了!!!大一的知识的话还可以通过我聪明的小脑袋瓜学着混混。但大二的知识越来越难而且越来越多。所以我需要一个笔记将他们总结记录下来,以后方便复习。
二,是发布到网上可以让各位大佬们帮我看看我理解的正不正确,欢迎各位大佬与我讨论。
三,是以后毕业找工作时,还可以把我拥有的这个博客写入我的简历,想想就美滋滋!(加分加分)
提示:本片文章是本人上课后通过自己的理解总结下来的一些笔记。不一定是完全正确的。只是个人的片面之词。本人是才刚刚起步写这样的文章,我也不知道格式和书写语言是否合适,和正规。还请各位读者请多包涵,在这我先谢谢你们了。还有如果有大佬能发现文章中的理解错误的,虽然我不想耽误你们时间但如果可以帮我指出,我十分感谢。(在我眼里,能帮我支持我的错误的人都是我的大佬!!!)我也希望我的文章当你读完后可以对你有一点点帮助。
一、Lowest-Cost-First Search (最低成本搜索)
- The simplest search that is guaranteed to find a minimum cost path is lowest-cost-first search.
- 我们知道在节点到另一个节点是需要花费一些无单位的一些代价的(non-unit costs) 如下图所示:
这里我们可以看到A点和B点的连线上的4,就相当于无单位的成本(non-unit costs)。如果我们假设A点和B点都当作一个实际存在的城市来说,这里的数字4并不表达城市A 和城市B的实际距离。而4可能表达从城市A到城市B开车花费的时间或者表达车从城市A 到城市B要花几箱油,等等。 - 而Lowest-Cost-First search就是为了找出从一个点到目标节点的路径(path)使其拥有总最少无单位的成本。
- 还是由上图举例,假如我们要从点a找到一个路径去到f点,这有很多种路径,比如(a->b->d->f)或者(a->c->e->f)或者(a->b->c->d->e->f)等等。但这么多路径里我们需要找一条最少成本的一的路径为最优解(optimal solution)。
- 所以当考虑从a点到f点问题时,从a开始算法会先寻找在a的子节点里拥有最少成本的节点作为目标。就如上图所示,a和b之间的成本是4,a和c之间的成本是2,则算法会让路径为(a->c)而不是(a->b).而接下来路径会是(a->c->b)因为它们的成本是3 = 2+1,小于路径(a->b) 的4成本,小于路径(a->c->d)的10成本,小于路径(a->c->e)的12成本。然后重复下去直到找到a和f之间总最短成本的路径。这就是Lowest-Cost-First search。
二、Heuristic Search (启发式搜寻法)
1. Heuristic(启发法)
- Heuristic 启发法很好理解就是不直接告诉你问题的答案,而是告诉你如何解决这个问题的方法,就如一句老话一样:“授人以鱼不如授人以渔。”
2. General heuristic search
- Additional information pertinent to the problem in hand is supplied (or constructed) and used.
- 利用当前与问题有关的信息作为启发式信息,这些信息是能够提升查找效率以及减少查找次数的。
3. Heuristic function (启发式函数)
- A heuristic function h ( n ) h(n) h(n), takes a node n n n and returns a non-negative real number that is an estimate of the cost of the least-cost path from node n n n to a goal node.
- 一个启发式函数h(n),取一个节点n,并返回一个非负实数,该实数是从节点n到目标节点的最小代价路径的估计值。
- The function h ( n ) h(n) h(n) is an admissible heuristic if h ( n ) h(n) h(n) is always less than or equal to the actual cost of lowest-cost path from node n n n to a goal.
- 如果h(n)总是小于或等于从节点n到目标的最小路径的实际成本,则函数h(n)是一个容许启发式。
- Every heuristic function must satisfy two constraints. 启发式函数需要满足以下两点:
- if n is a goal-node then necessarily h ( n ) = 0 h(n) = 0 h(n)=0.
- h ( n ) h(n) h(n) only depends upon the state associated with the node n n n.
三、Greedy best-first search (贪婪最佳优先搜索)
-
The evaluation function equals the heuristic function, that is : f ( n ) = h ( n ) f(n)=h(n) f(n)=h(n).
-
贪婪最佳优先搜索是把节点和目标节点之间的最短实际直线距离当作启发式方法。举个例子如下著名的Romania地图:
我们假如把Busharest当作起点把Arad当作终点。在贪婪最佳优先搜索算法下则路径会是(Bucharest -> Fagaras) 而不是(Bucharest -> Pitesti)或者 Giurgiu 和 Urziceni。因为 Pitesti,Giurgiu和Urziceni它们距离目标节点Arad的直线距离都大于Fagaras到Arad的直线距离。由于贪婪最佳优先搜索是把节点和目标节点之间的最短实际直线距离当作启发式方法。所以Bucharest的下一站是Fagaras。再下一个地方是Sibiu接着是目的地Arad。 -
但在一些情况下贪婪最佳优先搜索算法是无法终止的(incomplete),算法也是无法找到最优解的比如:
如图所示,我们的目的是寻找从s到g的最短路径。假设用到目标g的欧几里德直线距离作为启发式函数。启发式深度优先搜索将选择s下面的节点,并且永远不会终止。类似地,因为s下面的所有节点看起来都很好,所以贪婪的最佳优先搜索将在它们之间循环,从不尝试s的其他替代路径。
四、A* search(A星搜索)
- Evaluates nodes by combining
h
(
p
)
h(p)
h(p)
- the heuristic cost to get from the node p p p to a goal-node
- and g ( p ) g(p) g(p) the path-cost to reach the node z z z from the root.
- Evaluation function f ( p ) = g ( p ) + h ( p ) f(p)=g(p)+h(p) f(p)=g(p)+h(p)
- A星搜索既使用路径代价(如最低代价优先),也使用启发式信息(如贪婪的最佳优先搜索)。对于边界上的每一条路径,A星使用从开始节点到目标节点的总路径成本的估值,目标节点最初遵循这条路径。它使用 c o s t ( p ) cost(p) cost(p),即所找到路径的代价,以及启发式函数 h ( p ) h (p) h(p),即从z的末端到目标的估计路径代价。
- 对于边界上的任意路径p,定义
f
(
p
)
=
c
o
s
t
(
p
)
+
h
(
p
)
f (p) = cost (p) + h (p)
f(p)=cost(p)+h(p)。这是沿着路径p到达目标节点的总路径代价的估计。如果
n
n
n是路径
p
p
p末端的节点,则可以表示为:
- 下面是一个A* search的例子图:
起点为Ashington终点为Bishop Auckland,图中通过A星搜索算法得出最优解路径长度为39.
五、Reference(参考文献)
1,ARTIFICIAL INTELLIGENCE 2E FOUNDATIONS OF COMPUTATIONAL AGENTS
2,[AI]贪婪最佳优先搜索 Greedy Best-First Search
3,启发式(计算机科学)WIKIPEDIA
4,最佳优先搜索 WIKIPEDIA
5,A星搜索算法 WIKIPEDIA
总结
本篇写了最低成本搜索,启发式搜寻法,贪婪最佳优先搜索分别是什么。还有简单描述了A星搜索。(这是本人这样的文章,为了记录我的学习内容。如果幸运的你读到了这篇,希望对你有帮助。也希望大佬的你可以帮我看看我的理解是否正确。十分感谢。祝大家学业有成,工作顺利!!!)