逆向搜索法和爬山法的例子有哪些

供稿:hz-xin.com     日期:2025-01-13
逆向搜索
计算机科学术语
科普中国 | 本词条由“科普中国”科学百科词条编写与应用工作项目审核
审阅专家 姚远
逆向搜索就是从目标状态出发进行的搜索,通常是与正向搜索同时进行(双向搜索),如果正向搜索时新扩展的状态是逆向搜索中出现过的,将两段搜索路径连接起来就是找到了一个解(通常是一种搜索步数最少的解)。如果反向搜索时新扩展的状态是正向搜索中出现过的,则与上述一样,也是一种最优解。逆向搜索既是一种技术,又是一种思维,广泛应用于计算机软件、互联网技术、电信技术、工业通用技术及贸易经济等领域。
中文名
逆向搜索
外文名
backward search
相对
正向搜索
学科
计算机技术
本质
逆向思维
人工智能举例互联网应用举例铁路运输举例网络贸易举例计算机软件举例TA说参考资料
人工智能举例
在人工智能中,双向产生式系统是一种同时应用正向和逆向搜索方式的产生式系统。在该系统中,把状态描述和目标描述合并为一数据库,其中状态描述应用F规则,目标描述应用B规则。[1]比如,智能机器人为了制定行动规划,具有自动求解问题的能力,它可用一套特殊的产生式规则在状态空间中搜索求解。为了得到操作序列,可以从当前的状态集出发,进行正向搜索,也可以从目标状态集出发进行逆向搜索,也可根据目标状态和当前状态的差选择合适的操作(手段-目的分析法)等。[2]
互联网应用举例
搜索引擎优化(SEO)的主要工作是通过了解各类搜索引擎如何抓取互联网页面、如何进行索引以及如何确定其对某一特定关键词的搜索结果排名等技术,来对SEO网页进行相关的优化,更改自己的网站,向排列在搜索结果前列的网站学习网站的组织方式和网页的编写方式,使其提高搜索引擎排名,从而提高网站访问量,最终提升网站的销售能力或宣传能力的技术,达到SEO目的。这个揣摩搜索引擎的过程是种逆向搜索的过程。
铁路运输举例
逆向进路搜索算法是铁路运输系统中的一种重要算法。这种算法利用站场图和二叉树的相似性,通过站场信息建立二叉树模型,但该算法搜索二叉树的过程与传统的二叉树搜索算法的搜索方向相反,它是由目标孩子向根节点搜索,这种逆向搜索不需要进行遍历搜索,就可以快速有效地完成所有进路的搜索。即在站场图中完成任意一对车站按钮之间的基本进路和变更进路的搜索。为了满足一些特殊的要求(解决车次跟踪的问题),该搜索也能完成任意一对车站设备之间的基本进路和变更进路的搜索。
网络贸易举例
网络目标市场逆向搜索模型的建立思路是首先从分析一个具体产品的原理、功能和用途入手,并考虑它的主要技术规范、价格等其他因素,确定此商品的样本特征;由以上对产品样本特征的分析,推测出有效市场;制定出一套搜索步骤,检索出需要此产品的商务网站,从而找到需此产品的企业、公司等顾客。
计算机软件举例
逆向搜索系统,用于从输入的子字串中检验来自给定列表的一个或几个字的存在的一种系统。字的列表存储在一存储器阵列,其对于存储一个子字的每一存储器单元包括一个比较器。串被分子串。每一子串被加载几次到比较寄存器,每次滚动移动一个子字。在每一存储器单元,同时与输入子串进行比较。对于每一存储器单元一个逻辑电路检测串的子字与列表字的子字的相继匹配。只要对于列表的完整字出现匹配,则对这一字设置一信号。设置一列表匹配信号,优先权编码器可用来输出匹配字之一的地址(位置)。[3]一、爬山法简介
爬山法(climbing method)是一种优化算法,其一般从一个随机的解开始,然后逐步找到一个最优解(局部最优)。 假定所求问题有多个参数,我们在通过爬山法逐步获得最优解的过程中可以依次分别将某个参数的值增加或者减少一个单位。例如某个问题的解需要使用3个整数类型的参数x1、x2、x3,开始时将这三个参数设值为(2,2,-2),将x1增加/减少1,得到两个解(1,2,-2), (3, 2,-2);将x2增加/减少1,得到两个解(2,3, -2),(2,1, -2);将x3增加/减少1,得到两个解(2,2,-1),(2,2,-3),这样就得到了一个解集:
(2,2,-2), (1, 2,-2), (3, 2,-2), (2,3,-2), (2,1,-2), (2,2,-1), (2,2,-3)
从上面的解集中找到最优解,然后将这个最优解依据上面的方法再构造一个解集,再求最优解,就这样,直到前一次的最优解和后一次的最优解相同才结束“爬山”。
二、Python实例
设方程 y = x1+x2-x3,x1是区间[-2, 5]中的整数,x2是区间[2, 6]中的整数,x3是区间[-5, 2]中的整数。使用爬山法,找到使得y取值最小的解。
代码如下:
import random
def evaluate(x1, x2, x3):
return x1+x2-x3
if__name__== '__main__':
x_range = [ [-2, 5], [2, 6], [-5, 2] ]
best_sol = [random.randint(x_range[0][0], x_range[0][1]),
random.randint(x_range[1][0], x_range[1][1]),
random.randint(x_range[2][0], x_range[2][1])]
while True:
best_evaluate = evaluate(best_sol[0], best_sol[1], best_sol[2])
current_best_value = best_evaluate
sols = [best_sol]
for i in xrange(len(best_sol)):
if best_sol[i] > x_range[i][0]:
sols.append(best_sol[0:i] + [best_sol[i]-1] + best_sol[i+1:])
if best_sol[i] < x_range[i][1]:
sols.append(best_sol[0:i] + [best_sol[i]+1] + best_sol[i+1:])
print sols
for s in sols:
el = evaluate(s[0], s[1], s[2])
if el < best_evaluate:
best_sol = s
best_evaluate = el
if best_evaluate == current_best_value:
break
print 'best sol:', current_best_value, best_sol
某次运行结果如下:
[[0, 5, 1], [-1, 5, 1], [1, 5, 1], [0, 4, 1], [0, 6, 1], [0, 5, 0], [0, 5, 2]]
[[-1, 5, 1], [-2, 5, 1], [0, 5, 1], [-1, 4, 1], [-1, 6, 1], [-1, 5, 0], [-1, 5, 2]]
[[-2, 5, 1], [-1, 5, 1], [-2, 4, 1], [-2, 6, 1], [-2, 5, 0], [-2, 5, 2]]
[[-2, 4, 1], [-1, 4, 1], [-2, 3, 1], [-2, 5, 1], [-2, 4, 0], [-2, 4, 2]]
[[-2, 3, 1], [-1, 3, 1], [-2, 2, 1], [-2, 4, 1], [-2, 3, 0], [-2, 3, 2]]
[[-2, 2, 1], [-1, 2, 1], [-2, 3, 1], [-2, 2, 0], [-2, 2, 2]]
[[-2, 2, 2], [-1, 2, 2], [-2, 3, 2], [-2, 2, 1]]
best sol: -2 [-2, 2, 2]
可以看到,最优解是-2,对应的x1、x2、x3分别取值-2、2、2。
三、如何找到全局最优
爬山法获取的最优解的可能是局部最优,如果要获得更好的解,多次使用爬山算法(需要从不同的初始解开始爬山),从多个局部最优解中找出最优解,而这个最优解也有可能是全局最优解。
另外,模拟退火算法也是一个试图找到全局最优解的算法。
Python实现的Kmeans++算法实例
1、从Kmeans说起Kmeans是一个非常基础的聚类算法,使用了迭代的思想,关于其原理这里不说了。下面说一下如何在matlab中使用kmeans算法。创建7个二维的
Python中的map、reduce和filter浅析
1、先看看什么是iterable对象以内置的max函数为例子,查看其doc:printmax.__doc__max(iterable[,key=func])-valuemax(a,b,c,...[,key=func])-valueWithasingleiterableargument,returnitsla
Python中的Numpy入门教程
1、Numpy是什么很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。其实,list已经提供了类似于矩阵的

