Day2: 什麽是演算法?— Algorithms

https://ithelp.ithome.com.tw/upload/images/20210902/20128604Ce4Sk06g9T.png
图片来源:*https://www.dcard.tw/f/funny/p/225385728
大家小时候应该有看过这个时代的眼泪 ——— 电话簿,厚厚的一本跟字典一样,里面有着密密码码的小字,时光倒回到20年前,假如我今天想要找到彰化县鹿港镇的海霸王餐厅的电话号码,就要先从彰化县的行政区开始翻起,然後找到餐厅类别後再依照笔划数找到海霸王,顺序就是彰化县>鹿港镇>餐饮业>第一个字是笔划10划的>海… 海之味、海世界、海霸王!经过千辛万苦,总算找到海霸王餐厅的电话。

时间回到现代,如果想要找到彰化鹿港的海霸王餐厅你会怎麽做?当然是二话不说打开网页用关键字「彰化、鹿港、海霸王餐厅」搜寻对吧?不到10秒就找到餐厅的电话了。以上两个例子跟演算法有甚麽关系?可以发现这两种方式都可以达到找到电话号码的最终目的,但是花费的步骤和时间可是天差地远,中间这个解决问题的步骤和方式就是演算法的精随。

甚麽是演算法?

经过一连串的步骤 ,可以解决某个问题。
以做一道黄金炒饭来说,准备好食材,依照食谱上的步骤一步一步烹调,最後做出成品,而程序也是如此,我们可以输入特定的值,经过程序的有限运算步骤之後输出预期的结果,演算法可以用pseudo code(虚拟码)或程序语言表示。

下图就是pseudo code,概略地描述程序逻辑但不包括实作
https://ithelp.ithome.com.tw/upload/images/20210902/20128604x02MILDSEF.png
图片来源:assignmentaccess

演算法具有这些特性:

  • 输入(input): 0个或是1以上的输入
  • 输出(output):输出结果至少有一个
  • 明确性(Definiteness):每个步骤都是明确的
  • 有限性(Finiteness):假如不是有限步骤,一直无止尽的执行,没有设定终止条件的话,那麽电脑就会进入无穷回圈了!
  • 有效性(effectiveness):每个步骤具有可行性,可以用纸笔来表达

其实演算法在现实生活中无所不在,最常见的就是脸书会自动推荐一些好友给你,然後这个人可能是你的国小同学之类的,透过你们之间的共同好友关系,进而推论出这个人有可能是你认识的人,抑或着像是youtube会根据用户的观看习惯,推荐相关的影片,像我最近很喜欢看3c产品开箱,每次点进去youtube首页就会优先推荐我3c相关的影片,或是在Sportify听一些老歌的时候,歌单下方也会出现一个列表「你可能也有兴趣的歌曲」,接者会推荐一些年代相近的怀旧歌曲给我,以前都会惊叹这是甚麽神奇的魔法,现在就知道这都是演算法的推算结果了!


<<:  Day 2 | 介面设计与元件布局

>>:  Day 01 - 参赛初衷

DAY21 这边先帮你上一个按钮喔~(三)

今天就直接开始介绍 Activity 吧! Activity 介绍 每一个应用程序一定都会有一个或是...

不只懂 Vue 语法:後记 - 为自己坚持 30 天的参赛心得

终於完赛了,这篇文章会以个人完赛心得为主,可谓是零技术成分。(撒花~ 我以为完赛都是这样: 最後才没...

单元测试相关

单元测试相关 https://wolkesau.medium.com/ecd69a7ff588 用J...

Day23-Go Gin

前言 上一篇我们介绍了 Go 的网路操作套件 net/http,那就不能错过 Go 的网页框架(fr...

NNI的特性及核心功能

上次开场白说明了NNI最基本的Hyper-parameters(超参)调整,其实只是其中的功能之一。...