【原创】生活中的算法

今天微信朋友圈有人发了这样一条消息,如下:

对于80%的人来说,玩儿这个游戏的方法就是拿眼睛瞅了,瞅到一个算一个,大部分人都能找到:章,兄,立,早。

细心一点的人能找到:克,十,儿,古。

处女座的应该还能再加上:一,音。

但是,如果你问一个人他找这些字的思路是什么,相信他会这样回答你:这还需要思路吗?看着有这个字就写出来喽。

普通人这么说当然无可厚非,但这种话不应该从一个研究过算法的人嘴里说出来,生活中我们做任何事情,都有应该有一个基本思路,小到整理试卷时候的高效排序方式(据我们老师讲他尝试过,最快的整理方式是归并排序,大多数人应该是遵循插入排序的思想),大到出门旅游时的线路选择(最短路径,最经济路径),算法可以为我们解决生活中的许多问题。

自从有了女儿以来,我一直在观察她从出生到目前(三岁零九个月)的语言形成和行为方式,我不知道有多少人这样做过,如果观察过的人应该可以理解我下面的话:很多时候,人和机器是没有太大区别的,时至今日,我女儿说的每一句话,出现的每一种看似出乎意料的表情和动作,仔细分析后基本都可以在她过往的经历中找到原型。

从研二开始,我对机器学习产生了很大的兴趣,尤其是深度学习,我坚信在未来的30到50年,一定会有比肩人类的人工智能出现,拥有涌现、联想、抽象的能力。

话题扯远了......

下面我们尝试用简单的算法来解决这个小游戏吧:

首先这个问题和以往研究过的某一类问题很像,具有“联想”和“抽象”能力的你一定发现了,没错,那就是字符串匹配算法。

在以往,我们研究过的大多数的匹配都是针对字符串,对于这样“结构化汉字串”(请允许我这么称呼它)而言,无非就是从最基本的笔画开始,依次往后进行组合,然后与字典进行匹配,找到对应的字就输出嘛,如此看来,这与字符串匹配没有什么两样。

那就从“丶”笔画开始喽,字典里有的字:首先找到了立、继续往下,找到音,继续往下,找到章,再往下搜索完所有笔画没有匹配的汉字了

从“一”笔画开始,找到一,然后没有了

以此类推

我们的汉字匹配程序找到了什么字呢?

立,音,章,一,日,早,(二),干,十,古,克,口,兄,儿

还不错嘛~遗憾就是这种算法会破坏字体的结构,比如找到的二,我们可以找到一定的规则来消除这样的错误匹配。

另一个遗憾就是时间复杂度太高啦,找这么简单的结构当然没问题,但是如果有一个超级无聊大变态给你写了一个巨长的字(假设由1亿个基本汉字摞起来)让你找,这个算法恐怕就有点力不从心了。

在字符串匹配领域最高效的当然首推我前文提到的moore教授的算法和KMP三位大神的算法了,可惜在此处有不适用的地方,需要我们进一步思考。

吃饭去也。

时间: 2024-10-12 17:35:17

【原创】生活中的算法的相关文章

课程2,阶段二,生活中的算法:折纸飞机(不用电脑)

U https://code.org/curriculum/course2/2/Teacher 原文 (翻译 clock_JZ) 不用电脑的活动 生活中的算法: 纸飞机 课程时间: 20 分钟         该时间只包括基本活动. 时间充裕的情况下,可以加入课前介绍及课后思考和拓展 课程概述 这节课,我们通过制作纸飞机,把日常生活的内容和算法概念结合起来. 目标是让学生们能够开始建立编程环境和日常环境的相互关系. 教学计划 开始 - 15分钟 1) 概述 2) 单词 3) 每天做什么 活动:

【转帖】处理器史话 | 小范围受众的专业处理器在生活中起到哪些作用?

