MIT_AI_P5学习笔记
05-搜索:最优、分支界限、A 1、引入 搜索是关于选择的 启发式距离:黑板上粉色的直线线段是现实中没有的,叫做启发式距离。 启发式找到的路不见得都能走得通,因为在现实中考虑问题的时候,离得近不一定是最好的,因为可能会出现死胡同 上节的爬山算法和束搜索,目的都是考虑离目标最近的距离 例子 2、最短路径的4种算法 1.branch bound分支限界 没有考虑离目标有多远,只考虑自己走了多远 直到积累的长度都已经大于等于到达目标的长度,就不需要再进行扩展了 总是扩展当前最短的路径,直到目标节点 把当前所有的路径都扩展出来,比较最后距离最短的 然后扩展最短的,再进行比较没有扩展的 只要没有负值长度,我们就肯定能得到一个最短路径 入队和扩展的概念 我们跟踪已经扩展过的节点,不再扩展。 这些放在队列中的所有路径就是入队列表 入队思想对于这些最短路径并不奏效 路径需要加到扩展队列(不是入队队列) 因为我们必须要保证扩展的都是短路径(最后要得到最短路径) 这个就相当于迪杰斯特拉算法,单独用一张列表来保存所有扩展,叫做扩展列表 2.分支限界+扩展列表 找到迄今为止最短的路径进行扩展(类似Dijkstra算法) 已经扩展过的,就不需要再扩展,这会减掉很多多余的树枝 死马原则(the dead horse principal):只要发现一条不是最短路径,就不再扩展它 3.可容许启发式 可容许启发式