跳轉到內容

計算機科學基礎/演算法設計

來自華夏公益教科書,開放的書籍,開放的世界

演算法設計

[編輯 | 編輯原始碼]

演算法設計 是一種建立解決問題的數學過程的特定方法。在解決魔方(任何尺寸)時,可以看出演算法設計的一個有力例子。在解決魔方(任何尺寸)時,瞭解逐步的指令或演算法來達到有效的解決方案非常重要。這就是演算法設計發揮作用的地方。有一些設計可以將看似複雜的解決方案分解,透過解決每一層(首先,中間和最後以及顏色)來解決問題。

請點選連結,瞭解如何解決 3X3魔方 的最後一層。

演算法設計方法

[編輯 | 編輯原始碼]

自頂向下

[編輯 | 編輯原始碼]

自頂向下的設計方法是從檢查整個問題開始的,或者可以認為是從先看大圖/整體開始。一旦你評估了主要問題,然後你將問題分解成更小的元件或部分。

自頂向下方法的下一部分是開始測試。最初,由於我們專注於更大的圖景,所以會有一些部分缺失。在某些情況下,問題的某些部分沒有被解決,這時會使用存根或佔位符作為臨時佔位符。

從某種意義上來說,自頂向下方法就像一個將軍指揮他的軍隊。將軍會分解任務,為每個士兵分配一個特定的任務來完成,而這個任務反過來又對整個任務的至關重要部分做出貢獻。

自底向上

[編輯 | 編輯原始碼]

自底向上的演算法設計方法從問題的最小單元或部分開始。這種方法首先解決最小的單元,然後逐步構建下一層或解決方案。使用這種方法可以確保最小的單元已經成功測試,因此,當你開始解決或實現下一個子解決方案時,由於前面的層已經成功工作,所以它會工作。

一個例子是造汽車。汽車的每個部件都經過設計、製造和測試。知道較小的部件能夠正常工作,這些部件就會在裝配線上逐步新增。隨著部件的新增,你就會知道,由於對每個部件進行了徹底的測試,所以較小的部件能夠正常工作。最終,當你完成這個過程時,最終的結果是一輛能夠正常工作的汽車。

演算法設計:構建模組

[編輯 | 編輯原始碼]

演算法設計中涉及一些基本的邏輯結構和操作。構建模組對於決定我們希望如何操作工作單元是必要的。每個演算法的基礎都是步驟或操作塊。這些步驟/操作塊可以像將兩個數字加在一起一樣簡單。但是,這些操作塊也可以很複雜,例如,在一個數字列表中找到最大值。

邏輯結構對於將步驟組織成一個過程/解決方案至關重要。以下四個基本的邏輯結構描述了用於建立演算法的塊型別

  • 過程/函式呼叫 - 一個例子是 Scratch 中的一個單一模組
  • 序列 - 為了建立一個序列,你需要一個模組堆疊
  • 備選方案 - 使用 if-then-else 模組來指示特定問題的備選解決方案
  • 迭代 - 使用“重複”、“for”和“永遠”模組來構建迴圈以解決問題

大多數語言都有用於基本操作和邏輯結構的程式設計結構。為了理解程式設計結構,你必須首先了解 人工語言。根據維基百科的定義,人工語言是“一種其語音學、語法和詞彙是為人類或類人生物交流而有意識地設計的語言,而不是自然形成的”。類似地,程式設計結構 是“為了向機器(特別是計算機)傳達指令而設計的”。

華夏公益教科書