Python - 演算法類



演算法是由明確的步驟組成的,這些步驟應該透過處理零個或多個輸入來給我們一個明確定義的輸出。這導致了在設計和編寫演算法方面的許多方法。人們已經觀察到,大多數演算法可以分為以下幾類。

貪心演算法

貪心演算法試圖找到區域性最優解,這最終可能導致全域性最優解。但是,通常貪心演算法並不能提供全域性最優解。

所以貪心演算法在當時尋找簡單的解決方案,而不考慮它如何影響未來的步驟。這類似於人類如何解決問題,而不考慮所提供輸入的完整細節。

大多數網路演算法都使用貪心方法。這裡列出其中一些:

  • 旅行商問題

  • Prim最小生成樹演算法

  • Kruskal最小生成樹演算法

  • Dijkstra最小生成樹演算法

分治法

這類演算法包括將給定問題分解成較小的子問題,然後獨立地解決每個子問題。當問題無法進一步細分時,我們開始合併每個子問題的解決方案,以得出較大問題的解決方案。

分治演算法的重要例子包括:

  • 歸併排序

  • 快速排序

  • Kruskal最小生成樹演算法

  • 二分查詢

動態規劃

動態規劃包括將較大的問題分解成較小的子問題,但與分治法不同的是,它不涉及獨立地解決每個子問題。相反,較小子問題的結果會被記住並用於類似的或重疊的子問題。

通常,這些演算法用於最佳化。在解決手頭的子問題之前,動態演算法將嘗試檢查先前已解決的子問題的的結果。動態演算法的目的是對問題進行整體最佳化,而不是區域性最佳化。

動態規劃演算法的重要例子包括:

  • 斐波那契數列

  • 揹包問題

  • 漢諾塔

廣告
© . All rights reserved.