機智問答
什麼是運算思維?

「抽象化」是把不必要的條件剔除,留下問題核心的思考方法。
生活中充滿了各式各樣看似簡單,實則複雜的問題。例如說,每個路口的紅綠燈,在不同時間,到底哪些應該是綠燈,哪些應該是紅燈,才能順利疏導車流,還能兼顧交通安全?又如辛苦的外送員,要走哪條路才能快速把餐點送到你手上?
這些問題沒有標準答案,甚至有很多不同的解答方法。所以今天要來介紹「運算思維」(Computational Thinking),這種能幫我們找到答案的「方法」。
不同於編寫程式、創造人工智慧,甚至是設計虛擬實境,運算思維強調的是想事情的方式。儘管科學家還沒有統一的定義,但是運算思維許多步驟中有兩個重要元件:「抽象化」和「演算法設計」。
抽象化
找出關鍵問題
「抽象化」,就是把複雜的問題化繁為簡的過程。在外送員的例子中,可以先把問題「分解」成幾個更小的問題,更容易找到答案。
例如想讓餐點最快送到你手上,需要「餐廳最有效率的準備食物」、「外送員要準時抵達餐廳拿到你點的食物」,以及「外送員要騎車走最快抵達你所在地的道路」等幾個條件。
這時候我們會發現,後面兩個問題十分類似,都是想知道從甲到乙地最短的路徑;這時並不需要知道你點的是雞排還是珍珠奶茶,也不需要知道外送員騎的是油車還是電動車,更不需要知道今天外送員是穿什麼顏色的上衣。
排除掉非必要的條件後,這個送餐問題就可以轉化成一張很簡單的圖,圖片中只留下必須有的資訊:起點、終點,以及兩點之間所有的道路長度。
剔除所有不需要知道的細節,只留下我們在乎的資料,這樣的過程就叫做抽象化。
要特別注意的是,抽象化並不會把問題變簡單,而是讓你更專心在解答關鍵問題上,並在未來看到有點不一樣的問題時,依然可以套用類似的解法來處理。
演算法設計
解決核心問題SOP
「演算法設計」就是針對這個抽象化過後的問題,透過一系列方法和步驟來找出答案。
例如可以把所有從甲地到乙地的可能路徑組合先寫下來,接著走過每一條路徑,記錄每段距離,最後從這些紀錄中找出最短路徑;另一種方法,是每走到一個圓環或路口,就選擇走距離下個路口最短的道路(註:這個方法不一定能找到最短路徑)。
這兩種方法都可以讓你找到從甲地到乙地的路徑,而且以後只要是可以抽象化為「找到甲地到乙地最短路徑」的大問題,都可以用預先設計好的「演算法」來找到答案。
「演算法設計」則是透過建立一套流程來解決問題,有時也能讓電腦幫我們處理流程內容。
運算思維
可以在生活中練習
日常生活中還有數不清的問題,挑戰我們的「解決問題能力」。這些題目未必是數學,也可能是介紹家鄉美食給異地朋友,或是用新學的語言閱讀小說。
面對這些問題,你也可以試著用運算思維來解決──將問題拆解,找出這些小問題共同的規則,將它抽象化,再列出各種可以幫你達到目的的「演算法」。
撰寫程式,其實就是用電腦讀得懂的語言,把運算思維的結論請電腦代為執行呵!