HackMD 完整版請點我

其他演算法與常見解題技巧

演算法(Algorithm)是在有限的步驟之內,提供明確的法則,求出問題正確答案的程序。它可以是一種方法、法則或者程序,讓資料可按照預先設計的方式處理。

暴力法(Brute Force)

暴力法(Brute Force)是一種基本的解題策略,透過系統地嘗試所有可能的解決方案來找出答案。它的原理很簡單:列舉所有可能性,不斷嘗試,直到找到符合要求的解。

這種方法的優點是實現簡單,且保證能找到存在的解。但它的效率通常較低,特別是在處理大規模問題時,因此暴力法常用於簡單問題或作為其他算法的比較基準。

以下補充幾個以前教過,但其實都跟暴力法有關的演算法。

補充:【舌尖上的演算法】Day6 – Brute Force - Selection Sort
補充:【舌尖上的演算法】Day7 – Brute Force - Bubble Sort
補充:【舌尖上的演算法】Day8 – Brute Force - Knapsack
補充:【舌尖上的演算法】Day9 – Brute Force - DFS & BFS

貪婪演算法(Greedy Method)

image

貪婪演算法(Greedy Method)是一種在每一步都做出當前最佳選擇的問題解決策略。它通過在每個決策點選擇局部最優解,希望最終能達到整體最優解。

貪婪演算法的主要特點:

  1. 在每一步選擇當前看起來最好的選項
  2. 一旦做出選擇,就不會回頭重新考慮
  3. 期望這些局部最優選擇能導致整體最優解

這種演算法通常簡單高效,適用於某些特定問題,然而它並不總是能得到最佳解決方案。貪婪演算法的優勢在於易於實現和速度快,但可能會錯過需要前瞻性思考或回溯的更優解。

Leetcode

回溯法(Backtracking)

image

回溯法(Backtracking)也是暴力法的一種,特別適用於需要窮舉所有可能性的情況。

回溯法的基本思想是:

  1. 從一個可能的起點開始。
  2. 按照問題要求,逐步向前探索。
  3. 如果發現當前路徑無法得到有效解,就退回到上一步。
  4. 在上一步選擇一個不同的方向繼續探索。
  5. 重複這個過程,直到找到解或者探索完所有可能性。

回溯法的優點是能夠系統地搜索所有可能性,缺點是在最壞情況下可能需要很長的運行時間。這種方法像是在迷宮中探路:如果碰到死路,就退回到上一個路口,選擇另一條路繼續前進。

Leetcode