问题解决之算法式和启发式

在寻求问题的解答的时候,一般存在两种途径:算法式和启发式。

(一)算法式

算法式就是把所有能够解决问题的方法都一一列出来,然后一个一个的尝试,直至找到正确的方法,问题得以解决。比如说生活中有时我们会忘记行李箱的密码,如果这时候我们从“000”开始一一进行尝试,将每一个可能的密码组合都试一遍,直到找出正确密码,这就属于算法式的解决问题的策略。

(二)启发式

启发式是根据目标的指引,试图不断地将问题状态转化为与目标状态相接近的状态,从而试探那些只对成功趋向目标状态有价值的操作。几种比较常见的启发式方法:

1.手段目的分析法

手段目的分析法就是发现问题的当前状态与目标状态的差别,将要达到的问题的目标状态分解成若干子目标,通过选取不同的手段来实现一系列的子目标最终达到总目标的方法。

手段目的分析法的典型例子就是“河内塔”实验。或者说我们日常生活中拧魔方也是手段目的分析的过程,想要恢复一个魔方首先要拆解成六个子目标即六个面来一一恢复,所以就是选择手段实现每一个面从而去达成整个魔方恢复的目标状态。

2.逆向反推法

逆向反推法就是从目标开始,退回到未解决的最初的问题。常见于解决几何证明题时。比如经常有证明不出几何题的时候,就可以从结论推回已知条件,这种就叫做逆向反推。

3.爬山法

爬山法就是以渐进的步子逐步向目标状态逼近的一种方法。即采取一定的方法逐步降低初始状态和目标状态的距离,以达到问题解决,好像登山者,为了登上山顶,需要一步一步的登上山峰一样。例如:一个医生为了治愈一个患有慢性病的病人一样,要一点一点的用药,慢慢治愈,最终使病人痊愈。

爬山法和手段目的分析法的区别:在于运用手段目的分析法时,有时人们会为了达到目的选择暂时扩大目标状态和初始状态,比如拧魔方的时候,为了恢复成完整的魔方会先完成一个面,在完成下一个面的时候可能会先打破已经恢复好的一面,尽管看起来是距离完成整体任务更远了,但实际上是为了更快更好的达到总的目标。

以上就是算法式和启发式的主要内容,下面我们通过练习题来巩固理解一下这部分的知识:

【单选】小白在做“鸡兔同笼”的问题时,能把各种解法一一列出,加以尝试,最终找到最佳解法。小白的这种解题方法属于()。

A.归纳式B.算法式

C.启发式D.爬山法

【答案】B。解析:算法式就是把所有能够解决问题的方法都一一列出来,然后一个一个的尝试,直至找到正确的方法,从而解决问题的方法。故选B。

THE END
1.启发式算法课程设计理念.docx启发式算法课程设计理念一、教学目标本课程旨在通过启发式算法的学习,让学生掌握基本的算法思想和方法,培养学生的问题解决能力和创新思维能力。具体的教学目标如下:知识目标:使学生了解并理解启发式算法的基本概念、原理和常用算法。技能目标:培养学生能够运用启发式算法解决实际问题,提高学生的编程能力和算法设计能力。情感https://www.renrendoc.com/paper/370548727.html
2.人工智能算法背后的故事:从启发到创新展开 人工智能背后的那些看似神秘的算法,竟然是从大自然的奥秘、科学的启发和人类智慧的碰撞中诞生的?这些算法不仅改变了我们工作的方式,还在悄悄地塑造未来的世界。今天,就让我们一起揭秘,人工智能算法背后的故事,从最初的灵感闪现,到它如何演变成引领创新的核心力量!人工智能算法的灵感常常来自我们日常生活中的平凡https://www.sohu.com/a/839485940_121188207
3.数学建模——启发式算法(模拟退火遗传算法)启发式算法是基于直观或经验构造的算法,在可接受的计算时间和空间条件下,给出待解决优化问题的一个可行https://kaiwu.qboson.com/forum.php?mod=viewthread&tid=431&extra=page%3D1
4.有啥问啥什么是启发式算法(HeuristicAlgorithm)?什么是启发式算法(HeuristicAlgorithm)? 启发式算法是一类在解决复杂问题时利用经验规则和启发式信息进行搜索的算法。这些算法并不保证找到最优解,但在很多情况下能找到一个较好的解,且计算效率较高。启发式算法广泛应用于组合优化、人工智能、搜索问题等领域。 https://blog.csdn.net/mieshizhishou/article/details/140996716
5.经典算法研究系列:八再谈启发式搜索算法编程开发资料库A*搜索算法,作为经典算法研究系列的开篇文章,之前已在本BLOG内有所阐述。 但要真正理解A*搜索算法,还是得先从启发式搜索算法谈起。 毕竟,A*搜索算法也是启发式算法中的一种。ok,切入正题。 一、何谓启发式搜索 启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具有特定信息的节点搜索下去 https://soft-app.iteye.com/blog/922327
6.什么是启发式搜索?详述启发式搜索的原理?用C语言实现启发式搜索用C语言实现启发式搜索算法。内附代码。 大家好,我是贤弟! 一、什么是启发式搜索? 启发式搜索算法是一种基于经验和启发性信息的搜索算法,它通过评估每个搜索节点的启发性价值来指导搜索方向,从而在搜索空间中找到最优解。 启发式搜索算法可以应用于各种领域,如人工智能、运筹学、计算机视觉等。https://cloud.tencent.com/developer/news/1261429
7.遗传算法原理及其应用.pdf该法效率较低。 用心打造免费、绿色、专业、海量的教育文库网站 本文档来源于第一文库网:/view/9713DE425B686CA 3.html 启发式算法:寻求一种能产生可行解的启发式规则,以找到一个最优解或近似最优 解。此法对每个问题都必须找出其特有的启发式规则,不具有通用性。 https://max.book118.com/html/2021/0226/7161120004003061.shtm
8.基于启发式策略的最短路径算法【摘要】:在讨论经典Dijkstra算法和启发式策略算法(A*,矩形算法等)的基础上,提出一种基于Dijkstra算法的动态方向限制搜索算法用于求解道路网络中两节点之间最短路径.该算法结合人类的搜索思路和动态灵活的处理方式,对最短路径算法的搜索策略进行改进,动态改变搜索限制区域,减少计算时间.该算法不仅可以单独提高计算最短路径https://www.cnki.com.cn/Article/CJFDTotal-HZLG200612001.htm
9.7启发式求解器的软件结构和优化算法到目前为止,我们已经完成了数据模型的建立和处理,以及用算法构建(Konstruktiv)和评估(Evaluation)。前面的章节也提到过,启发式算法构建的解决方案未必是最优解,因此本章我们来讲解如何逐步优化启发式算法提供的解决方案,并把到目前为止已经涉及到的算法和结构体系化。 https://www.jianshu.com/p/d8d5d78b9c8c