運算思維

閱讀時間約 4 分鐘

運算思維由2006年3月,美國卡內基·梅隆大學計算機科學系主任周以真(Jeannette M. Wing)教授因提出並倡導「運算思維」而享譽計算機科學界。


運算思維分成四個步驟

演算思維

演算思維

拆解

將一個大問題拆解成許多小問題,各個擊破解決,當小問題解決了大問題也就解決了。

模式識別

將複雜的問題分解後,分析問題之間的相關性和相似性,尋找通用的解決方法的問題。

歸納與抽象化

從解決問題的過程中過濾不必要的特徵,提煉出共同屬性,建立通用的問題解法或規則

演算法

是將通用的問題解法或規則轉化為一組明確的步驟和指示,以實現問題的解決。


演算法的定義

「演算法(algorithm)」在韋氏辭典的定義是「在有限步驟內解決數學問題的程序

演算法在生活中無處不在,並且在許多日常活動中起到關鍵作用。

生活中常見演算法應用

  1. 交通流控制: 基於即時交通狀況、道路容量以及交叉口的車流量等因素,動態調整燈號的時序,最大程度地減少交通擁堵,提高流通效率。
  2. 社交媒體推薦系統: 分析用戶的行為和興趣,以推薦相關的內容、朋友或產品。
  3. 網上購物推薦: 分析用戶的購買歷史和喜好,提供個性化的商品推薦。
  4. 路線規劃: 計算最短、最快或最節能的路線。
  5. 語音辨識: 解析語音信號,轉換為文字或執行特定的操作。
  6. 醫學影像分析: 辨識和分析影像,例如在檢測腫瘤或其他疾病方面。
  7. 金融風險管理: 評估和管理風險,例如信用評分和投資組合管理。
  8. 天氣預報: 處理大量氣象資料,以生成準確的天氣預報。

演算法的基本特性

演算法具有一些基本特性,這些特性有助於定義和評估演算法的有效性。

以下是演算法的一些主要特性:

  1. 明確性(Definiteness): 演算法的每一步都必須明確而清晰,沒有歧義。每一個步驟都應該可以被執行且理解,而不會引起混淆。
  2. 有限性(Finiteness): 演算法必須在有限的步驟內終止。它不能是無窮迴圈或無窮的執行過程,而是在有限時間內給出結果。
  3. 輸入(Input): 演算法接受零個或多個輸入。輸入是演算法操作的起點,它可以包含任何需要被處理的數據。
  4. 輸出(Output): 演算法生成一個明確的輸出,這是在輸入基礎上經過處理後得到的結果。輸出可以是一個值一組值其他形式的信息
  5. 有效性(Effectiveness): 又稱可行性。能夠實現演算法中描述的操作。

簡單的演算法範例

使用 Python 語言實現。這是一個基本的排序演算法——氣泡排序法(Bubble Sort)

def bubble_sort(arr):
n = len(arr)

# 外層循環控制需要比較的輪數
for i in range(n):
# 內層循環控制每一輪比較的次數
for j in range(0, n - i - 1):
# 如果前一個元素大於後一個元素,則交換它們
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]

# 範例數組
example_array = [64, 34, 25, 12, 22, 11, 90]

# 使用氣泡排序法
bubble_sort(example_array)

# 打印排序後的結果
print("排序後的數組:", example_array)
#輸出
# 排序後的數組: [11, 12, 22, 25, 34, 64, 90]​

在生活當中,佈滿了各式各樣的演算法,讓我們掌握這種概念,不管是在工作上或生活上都將無往不利。

像整理家務是一樣,也可以套用運算思維的概念,比如設計一個最佳的家務排程,根據每個區域的清潔頻率和任務的複雜度,來安排打掃的流程,只是大多時候,我們都會根據以往的經驗來行事,整理一下做事步驟就可以達成事半功倍。


參考書籍



51會員
106內容數
Python程式設計師,不是在學習就是在學習的路上
留言0
查看全部
發表第一個留言支持創作者!
螃蟹_crab的沙龍 的其他內容
28歲才又重新讀大學(回顧文)
閱讀時間約 2 分鐘
[螃蟹雜食記]食主題[豆腐]篇
閱讀時間約 4 分鐘