演算法初探


二.演算法(Algrothm)

1.演算法的定義

用來解決問題方法及步驟,簡單來說,就是找出解答的方式,好比一個"精確的食譜" ,把我們所遭遇到的問題的解決方法,藉由有系統與條理的方式一步一步的解釋清楚。從上述我們可以知道幾件事情:

a.演算法是用來解決問題

b.演算法將解法分解成不同步驟

c.演算法的解決問題的步驟是精確的,不靠人類的直覺與猜測

因為上面的幾個特性,我們才能夠藉由將演算法利用程式語言編寫成程式.利用電腦做運行計算,來解決我們生活上的問題。

(1)狹義演算法:執行者是人.出現了一些不明確的內容

活動設計-找出下圖中不明確.模擬兩可的內容.說看看是否為符合演算法規準?

a.食譜

(2)廣義演算法:執行者是電腦.不能出現了不明確的內容.如食譜中的少許.適量.差不多.模棱兩可內容

演算法的表示方式

EX:

while (我還沒死) {
問女朋友要不要嫁給我;
if (答案=YES) {
拿出戒指;
break;
}
else
delay(1天);
}
去結婚;

參考網站

http://210.240.9.7/mod/page/view.php?id=218

活動設計-練習將生活中的例子(自然語言)轉換為流程圖或抽象的虛擬碼或圖形

以上採用自然語言來描述.但感覺有點囉唆及冗長

例子2

 

例子3

決策評估

解決 ”怎麼由板橋到高雄的交通問題

a.評估指標

今天如果某人希望用最短的時間從板橋到高雄,我們所期待的就是以最少通勤時間為主,評估指標就是最短時間;如果某人想要的是最節省的方式,那評估指標就是花最少的錢。演算法中的評估指標非常重要,這指標將用來計算評估你解答的品質,用以找出最好的答案。當然,評估指標可以是綜合指標,也就是可以把兩個以上的指標放入一個評估的算式中

b.合理假設

當有了好的評估指標後,你就可以把有可能的 “怎麼由板橋到高雄台北” 方式,來套入評估指標中計算,但這其中有個非常大的問題,底下直接用舉例的方式說明。

如果說 “怎麼由板橋到高雄” 我們以最短時間來做為評估指標,我們就要開始考慮飛機、高鐵、火車、客運、開車…等交通方式來評估,大部分的朋友一定會選擇高鐵,但如果不計成本來說,高鐵不一定是最快速的,今天如果請 F1 車手開著頂級跑車由板橋載你到高雄呢?或是有直升機專程接送呢?

所以在這樣的狀況下,我們要有基本假設,把目前某人能力範圍外的選項拿掉,例如說他有懼高症,那我們就會把直升機選項拿掉;他不想花超過 2000 元,就可能把頂級跑車選項拿掉…,這樣所找到的解,才會是合理又正常的解

但有沒有人想要便宜又快速的方式由板橋前往高雄呢?這絕對有,在這狀況下,我們又要回到評估指標那邊,把時間與花費做成一個綜合性的指標,簡單說,就是把時間與花費都加上權重來衡量。這時候你可以問那個麻煩的人說,速度與金錢對你由板橋前往高雄的重要性,如果速度佔 70% 重要,金錢佔 50% 重要,那你的評估指標就可以做成

速度* 70% 金錢 * 50%

c.選擇演算法

有了評估指標、基本假設後,接下來就要擬定演算法了,就是把有可能的選項一一放入評估指標中,看看哪個比較好就選哪一個,這就是所謂的窮舉法

窮舉法對於小型的題目(專案)來說,是非常好用的方式,因為你不用花時間去思考其他演算法,因為使用窮舉法所花的時間都比你驗證其他演算法來的短,但對於大型題目(專案)來說,窮舉法就不是個好方法

資料來源:

http://article.isunfar.com.tw/posts/information/%E7%94%B1%20AlphaGo%20%E7%9C%8B%E6%BC%94%E7%AE%97%E6%B3%95%20%E8%81%8A%E8%81%8A%E6%BC%94%E7%AE%97%E6%B3%95%E6%9C%80%E5%9F%BA%E6%9C%AC%E7%9A%84%E5%85%83%E7%B4%A0/23231

例子4.選填志願

(1)務實面對現實

a..參考100年北聯排序(滿分36分)

引自林群數學

 

 

b 查詢自己的落點區間比率(待1050616查詢個人區間比率排名後.分總排名及男女排名) (28分以下可增加0.5%)

評估指標

(1)校風及學生競爭力(大學升學率)

101-104大學升學率

104高中升大學升學率

103高中升大學升學率

102高中升大學升學率

101高中升大學升學率

(2)交通便利性

(3)家人的期待與自我期許-雞首或牛後

(4)家人的期待與自我期許-雞首或牛後

孩子想要的才是第一志願


葉丙成:給台大生的畢業叮嚀──放下台大,才能超越台大!

參考資料

陽光大大(FB)

http://tsjh301.blogspot.tw/2014/06/compulsory-education.html?m=1

12年國教家長聯盟(FB)


2.演算法的重要性-是程式設計的靈魂

程式=演算法+資料結構

程式=演算法+資料結構+程式設計方法+語言工具和環境

用十分鐘學會《資料結構演算法和計算理論》

3.演算法相關書籍及常見演算法

改變世界的九大演算法

演算法統治全世界

常見演算法(適合高中以上)

4.演算法相關新聞

Google 的人工智慧系統AlphaGo 阿爾法狗打敗人類圍棋冠軍,在三月九日到十五 日的五戰圍棋對弈中取得首勝,為人工智慧發展寫下重要里程碑。 中國圍棋(西方稱為Go)的歷史悠久且複雜無比,南韓棋王李世是全 球最佳棋士之一,他自十二歲成為職業棋士以來,已拿下十八個世界冠軍頭銜。他表示,因為人有犯錯的風險,所以可能無法打敗AlphaGo。現年 三十三歲的他在第一場對弈登場前說:「人之所以為人,是因為他們會犯錯。」 人為錯誤不僅是他唯一的弱點。李世表示,人類棋手對弈時可揣摩對方的反應與心理,但這次看不到這些線索,讓他頗不習慣。 反觀AlphaGo 這個機器棋手則有許多優勢。它從十萬多場圍棋比賽中模仿高手的棋譜,然後和自己下棋,從錯誤中「學習」。Google 的DeepMind 團隊也設計一套程式,讓AlphaGo 可以預測每一步棋對比賽的長遠影響, 從而判斷哪步落子會必勝。