人工智能之搜索算法

通过搜索来解决问题


狄更斯的《双城记》中第一句话是: 这是最好的时代,也是最坏的时代。

在这里插入图片描述

这本首次出版于1859年的书距离我们已经150多年了。如果狄更斯来到今天,我们可以坚定地告诉他:“这是最好的时代,也是最坏的时代。”

因为我们正在从信息时代跨入智能时代。曾经,我们要学习如何操作机器,掌握机器的语言,向机器靠拢。而今天,机器在向人类靠拢,试图理解人类、用我们的语言与我们对话。这就是“智能时代”,这个时代的基础是数据和算法。

我们还没有经历过机器在智能上全面超越人类的时代,我们需要在这样的环境中学会生存。这将是一个让我们振奋的时代,也是一个给我们带来空前挑战的时代。

这两年,出尽风头的人工智能是阿尔法狗。阿尔法狗(AlphaGo)是第一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能程序,由谷歌(Google)旗下DeepMind公司戴密斯·哈萨比斯领衔的团队开发。具体到下棋的策略,阿尔法狗里面有两个关键的技术:

第一个是把棋盘上当前的状态变成一个获胜概率的数学模型,这个模型的关键是靠大数据训练(学习)出来的。

第二个是启发式搜索算法——蒙特卡洛树搜索算法(Monte Carlo Tree Search),这个算法能将搜索的空间限制在非常有限的范围内,保证计算机能够快速找到好的下法。

由此可见,下围棋这个看似智能型的问题,从本质上讲,是一个大数据和算法的问题。

数据和算法是驱动智能时代的两架马车。“大数据”这个时髦的词听得我们耳朵都要长茧了。今天我们不说数据,来谈谈算法,并重点引入上文提到的搜索算法及其应用。

1. 什么是算法?

在很多人眼里,很多人认为算法是这样的:

在这里插入图片描述

或者是这样的:

在这里插入图片描述

恭喜你,你的感觉是对的😹😂

但是你想过没有,最开始的它其实是这样的,又萌又直接:<{=....(嘎嘎~)

在这里插入图片描述

这个图诠释了纳兰性德的词:“人生若只如初见”,再回首:“哇的一声哭出来~ ”

谁si谁知道~,憋着"你行你上"内心,可能是这样的:

在这里插入图片描述

这说明什么的呢?我们还是得从基础入手,而不是一步跳到算法的深海中去,不信来看看😂

按照老传统,我们对算法给出一个定义,算法在百度百科中的定义如下:

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

一个算法应该具有以下五个重要的特征:
有穷性:(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性:(Definiteness)算法的每一步骤必须有确切的定义;
输入项:(Input)一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项:(Output)一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性:(Effectiveness)算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

是不是看着很迷糊?是的,定义总是那么晦涩难懂,先不用管它。简单一句话总结:算法就是解决问题的过程。

这个听起来高大上的词,实际上在我们生活中随处可见,每一天我们都会用到各种算法,只是你不知道而已。

比如菜谱就是一个算法。它就是一个饭菜制作的流程,解决我们如何做饭的问题。

按照算法的定义,菜谱具有算法的五个特征。

举个栗子:

菜谱:拍黄瓜
1、黄瓜洗干净。
2、放在案板上,用刀拍开,切小块。
3、蒜切末,花生用刀碾碎。
4、黄瓜加入蒜末、花生粒、生抽、芝麻油、香醋,充分搅拌均匀入味,即可。

有穷性:拍黄瓜,有4个步骤

确切性:每个步骤目标明确。

输入项:黄瓜、蒜、花生、生抽、芝麻油、香醋

输出项:拍黄瓜这道菜

可行性:每个步骤目标明确,能够在有限时间内完成。(拍个黄瓜也就5分钟)

其实,菜谱也好,说明书也好,人生的取舍与选择也好,商业战略决策也好,这些都是一种算法问题。

举两个生活中应用简单算法的例子:

比如打印一个20页的文件,需要打2份。
打印出来的文件排序是:“112233445566….2020”。现在你开始分成两份,正常情况下,你会左一张右一张这样分成两摞。
实际上有个更简易的分法:先在左边分1张,然后右边分两张,再左边分两张,再右边分两张……最后一张分左边。排序如下:[1,12,23,34,45…1920,20]
通过采用算法的优化,一次两张的分法,工作量一下减少了一半。

再比如,快速排序算法:

作为一名有前途的图书管理员,你需要把还回来的一堆书(比如有100本)按顺序入架。你该怎么做?
传统的办法:
一本一本书按照序号还回到书架。100本书,你需要跑100次。

经过算法优化的方法:
先从这堆书里随便挑出来一本,
把比它号小的扔左边,比它号大的扔右边。
分成两堆后,再重复上面的步骤。
从小到大排序后的书,按照书架顺序归类。
每个书架跑一次,可能只需要跑10次就完成了。
通过采用算法的优化,工作量能够减少了一大半。

从以上生活中的例子能看出来,自从人类有文明以来,我们就一直在发明、使用和传播各种各样的算法,用于衣、食、住、行,等等。

上面的例子中算法虽然有用,但是我们用笨方法也能完成任务。

然而,在人生中,很多时候会面临选择的问题。人生没有回头路,用笨方法的人往往会“后悔”和“错过”。尤其是在今天这个智能时代,不掌握点有用的算法,最好的时代也会变成最坏的时代。

  • 23
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值