问题解决中常用的启发式策略有哪些
1. 手段-目的分析法:这种策略通过比较问题的当前状态与目标状态,来识别和分析达成目标所需的步骤。它有助于在问题空间中系统地搜索解决方案。2. 逆向搜索策略:该策略从目标状态开始,逆向推理至初始状态,适用于目标明确但实现步骤不明显的问题。它通过逐步回溯来找到解决方案。3. 爬山法:爬山法通过...

问题解决策略及影响因素
②、逆向搜索法 它是指人们从目标状态开始搜索,直到找到通往初始状态的解决办法。它适合于那些初始状态与目标状态通路较少的问题,如几何问题。③、爬山法 与手段目的分析法类似,也是通过缩小目标状态与初始状态间的差距来解决问题,区别在于不包括暂时扩大目标状态这种情况。问题解决除了受到策略的影响,也...

逆向反推法和爬山法的区别
二、性质不同:反推法主要是根据选项延伸而来,一般来说,资料分析的4个选项,有两个是很容易排除掉的,而剩余的两个比较接近,此时就可以采用此种方法。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。与中途法关系 爬山法与中途点法是彼此接近的方法。中途点法在...

启发法名词解释
逆向搜索:从目标出发,逆向寻找通往初始状态的途径,类似于从终点倒推寻找路径。爬山法:通过逐步调整初始和目标状态的距离,寻找解决问题的路径。在心理学领域,启发法被用来解释人们如何在信息不完整或面对复杂决策时作出判断。然而,这些简化的规则并不总是准确,有时会导致认知偏差,例如“价格意味着质量...

