首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >启发式函数与评价函数的区别

启发式函数与评价函数的区别
EN

Stack Overflow用户
提问于 2014-04-12 06:27:00
回答 6查看 4.7K关注 0票数 3

我正在阅读关于搜索算法和启发式搜索的文章,我对启发式和评估函数有点困惑。人们似乎非常自由地使用它们来描述看似相同的事物。我遗漏了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2020-02-14 10:09:06

在这个问题上可能会出现混乱,因为启发式在不同的上下文中意味着不同的事情。那么,让我谈谈启发式的不同含义。然后,我们可以返回到评估函数。

单Agent启发式搜索

在单agent启发式搜索(如A*,IDA*)中,启发式通常以可接受或一致的词语限定。在这种情况下,启发式是达到目标的成本的下限。也就是说,它们是返回数值的函数的结果。如果启发式是可接受的,返回的值不会高估到目标的真实距离。如果启发式是一致的,相邻状态之间的启发式变化永远不会超过边缘代价。如果目标的启发式为0,则一致启发式是可接受的,但并不是所有允许的启发式都是一致的。

启发式和算法的结合证明了许多特性。A*和IDA*将用一致的启发式找到最优路径。A*在具有一致启发式的必要节点展开中是最优的,但用不一致的启发式A*可以执行N状态的2^N展开。(有关发生这种情况的示例,请参阅这个演示。)

游戏玩

在使用α-β算法或蒙特卡洛树搜索算法(MCTS)的游戏程序中,启发式算法代表了游戏胜负值的近似。例如,该值可能在-1 (损失)和+1 (win)之间进行缩放,其中的值在两者之间表示对真实值的不确定性。这里没有关于低估或过高估计的保证,但是值的排序越好(wins > Here >损耗),算法的性能就越好。即使将仿射变换应用于启发式,α-β剪枝也会返回相同的结果,因为α-β使用了值的相对顺序进行搜索。有关MCTS中的启发式示例,请参见本论文。请注意,在这种情况下,启发式仍然有一个数值。

优化

在寻找诸如SAT (可满足性问题)或CSP (约束满意问题)这样的优化问题时,如果能快速找到好的解,算法就会效率更高。因此,他们不是以一种天真的方式进行搜索,而是以一种期望更有效的方式进行搜索。如果排序良好,搜索可能会提前结束,但这并不能保证。在这种情况下,启发式是排序选择的一种方式,最终可能会更快地找到解决方案。(在SAT或CSP.中令人满意的变量分配)工作的下面是一个例子,为这些问题探索不同的排序启发式。

在这种情况下,启发式被用于排序,所以它不必是基于数字的。如果它是基于数字的,那么这些数字不一定像在其他类型的搜索中那样具有全局意义。除了SAT和CSP之外,还有许多优化问题的变体,在这些问题中,启发式是以这种方式使用的。

评价函数

那么,什么是评价功能呢?它可能是最常用的第二种情况下的游戏,其中启发式和评估函数可以互换,但它更一般地指的是一种状态的数值评估。主要的一点是,评价函数比启发式函数更具体,因为启发式在更广泛的上下文中有广泛的应用。

票数 2
EN

Stack Overflow用户

发布于 2014-04-14 00:46:17

评估函数(或评分函数)检查解决方案是否可行以及它有多好。通过比较2种解决方案的得分,可以看出哪一种更好(如果两者都可行)。例如:如果你从布鲁塞尔到马德里通过巴黎、里昂和马赛,距离是1000公里(=实际的道路距离)。

启发式函数也会返回类似分数的内容,但它适用于部分解,并且不需要精确。对于A*搜索,它必须是可接受的。例如:如果你通过巴黎从布鲁塞尔到马德里(其余的你还不知道),这段距离是800公里(=从布鲁塞尔到巴黎的实际公路距离加上从巴黎到马德里的乌鸦飞行距离)。

票数 4
EN

Stack Overflow用户

发布于 2015-01-18 08:48:39

