精华内容
下载资源
问答
  • 启发式与元启发式算法

    万次阅读 2016-05-23 09:34:10
    启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。...

    启发式算法(Heuristic Algorigthm)是一种基于直观或经验构造的算法,在可接受的花费(指计算时间、计算空间等)给出待解决优化问题的每一实例的一个可行解,该可行解与与最优解的偏离程度一般不可以事先预计。

        启发式算法是一种技术,这种算法可以在可接受的计算费用内找到最好的解,但不一定能保证所得到解的可行性及最优性,甚至大多数情况下无法阐述所得解与最优解之间的近似程度。

        元启发式算法(MetaHeuristic Algorigthm)是启发式算法的改进,它是随机算法与局部搜索算法相结合的产物。

       启发式算法包括遗传算法、模拟退火算法、粒子群算法、禁忌搜索算法及神经网络算法等。

    展开全文
  • 启发式方法---应用及例子

    千次阅读 2018-12-18 22:21:00
    2019独角兽企业重金招聘Python工程师标准>>> ...

    多个工件在多个设备上加工的排序问题

    4b14163d64784d21c9e5d7c05a71bac77e0.jpg

    9f9ec10b3be137520149fdc85df017b3cdc.jpg

    880b9a275e5ef8779af4e6ce65c17b79e22.jpg

    308c98f296380ec5170495d8ce4cbbfe900.jpg

    1d73291724cbcc1d932b4cddb2cf39158f7.jpg

    旅行售货员(旅行商)问题

    39bb2aeacb4ed83bb3f4cda2b89005953f3.jpg

    dd860c7488f109ab0f3095f620d91f2fde4.jpg

    5d83b568c53cad0e0415814d7f790e28e84.jpg

    58f8507ec02f6cd016037d349ec5c7f8da1.jpg

    857889b66c7b1055a3aee4d5a4b18dd06bf.jpg

    377019febe483d99568fcbd29ac98a0bd8f.jpg

    e9742b7f01e845a1441d0b6528635da8053.jpg

    f312966457b114ff053afde9f6fcee289f1.jpg

    5dd1845b1083fa09ab7490c508762d57fcf.jpg

    0dbc11051c4dd949bb0a5a628330981aa9d.jpg

    车辆调度问题

    291fb1368173670e2402b2f12a4e95b9375.jpg

    96a872900f7a5cc5e527737a7a8409375b4.jpg

    b3aeece10a77d5a3ce1234a26610bf122ec.jpg

    937c54596b042ca4c3348b5fcd2b83f53b5.jpg

    89fc8cc02d76d51152e9867c20e23604c9a.jpg

    c71004ed85fb00c799313ab5835cdad20f4.jpg

    c1241bcc75863889f924ec72e1e9ac63bdf.jpg

    3dcb23118d1736df590d49ef5ca3c97199e.jpg

     

    转载于:https://my.oschina.net/liyangke/blog/2990193

    展开全文
  • 启发式算法(Heuristic Algorithm)

    千次阅读 2019-01-17 10:56:42
    启发式算法(Heuristic Algorithm)有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的...

    启发式算法(Heuristic Algorithm)有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的偏离程度不一定可以事先预计;另一种是,启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优解的近似程度。我比较赞同第二种定义,因为启发式算法现在还没有完备的理论体系,只能视作一种技术。

    _______________________________________

     

    名词解释

    Heuristics,我喜欢的翻译是“探索法” ,而不是“启发式”,因为前者更亲民一些,容易被理解。另外,导致理解困难的一个原因是该词经常出现在一些本来就让人迷糊的专业领域语境中,例如,经常看 到某某杀毒软件用启发式方法查毒,普通民众本来就对杀毒软件很敬畏,看到“启发式”就更摸不着北了。

    实际上,这个词的解释十分简单,例如,查朗文词典,可以看到:

    The use of experience and practical efforts to find answers to questions or to improve performance

    维基百科词条heuristic,将其定义为基于经验的技巧(technique),用于解决问题、学习和探索。并对该词进行了更详尽的解释并罗列了多个

    展开全文
  • matlab启发式算法

    千次阅读 2020-10-06 10:40:30
    启发式算法 (Heuristic Algorithm) 是一种基于直观或经验的局部优化算法.。 启发式算法的定义: 人们常常把从大自然的运行规律或者面向具体问题的经验和规则中启发出来的方法称之为启发式算法. 现在的启发式算法也...

    启发式算法 (Heuristic Algorithm) 是一种基于直观或经验的局部优化算法.。
    启发式算法的定义:
    人们常常把从大自然的运行规律或者面向具体问题的经验和规则中启发出来的方法称之为启发式算法. 现在的启发式算法也不是全部来自然的规律, 也有来自人类积累的工作经验。
    在可接受的花费 (指计算时间和空间) 下给出待解决组合优化问题每一个实例的一个可行解, 该可行解与最优解的偏离程度不一定事先可以预计。
    启发式算法是一种技术, 该技术使得能在可接受的计算费用内去寻找尽可能好的解, 但不一定能保证所得解的可行性和最优性, 甚至在多数情况下, 无法描述所得解与最优解的近似程度。

    几种启发式算法

    1.禁忌搜索 (Tabu Search): 它是对局部领域搜索的一种扩展,是一种全局逐步寻优算法, 是对人类智力过程的一种模拟。
    2.模拟退火 (Simulated Annealing): 它是一种通过模拟物理退火过程搜索最优解的方法。
    3.遗传算法 (Genetic Algorithms): 它是一种通过模拟自然进化过程搜索最优解的方法。
    4.神经网络 (Neural Networks): 它是一种模仿动物神经网络行为特征, 进行分布式并行信息处理的算法数学模型。
    5.蚁群算法 (Ant Algorith): 它是一种模仿蚂蚁在寻找食物过程中发现路径的行为来寻找优化路径的机率型算法。
    这里面2、3、4种用到的比较多。这里先学习2和3。
    启发式算法在最开始的时候要先给出一个或多个解

    退火算法

    在这里插入图片描述
    试图寻找最低点。
    例如当你给出一个解在A点,它会向左向右移动寻找更低的点(如果是贪心算法,到达B后就会停止),退火算法有能力跳出B点向更低的D点移动,而找到最优解。
    两过程的对比

    模拟退火物理退火
    粒子状态
    目标函数能量
    最优解能量最低态
    设定初温加温过程
    扰动热涨落
    Metropolis 采样过程热平衡, 粒子状态满足波尔兹曼分布
    控制参数的下降冷却

    基本思想

    构造初始解,使当前解等于这个解
    设置初始温度
    开始模拟退火的主算法
     循环(满足温度一定阈值退出)
      对于同一温度再循环n次,使温度平衡
       在设置的温度附近添加扰动,计算花费
       比较两次花费,小于零就接受扰动后的温度,不满足就随机产生一个随机数
      平衡后进行降温,进入下次循环
    给出解

    construct initial solution x0, and xcurrent = x0
    set initial temperature T = T0
    while continuing criterion do
    	for i = 1 to TL do
    		generate randomly a neighbouring solution x′ 2 N(xcurrent)
    		compute change of cost ∆C = C(x′)C(xcurrent)
    		if ∆C ≤ 0 or random(0; 1) < exp(−∆kTC) then
    		xcurrent = x′ {accept new state}
    		end if
    	end for
    	set new temperature T = decrease(T) {decrease temperature}
    end while
    return solution corresponding to the minimum cost function
    

    退火算法设计要素

    初始解的生成
    1.通常是以一个随机解作为初始解. 并保证理论上能够生成解空间中任意的解。
    2.也可以是一个经挑选过的较好的解. 这种情况下,初始温度应当设置的较低。
    3.初始解不宜 “太好”, 否则很难从这个解的邻域跳出。
    临解生成函数
    1.邻解生成函数应尽可能保证产生的侯选解能够遍布解空间。
    2.邻域应尽可能的小: 能够在少量循环步中允分探测. 但每次的改变不应该引起太大的变化。
    初始温度设定
    1.初始温度应该设置的尽可能的高, 以确保最终解不受初始解影响. 但过高又会增加计算时间。
    2.均匀抽样一组状态,以各状态目标值的方差为初温。
    3.如果能确定邻解间目标函数 (COST 函数) 的最大差值, 就可以确定出初始温度 T0, 以使初始接受概率 P = e−j∆Cjmax/T足够大。 j∆Cjmax 可由随机产生一组状态的最大目标值差来替代。
    4.在正式开始退火算法前, 可进行一个升温过程确定初始温度:逐渐增加温度, 直到所有的尝试尝试运动都被接受, 将此时的温度设置为初始温度。
    5.由经验给出, 或通过尝试找到较好的初始温度。
    等温步数确定
    1.等温步数也称 Metropolis 抽样稳定准则, 用于决定在各温度下产生候选解的数目. 通常取决于解空间和邻域的大小。
    2.等温过程是为了让系统达到平衡, 因此可通过检验目标函数的均值是否稳定 (或连续若干步的目标值变化较小) 来确定等温步数。
    3.等温步数受温度的影响. 高温时, 等温步数可以较小, 温度较小时, 等温步数要大. 随着温度的降低, 增加等温步数。
    4.有时为了考虑方便, 也可直接按一定的步数抽样。
    降温
    经典模拟退火算法的降温方式在这里插入图片描述
    快速模拟退火算法的降温方式在这里插入图片描述
    常用的模拟退火算法的降温方式还有 (通常 0:8 ≤ α ≤ 0:99)在这里插入图片描述
    花费函数COST
    1.应该能被快速的计算, 花费函数的计算是程序的可能瓶颈。
    2.花费函数 COST 一般由目标函数来构造. 目标函数, 或目标函数的倒数/相反数经常直接作为花费函数。
    终止条件
    1.理论上温度要降为 0 才终止退火算法. 但实际上温度较低时,尝试的接受概率就几乎为 0 了。
    2.设置终止温度的阈值, 或设置外循环迭代次数。
    3.算法搜索到的最优值连续若干步保持不变。

    模拟退火算法的实例

    已知中国 34 个省会城市 (包括直辖市) 的经纬度, 要求从北京出
    发, 游遍 34 个城市, 最后回到北京. 用模拟退火算法求最短路径。
    根据上面几个设计要素:
    初始解的生成
    随便给以一组顺序就是一组解了。
    在这里插入图片描述
    临解生成函数
    任意互换两个城市的排列位置就可以视为一个小的扰动。在这里插入图片描述
    初始温度设定降温
    在这里插入图片描述
    花费函数COST
    也就是总长度:在这里插入图片描述

    用到的代码说明
    randperm(n)对1到n进行随机排序
    length返回矩阵或向量的长度
    distance对球面两点求解距离
    distancematrix自定义函数,计算距离矩阵
    totaldistance自定义函数,路径距离计算
    perturb自定义函数,产生临解的函数

    主程序代码

    route = randperm(numberofcities); %路径格式:[1,2,...,n]
    temperature = 1000; cooling_rate = 0.95; %初始化温度
    Titerations = 1; %用来控制降温的循环记录内循环步数
    previous_distance = totaldistance(route); %计算路径总长
    while temperature > 1.0 %循环继续条件
    	temp_route = perturb(route, 'reverse'); %扰动产生邻解
    	current_distance = totaldistance(temp_route);%路长
    	diff = current_distance - previous_distance;
    	if (diff<0)||(rand < exp(-diff/(temperature)))
    		route = temp_route; %接受当前解
    		previous_distance = current_distance;
    		Titerations = Titerations + 1;
    	end
    	if Titerations >= 10 %10步降温(等温步数为10)
    		temperature = cooling_rate*temperature;
    		Titerations = 0;
    	end
    end
    

    自定义函数
    distancematrix

    function dis = distancematrix(city)
    numberofcities = length(city);
    R = 6378.137; %地球半径, 用于求两个城市的球面距离
    for i = 1:numberofcities
    	for j = i+1:numberofcities
    		dis(i,j) = distance(city(i).lat, city(i).long,city(j).lat, city(j).long, R);
    		dis(j,i) = dis(i,j);
    	end
    end
    

    totaldistance

    function d = totaldistance(dis, route)
    d = dis(route(end),route(1));
    for k = 1:length(route)-1
    	i = route(k); j = route(k+1);
    	d = d + dis(i,j);
    end
    

    perturb

    function route = perturb(route_old,method)
    route = route_old;
    numbercities = length(route);
    city1 = ceil(numbercities*rand); % [1, 2, ..., n-1, n]
    city2 = ceil(numbercities*rand); % 1<=city1, city2<=n
    switch method
    	case 'reverse' %[1 2 3 4 5 6] -> [1 5 4 3 2 6]
    		cmin = min(city1,city2);
    		cmax = max(city1,city2);
    		route(cmin:cmax) = route(cmax:-1:cmin);
    	case 'swap' %[1 2 3 4 5 6] -> [1 5 3 4 2 6]
    		route([city1, city2]) = route([city2, city1]);
    end
    

    没有源代码不建议尝试,上面是整个设计的思路,并不是全部的代码。
    在这里插入图片描述

    遗传算法

    种群:解的集合。
    染色体:每一个解。
    基因:解的一个参数。

    基本思想

    设置初代k=0
    设置变异概率α
    设置杂交概率β
    设置初始种群,包含n个解(有好有坏)
     循环
      评价个体适应度(同上面的COST函数作用)
      选择适应度高的m个个体加入下一代
      杂交,对αm的个体
      变异,对β
    m的个体进行变异
      更新代数
      循环结束
    选择最优个体

    set initial generation k = 0
    probability of mutation = α
    probability of performing crossover = β
    construct a population of n randomly-generated individuals Pk;
    while not termination do
    	evaluate: compute fitness(i) for each individuals in Pk
    	select: select m members of Pk insert into Pk+1.
    	crossover: produce αm children by crossover and insert into Pk+1
    	mutate: produce βm children by mutate and insert into Pk+1
    	update generation: k = k + 1
    end while
    reture the fittest individual from Plast
    

    编码
    主要方便个体间杂交、变异,可以使用二进制、格雷码、实数码、符号编码。
    适应度函数
    也成为评价函数,作用与cost函数类似。根据目标函数确定的用于区分群体中个体好坏的标准,适应度函数值的大小是对个体优胜略汰的依据。
    1.通常适应度函数可以由目标函数直接或间接改造得到. 比如,目标函数, 或目标函数的倒数/相反数经常被直接用作适应度函数.
    2.一般情况下适应度是非负的, 并且总是希望适应度越大越好(适应度值与解的优劣成反比例).
    3.比较好的适应度函数应: 单值, 连续, 非负, 最大化.
    4.适应度函数不应过于复杂, 越简单越好, 以便于计算机的快速计算
    选择
    轮盘赌,面积越大,应在该区域的概率越大。被选中的概率与适应度成正比。概率=个体适应度/种群适应度。
    两两竞争:父代中随机选择两个个体,比较后取优。
    排序选择(随机性最小):根据个体适应度大小排序,然后基于序号选择。
    交叉
    交叉分为:单点交叉、两点交叉和多点交叉。在这里插入图片描述
    变异
    单点变异、换位变异
    在这里插入图片描述

    遗传算法的实例

    还是使用退火算法的旅行问题作为例子。
    现在考虑下面几个要素:
    编码在这里插入图片描述
    依旧是一个随机的排列组合。
    适应度函数
    距离越短越适应,要想适应度值大,就选取距离的倒数即可。在这里插入图片描述
    选择运算
    两两竞争、轮盘赌
    交叉运算
    这里的交叉很复杂,因为当交叉互换了一个点后,很可能在单个染色体上就出现了重复的数(重复去了一个城市),所以需要继续互换,将原来的数再与另一个染色体进行对换,直到每条染色体上午重复数值。
    变异运算
    可以选择对调两点或全部打乱或分块后打乱。
    主程序代码

    popSize = 100; % 种群规模
    max_generation = 1000; % 初始化最大种群代数
    Pmutation = 0.16; % 变异概率
    for i = 1:popSize % 初始化种群
    	pop(i,:) = randperm(numberofcities);
    end
    for generation = 1:max_generation % 主循环开始
    	fitness = 1/totaldistance(pop,dis);% 计算距离(适应度)
    	[maxfit, bestID] = max(fitness);
    	bestPop = pop(bestID, :); % 找出精英
    	pop = select(pop,fitness,popSize,'competition');% 选择
    	pop = crossover(pop); % 交叉
    	pop = mutate(pop,Pmutation); % 变异
    	pop = [bestPop; pop]; % 精英保护
    end % 主循环开始
    popDist = total_distance(pop,dis);% 计算距离(适应度)
    [minDist, index] = min(popDist); % 找出最短距离
    optRoute = pop(index,:); % 找出最短距离对就的路径
    

    自定义函数
    select

    function popselect = select(pop, fitness, nselect, method)
    popSize = size(pop,1);
    switch method
    	case 'roulette' % 轮盘赌
    		p=fitness/sum(fitness); % 选中概率 [0.2 0.3 0.5]
    		cump=cumsum(p); % 概率累加 [0.2 0.5 1.0]
    		% 利用插值: yi = 线性插值(x, y, xi)
    		I = interp1([0 cump],1:(popSize+1), ...
    			rand(1,nselected),'linear');
    		I = floor(I);
    	case 'competition' % 两两竞争
    		i1 = ceil( popSize*rand(1,nselect) );
    		i2 = ceil( popSize*rand(1,nselect) );
    		I = i1.*( fitness(i1)>=fitness(i2) )+i2.*( fitness(i1)< fitness(i2) );
    end
    popselect = pop(I);
    

    crossover

    function children = crossover(parents)
    [popSize, numberofcities] = size(parents);
    children = parents; % 初始化子代
    for i = 1:2:popSize % 交叉开始
    	parent1 = parents(i+0,:); child1 = parent1;
    	parent2 = parents(i+1,:); child2 = parent2;
    	InsertPoints = ceil(numberofcities*rand(1,2));% 交叉点
    	for j = min(InsertPoints):max(InsertPoints)
    		if parent1(j)~=parent2(j) % 如果对应位置不重复
    			child1(child1==parent2(j)) = child1(j);
    			child1(j) = child2(j);
    			child2(child2==parent1(j)) = child2(j);
    			child2(j) = child1(j);
    		end
    	end
    	children(i+0,:) = child1; children(i+1,:) = child2;
    end % 交叉结束
    

    mutate

    function children = mutation(parents, probmutation)
    [popSize, numberofcities] = size(parents);
    children = parents; % 初始化子代
    for k=1:popSize % 变异开始
    	if rand < probmutation % 以一定概率变异
    		InsertPoints = ceil(numberofcities*rand(1,2));
    		I = min(InsertPoints); J = max(InsertPoints)l
    		switch ceil(rand*4) % swap, slide, flip
    			case 1 % [1 2 3 4 5 6 7] -> [1 5 3 4 2 6 7]
    				children(k,[I J]) = parents(k,[J I]);
    			case 2 % [1 2 3 4 5 6 7] -> [1 3 4 5 2 6 7]
    				children(k,I:J) = parents(k,[I+1:J I]);
    			otherwise % [1 2 3 4 5 6 7] -> [1 5 4 3 2 6 7]
    				children(k,I:J) = parents(k,J:-1:I);
    		end
    	end
    end % 变异结束
    

    在这里插入图片描述

    展开全文
  • 人工智能08 启发式搜索

    千次阅读 2019-07-11 11:06:32
    【这一章在某些地方笔者自己也没完全弄清楚,比如在递归最优搜索处没有找到一个很好的例子来理解,比如如何选择启发式函数等等一系列的问题,希望有大神能指明讲解。所以本章重要的只是介绍A*算法流程和简单优化并...
  • Python启发式搜索

    2019-02-25 14:27:55
    启发式搜索在人工智能中起着关键作用。在本章中,您将详细了解它。 AI中的启发式搜索的概念 启发式是一个经验法则,它引导我们找到可能的解决方案。人工智能中的大多数问题具有指数性质并且具有许多可能的解决方案。...
  • 在本文中,我们向您介绍了启发式搜索领域,并提出了Java编程语言中A *(最广泛使用的启发式搜索算法)的实现。 启发式搜索算法对计算资源和内存提出了很高的要求。 我们还展示了如何通过避免昂贵的垃...
  • 【图论学习笔记四】启发式算法

    千次阅读 2020-06-24 16:35:15
    启发式算法的上下文中,启发式将是执行小的修改的一种方法,或一系列的修改,对给定解或部分解的修正,为了得到不同的解或部分解决方案。实际的修改这些工作将涉及到邻居搜索。按照一定的设计策略,一个启发式算法...
  • HDP单网络启发式动态规划,自适应动态规划中较为简单的网络,很好的入门例子,可运行。
  • 算法之启发式搜索

    2020-10-29 18:59:26
    启发式搜索从名字上来讲,我们就可以知道启发式搜索是一种有目的性的搜索,是和盲目搜索(深度优先搜索和广度优先搜索)有着重要的区别。
  • 浅析超启发式算法(hyper heuristic)

    千次阅读 多人点赞 2019-01-02 17:02:08
    在介绍超启发式算法前,先来简单聊一聊启发式算法。为解决NP难问题(精确求解非常困难,但验证结果十分简单,例如旅行商问题就是一个典型的NP难问题),启发式算法应运而生。据我所知,启发式算法中有基于种群的遗传...
  • 启发式搜索

    万次阅读 2011-11-13 23:05:09
    启发式路径搜索 目录 一 题目背景 1 二 方法提炼 2 三 Demo 2 四 优化启发式搜索 5 一 题目背景 我们玩游戏时,经常点击一下鼠标,游戏角色就会自动按照最短路径走向目的地,这需要搜索最短路径,这都是...
  • 启发式评估

    千次阅读 2013-11-14 11:05:33
    使用Nielsen的十条准则做WEB的启发式评估 ——根据workshop, Heuristic Evaluation: Fitting The Approach to the Project整理 Nielsen & Molich‘s Heuristics,优点:所需的时间和资本都比较低,可以快速进行评估...
  • HNSW启发式选边分析

    2020-05-11 20:18:10
    为什么启发式选边? HNSW是增量式构建的,构图时它的启发式的选边策略不仅考虑了相似度问题也考虑了数据的分布问题。因为HNSW是站在近似最近邻搜索的角度去考虑的,而不是站在构建一个尽可能精确的近邻图的角度考虑...
  • 启发式算法(heuristic)

    千次阅读 2020-12-29 20:06:20
    我认为启发式算法称为「探索式算法」or「经验学习法」更加合适。 有一些不错的说法: 启发式一般又称人工智能算法或全局优化算法。 启发式算法是指具有自学习功能,可利用部分信息对计算产生推理的算法。 … ps:...
  • 启发式算法(Heuristic)概述

    千次阅读 2020-10-13 10:29:47
    一个启发式例子。 驾驶汽车到达某人的家,写成算法是这样的:沿167 号高速公路往南行至Puyallup;从South Hill Mall 出口出来后往山上开 4.5 英里;在一个杂物店旁边的红绿灯路口右转,接着在第一个路口左转;从...
  • 启发式搜索在人工智能中起着关键作用。在本章中,您将详细了解它。 AI中的启发式搜索的概念 启发式是一个经验法则,它引导我们找到可能的解决方案。人工智能中的大多数问题具有指数性,并且具有许多可能的解决方案。...
  • 【算法】树上启发式合并算法

    千次阅读 2017-03-25 17:22:50
    树上启发式合并算法是启发式合并算法在树上的应用。下面我直接通过一个例子来讲解这个算法。  例:给定一棵有根树,树的结点编号为1~n,根结点为结点1。结点i有颜色col[i],其中1≤col[i]≤n。要求回答m个询问,每...
  • 包含讲解特征码查杀技术、启发式扫描技术、主动防御技术的原理。网络上现在暂时还没有的资料。 7.7.1启发式扫描 在章节7.1中,我们已经了解了启发式扫描的评分原理。而本节对启发式扫描的讲解将直接针对NOD32这款...
  • 常用的启发式算法 什么是启发式算法 定义: 启发式算法一般用于解决NP-hard问题,其中NP是指非确定性多项式。 启发式算法是相对于最优化算法提出的,是基于直观或者经验构造的算法,在可接受的开销(时间和空间)...
  • 启发式搜索算法

    千次阅读 2012-03-19 22:04:39
    再谈启发式搜索算法 作者:July 二零一一年二月十日 本文参考: I、 维基百科、 II、 人工智能-09 启发式搜索、 III、本BLOG内,经典算法研究系列:一、A*搜索算法 ---------------------------- 引言:...
  • 广度优先搜索BFS、一致代价搜索UCS、深度优先搜索DFS和启发式搜索A*的详细理解,最重要的是自己创建的例子,并进行详细的分析和算法步骤的图示
  • 启发式路径搜索(1)

    千次阅读 2013-10-05 20:14:41
    启发式路径搜索 目录 一 题目背景 1 二 方法提炼 2 三 Demo 2 四 优化启发式搜索 5 一 题目背景 我们玩游戏时,经常点击一下鼠标,游戏角色就会自动按照最短路径走向目的地,这需要搜索...
  • 论文研究-PDES信息管理的一种启发式算法.pdf, 分析了并行离散事件仿真中同步信息的相关性,并提出了对这些信息进行管理的一种启发式...最后用一个例子说明这种启发式算法.
  • 再谈启发式搜索算法

    千次阅读 2015-12-05 09:17:46
    一、何谓启发式搜索 启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具有特定信息的节点搜索下去 ,这些节点可能是到达目标的最好路径。 我们称这个过程为最优(best-first)或启发式搜索。 ...
  • 启发式算法总结

    万次阅读 多人点赞 2018-08-02 19:22:00
    对于某些计算起来非常复杂的最优化问题,比如各种NP完全问题,要找到最优解需要的时间随问题规模呈指数增长,因此诞生了各种启发式算法来退而求其次寻找次优解,是一种近似算法(Approximate algorithms),以时间换...
  • 启发式爬山法

    2014-06-20 16:18:00
    爬山法是一种局部搜索算法,也属一种启发式方法。但它一般只能得到局部最优,并且这种解还依赖于起始点的选取。现在有各种版本的爬山法,下面给出的是一种简单迭代爬山法。 开始时,当前解的所有可能邻域都被考虑,...
  • 测试先知和启发式方法

    千次阅读 2012-08-31 16:50:34
    测试先知和启发式方法 测试人员拿到测试任务时,需要考察两类基本情况。第一类是测试人员的情况: n 测试人员的测试经验怎么样,丰富还是欠缺? n 测试人员对被测产品的行业经验怎么样,熟悉还是了解? n ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,654
精华内容 14,661
关键字:

启发式的例子