搜索算法案例分析
针对这些问题,可以考虑引入其他算法,如A*搜索算法,它在评价函数 f(n) = g(n) + h(n) 中结合了从起点到当前节点的实际开销 g(n) 和从当前节点到目标节点的估价 h(n),从而在搜索中更有效地引导路径选择,减少搜索空间。爬山法(Hill Climbing)通过评估当前问题状态后,选择与目标状态差异最...

问题解决中常用的启发策略有
2、逆向搜索策略 这种策略是从问题的目标状态出发,按照子目标组成的逻辑顺序逐级向初始状态递归的问题解决策略。它适用于目标明确,但实现目标所需的步骤不清晰或不易确定的问题。3、爬山法 这是一种通过个体评价面前的问题状态,从而缩小初始状态与目标状态之间的差异,经过迂回前行,最终达到问题解决总目标...

算法式和爬山法的区别
算法式:把解决问题的方法一一进行尝试,最终找到解决问题的答案。特点:问题解决的系列搜索,采用试误的方式解决问题,优点:一定可以找到某种解决问题的方法,缺点:耗时耗力。爬山法与手段目的分析法的区别:使用爬山法的每一步都在逐渐接近最终目标,不存在中途折回的情况;在使用手段目的分析法时,人们...

心理学启发式的问题解决策略有哪些
代表性策略:某个个体和某个群体中的典型人物越相似,他属于这个群体的可能性就越大。易得性策略:容易想起的信息对我们的判断或决策过程影响更大。如:孕妇效应。小轿车和SUV哪个更安全?锚定调节策略:处理不确定事件时,使用已知的事物作为起始点进行判断的倾向性。如:量刑和议价。

搜索技术
向目标函数值增加的方向持续移动,直到相邻状态没有比它更高的值。 取到一个局部最优则终止。 使新状态估计值优于当前状态值和其他所有候补结点值,则取新状态放弃其他状态。 将 爬山法 (停留在局部最优)和 随机行走 (下山)以某种方式结合,同时拥有 完备性和效率。 技巧是,概率足够大可以弹出局部最优;但概率不...

什么是启发法?一般在什么情况下运用?
启发式教学法“教无定法”。但最关键的问题是要形成正确的教学指导思想,指导思想正确了,才能灵活运用教学方法,有所创新。“学生为主体,教师为主导”,这就是现代教学的指导思想。如何体现“学生为主体,教师为主导”,关键是学生能否有学习积极性,而学习积极性在很大程度上和教师的主导作用有直接关系...