启发式函数是问题特定的,并编码到最近的目标节点的距离。然而,评估函数并不是特定于问题的,而是由算法来决定下一步要扩展哪个节点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23031657

复制
相关文章
【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
上一篇博客 【OpenGL】七、桌面窗口搭建 ( 导入头文件 | 桌面程序入口函数 | 注册窗口 | 创建窗口 | 显示窗口 ) 完成了 桌面初始化的操作 , 注册桌面窗口 , 创建桌面窗口 , 显示桌面窗口 ;
韩曙亮
2023/03/28
1.7K0
【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 |  渲染绘制 ) ★
Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理
文首先对GLSurfaceView相关知识进行讲解,然后介绍Android系统如何获取摄像头数据并利用GLSurfaceView渲染到屏幕上。
天天P图攻城狮
2018/02/02
13.1K0
Android OpenGL开发实践 - GLSurfaceView对摄像头数据的再处理
TRTCSDK自定义采集Texture2D视频通话
摄像头通话功能,是TRTCSDK对系统摄像头进行了封装,采集摄像头数据,编码传输通话。
腾讯云-chaoli
2020/12/04
1.4K1
TRTCSDK自定义采集Texture2D视频通话
ShareREC for iOS录屏原理解析
众所周知,由于iOS系统的封闭性,也出于保护用户隐私的角度,苹果并没有公开的API供开发者调用,来录制屏幕内容。导致许多游戏或者应用没有办法直接通过调用系统API的方式提供录制功能,用户也无法将自己一些玩游戏的过程录制下来分享到其他玩家。基于此,ShareREC应运而生。下面我们从说一下ShareREC的录屏的实现原理。
LiveVideoStack
2021/09/02
1.7K0
ShareREC for iOS录屏原理解析
TRTCSDK自定义采集Texture2D视频通话
摄像头通话功能,是TRTCSDK对系统摄像头进行了封装,采集摄像头数据,编码传输通话。
ppchao
2020/12/03
1.7K0
TRTCSDK自定义采集Texture2D视频通话
TRTCSDK自定义采集Texture2D视频通话
摄像头通话功能,是TRTCSDK对系统摄像头进行了封装,采集摄像头数据,编码传输通话。
ppchao
2020/12/03
1.3K1
TRTCSDK自定义采集Texture2D视频通话
OpenGL进行简单的通用计算实例
博主作为OpenGL新手,最近要用OpenGL进行并行的数据计算,突然发现这样的资料还是很少的,大部分资料和参考书都是讲用OpenGL进行渲染的。好不容易找到一本书《GPGPU编程技术,从OpenGL、CUDA到OpenCL》,里面对并行处理的发展进行了系统性的介绍,还是很不错的。小白博主很兴奋,看完书中第三章后恍然大悟了很多,就贴出书中代码3-3的例子,实现一番,并用一副图片数据做了实现。 实现环境:Window7 32bit, VS2013+OpenGL3.3+GLEW+GLFW。 OpenGL用来进行
一棹烟波
2018/01/12
2.1K0
OpenGL进行简单的通用计算实例
一看就懂的 OpenGL 基础概念(4):各种 O 之 FBO丨音视频基础
这个公众号会路线图式的遍历分享音视频技术:音视频基础 → 音视频工具 → 音视频工程示例 → 音视频工业实战。关注一下成本不高,错过干货损失不小 ↓↓↓
关键帧
2022/11/29
2.1K0
一看就懂的 OpenGL 基础概念(4):各种 O 之 FBO丨音视频基础
【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】五、OpenGL FBO数据缓冲区
上一篇文章,讲解了如何使用EGL,并且提到EGL可以建立一个离屏渲染的缓冲区,这种离屏渲染的方式通常用于模拟整个渲染窗口,比如可以用于FFmpeg软编码,将显示在虚拟窗口中的画面编码成H264。
开发的猫
2020/04/02
2.8K0
【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】五、OpenGL FBO数据缓冲区
OpenGL 从入门到成魔-第2章-创建 OpenGL 窗口
注:参考自bilibili系列视频,OpenGL 从入门到成魔-第2章-创建 OpenGL 窗口https://www.bilibili.com/video/BV1Uz411v7mN
瑶瑶
2020/06/03
7470
OpenGL ES 2.0 (iOS)[01]: 一步从一个小三角开始
1). 三个什么端点(屏幕坐标点)? 要回答这个问题要先了解 OpenGL ES 的坐标系在屏幕上是怎样分布的:
半纸渊
2018/09/04
2.2K0
OpenGL ES 2.0 (iOS)[01]: 一步从一个小三角开始
OpenGL ES 如何一次性渲染到多个纹理?
OpenGL ES 多目标渲染(MRT),即多重渲染目标,是 OpenGL ES 3.0 新特性,它允许应用程序一次渲染到多个缓冲区。
字节流动
2022/02/09
3.1K0
OpenGL ES 如何一次性渲染到多个纹理?
OpenGL ES 多目标渲染(MRT)
OpenGL ES 多目标渲染(MRT),即多重渲染目标,是 OpenGL ES 3.0 新特性,它允许应用程序一次渲染到多个缓冲区。
字节流动
2020/10/12
3K0
OpenGL ES 文字渲染
在音视频或 OpenGL 开发中,文字渲染是一个高频使用的功能,比如制作一些酷炫的字幕、为视频添加水印、设置特殊字体等等。
字节流动
2021/06/24
1.9K0
OpenGL ES 文字渲染
音视频技术基础(四)-- OpenGL
既然是学习音视频技术,那必然少不了渲染这个环节,OpenGL就是进行图形渲染的一个重要角色。
黑眼圈云豆
2020/07/10
2K0
OpenGL 之 帧缓冲 使用实践
帧缓冲(Framebuffer Object),简称 FBO,在渲染绘制中, 图像最终都是绘制到 FBO 上的,一般都是默认的 FBO 上,也就是我们的屏幕。
音视频开发进阶
2019/07/25
1.6K0
iOS下 WebRTC 视频渲染
今天为大家介绍一下 iOS 下 WebRTC是如何渲染视频的。在iOS中有两种加速渲染视频的方法。一种是使用OpenGL;另一种是使用 Metal。
音视频_李超
2020/04/02
2.2K0
iOS下 WebRTC 视频渲染
「Android音视频编码那点破事」序章
  其实这一两年关于Android 平台的视频编解码学习资料已经很多了,包括书籍和网上的一些公开教程。书籍讲得详细一点,所以推荐大家去买些书籍看看。而网上的资料的话,大多是零星点点,新手学习起来并不是很轻松,包括我。所以这也是促使本人对这一块知识做记录的原因。   我打算开几个章节来分享一下相关的知识点,因为想详细展开,内容可能有点多,也算是做一些个人笔记。
阿利民
2022/05/16
3840
「Android音视频编码那点破事」序章
RenderDemo(1):用 OpenGL 画一个三角形丨音视频工程示例
这个公众号会路线图式的遍历分享音视频技术:音视频基础 → 音视频工具 → 音视频工程示例 → 音视频工业实战。关注一下成本不高,错过干货损失不小 ↓↓↓
关键帧
2022/11/29
1.3K0
RenderDemo(1):用 OpenGL 画一个三角形丨音视频工程示例
OpenGL与OpenGL在移动端的应用
OpenGL首先我们从字面意思来理解:Open Graphics Library,开放的图形库,图形库自然是处理图形的,所以简单来说OpenGL就是用来处理图形的一个三方库。 稍微技术流一点,作如下解释:是用于渲染2D,3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。
清墨
2019/11/15
2.7K0
OpenGL与OpenGL在移动端的应用

相似问题

从FBO到屏幕的OpenGL渲染

10

OpenGL渲染到FBO

10

OpenGL:使用多个纹理渲染到FBO

11

OpenGL ES :预渲染为FBO纹理

11

将OpenGL FBO纹理渲染为GLXPixmap

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文