处理器史话 | 小范围受众的专业处理器在生活中起到哪些作用? https://www.eefocus.com/mcu-dsp/377796/r0 专用型 CPU 是指那些为了某种特定的应用而设计的并为这些特殊应用而将内部体系结构与指令集作了专门优化的 CPU,如用于多媒体应用的媒体 CPU(Media Processor,MP),用于路由器等网络通讯产品的网络 CPU(Network Processor,NP),及用于网络安全保障,数据加密解密的安防 CPU(Security CPU),用于用来

推荐系统中常用算法 以及优点缺点对比

推荐系统中常用算法 以及优点缺点对比 在 推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器

10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽

10种令人吃惊的方式你的日常生活中正在收集数据的大数据野兽 原文:http://www.bloomberg.com/slideshow/2014-06-03/10-surprising-ways-your-daily-life-is-feeding-the-big-data-beast.html 无处可逃 大数据是你日常生活中,无论你喜欢与否的重要组成部分 - 甚至是意识到这一点. 当你去看医生.去到你的手机上工作或获得方向,有一个非常好的机会,有软件在那里悄悄地收集和分析这些信息. 并依据不同

HuffmanTree的浅析和在C#中的算法实现

无论是在我们的开发项目中,还是在我们的日常生活中,都会较多的涉及到文件压缩.谈到文件压缩,可能会有人想问文件压缩到底是怎么实现的,实现的原理是什么,对于开发人员来说,怎么实现这样一个压缩的功能. 接下来,我们就来了解一下文件压缩的相关知识.文件压缩是如何实现的?这个我们就得了解一下数据结构,因为文件在压缩的过程中会转化为数据流,那么如何将数据流进行对应的压缩,这个问题就得靠算法来实现.那么文件压缩的算法是什么呢?那就是HuffmanTree. 提到HuffmanTree,我们就需要顺道讲讲数据结

生活中的数学感悟

数学在生活中无处不在.最常见的就是交易.一件商品最终的价格确定后,我给商家指定价格的钱,买到这件商品.这就是一简单的次交易.排除商品质量问题,个人品味和人际问题.交易本身最核心的内容就是一次简单的加减法.当然类似这种简单的数学我不会记录的.我要记录的都是我经历到的,或者感兴趣的且有点小复杂的数学. 一.资源分配 1.静态分配 在社会这个大集体中,经常会有人合伙去进行某个交易.交易完成后,一般是按所出的钱的比重多少进行分配.用数学来描述就是: n个人共出了s元钱,得到某商品资源(条件是这个商品够n

ACM中常用算法----字符串

ACM中常用算法--字符串 ACM中常用的字符串算法不多,主要有以下几种: Hash 字典树 KMP AC自动机 manacher 后缀数组 EX_KMP SAM(后缀自动机) 回文串自动机 下面来分别介绍一下: 0. Hash 字符串的hash是最简单也最常用的算法,通过某种hash函数将不同的字符串分别对应到不同的数字.进而配合其他数据结构或STL可以做到判重,统计,查询等操作. #### 字符串的hash函数: 一个很简单的hash函数代码如下: ull xp[maxn],hash[max

10种令人惊讶的方式你的日常生活中正在收集数据的大数据野兽

10种令人惊讶的方式你的日常生活中正在收集数据的大数据野兽 原文:http://www.bloomberg.com/slideshow/2014-06-03/10-surprising-ways-your-daily-life-is-feeding-the-big-data-beast.html 无处可逃 大数据是你日常生活中,不管你喜欢与否的重要组成部分 - 甚至是意识到这一点. 当你去看医生,去到你的手机上工作或获得方向,有一个很好的机会,有软件在那里悄悄地收集和分析这些信息.并根据不同的情

转:【总结】推荐系统中常用算法 以及优点缺点对比

转:http://www.sohu.com/a/108145158_464065 在推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程度上决定了推荐系统性能的优劣.目前,主要的推荐方法包括:基于内容推荐.协同过滤推荐.基于关联规则推荐.基于效用推荐.基于知识推荐和组合推荐. 一.基于内容推荐 基 于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要