美文网首页
贪婪算法与黑箱测试——我们是如何选择的

贪婪算法与黑箱测试——我们是如何选择的

作者: JudeArcturus | 来源:发表于2016-02-28 21:42 被阅读1039次

首先简单介绍一下贪婪算法和黑箱测试的概念:

简单来说,贪婪算法就是通过局部最优达到整体最优的算法。当一个任务过于庞大,无法从整体上计算寻求最优解的时候,往往需要对任务进行拆解细分成许多小任务逐一完成再组合起来。贪婪算法就是希望通过将任务拆解细分到能够计算的程度,希望通过细分子任务最优的方式达到组合后整体任务最优。

一个典型的系统往往是这样的:输入——系统函数——输出。因此,要想知道什么样的输入能得到什么样的输出,了解中间的系统函数是至关重要的一环。但可惜的是,因为某些原因的限制,我们无法知道这个系统的具体情况,不了解它是如何处理输入数据的。这个时候,这一系统函数对我们来说就是一个黑箱子。针对这一黑箱的测试即为黑箱测试。一般是通过控制变量法,不断改变输入元素的组成,通过分析输出与输入的对应关系,反推出系统函数的具体形式。

贪婪算法有这样一个特点:先不去考虑不同的贪婪策略,如果贪婪的次数越少,那么越有可能达到整体最优。这一点是显而易见的,如果对整体取贪婪,即只取一次最优时,虽然不同的策略可能有不同的结果,但得到的必然是整体最优解。换句话说,如果我们能从更多角度,更大范围地对问题深入分析,那么得到好结果的可能性也会相应提高。

而黑箱测试在生活中其实是非常常见的:我们知道通过按开机键启动电脑、知道离火太近会被灼伤、知道某种药材可以用来治病。这些东西是可以通过经验总结出来的,但至于为什么,又有几个人能够彻底说的清楚呢?这也是科学界绕不开的一大问题:我们所有的研究成果,被实验验证的理论,都是基于观察得到的,实际并不清楚其根本原因。例如《三体》里的农场主理论,原型是英国哲学家伯特兰•罗素提出的火鸡问题:在火鸡饲养场里,一只火鸡发现,每天上午9点钟主人给它喂食。它并不马上做出结论,而是慢慢观察,一直收集了有关上午9点给它喂食这一事实的大量观察证据:雨天和晴天,热天和冷天,星期三和星期四,各种各样的情况。最后,它得出了下面的结论:“主人总是在上午9点钟给我喂食。”可是,事情并不像它所想象的那样简单和乐观:在圣诞节前一天的9点,主人没有给它喂食,而是把它宰杀。

如果我们将两者结合起来,就会发现这两者是如何构筑我们思考和选择的了:我们总结归纳前人走过的道路,得到了“什么因结什么果”的基本认知,从而指导自己,在有限的已知信息里选择自己决定最好的选项,如此往复循环。

说到这里也就能理解了:家长们总希望孩子学尽可能多的东西;老人们总希望子女别太折腾,找个稳定的工作就好……当然,也肯定会有人说“读书不一定有用”,“不拼搏岂不妄负人生”之类的。无无意去辩驳价值取向的问题。毕竟黑箱测试的结果各种各样,人们从未能精确分解导致某种结果的每一个影响因素,加上个体差异,最终如何选择还得看个人相信何种“黑箱测试”的结果。总结来说,人们非常依赖过往的经验,因此开先河永远是极其困难的事情,想做第一个吃螃蟹的人需要很大勇气。从某种角度上来说,即使是所谓开创性的第一次尝试,未必没有受到相近”黑箱测试“结果的影响。

由于我们都是从观测到的黑箱测试结果来进行选择,根据贪婪算法的特点,  显然年长有经验的人更加占据优势。因为他们有更多的“黑箱测试”结果可以依靠,即能从更大范围内寻求最优。什么是远见?不求全盘知晓,只需技高一筹,棋胜一招。因为有经验者潜在的可贪婪范围比较大,所以更可能做出更好的选择。

当然了,世事无绝对。 在什么情况下菜鸟能胜过老鸟呢?答案显然是:变革。人做选择的前提是根据自己的经验和常识,而越有经验的人,在遇到变革的时候往往也会为经验所累(如果你将某个结果验证了成千上万遍,那么也会将其当成是真理,就好像那只火鸡)。这也是为什么往往老人更容易 固执己见,想来用来一辈子的东西,若要推翻真的一件难以接受的事情。

写到这里,我们可以大致得到这样一个结论:人是通过观察归纳总结来认识世界的,然后在这一基础上使用某种贪婪策略去寻找最优解。至于这种策略是如何制定的,会受到哪些因素影响,这个有问题又需要通过大量的“黑箱测试”来归纳。于是乎,我们的认知和结论,就好像农场里的火鸡,等着被变革杀掉的那一天。

相关文章

  • 贪婪算法与黑箱测试——我们是如何选择的

    首先简单介绍一下贪婪算法和黑箱测试的概念: 简单来说,贪婪算法就是通过局部最优达到整体最优的算法。当一个任务过于庞...

  • 算法思想 - 贪婪(贪心)算法

    贪婪算法 什么是贪婪算法 “贪婪”可以理解为,以逐步的局部最优,达到最终的全局最优。即在每一次选择中都选择当前的最...

  • 贪婪算法-js

    参考:算法分析与设计-贪婪心&动归 还在浪费时间学贪婪心算法么?告诉你三个不需要学习贪婪心算法的理由! 每一步选择...

  • 算法图解 (八)

    第八章 贪婪算法 贪婪算法是指, 在对问题求解时, 总是做出在当前看来是最好的选择。 也就是说, 不从整体最优上加...

  • 《数据结构与算法之美》31——贪心算法

    什么是贪心算法 贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前...

  • 代码小工蚁的#《算法图解》#学习笔记-C8贪婪算法

    代码小工蚁的#《算法图解》#学习笔记-C8贪婪算法C8 贪婪算法greedy algorithms 一、贪婪算法 ...

  • 算法之贪婪算法

    贪婪算法的优点——简单易行!贪婪算法很简单:每步都采取最优的做法。 用专业术语说,就是你每步都选择局部最优解,最终...

  • 贪心算法

    介绍 介绍来自 LeetCode 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也...

  • 算法小专栏:贪心算法

    本篇将介绍贪心算法相关知识。 一、简介 贪心算法,又称“贪婪算法”。在对问题求解时,总是做出在当前看来是最好的选择...

  • 贪心算法实践之集合覆盖问题

    介绍 贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够...

网友评论

      本文标题:贪婪算法与黑箱测试——我们是如何选择的

      本文链接:https://www.haomeiwen.com/subject/evxekttx.html