- Python 資料結構和演算法教程
- Python - 資料結構主頁
- Python - 資料結構介紹
- Python - 資料結構環境
- Python - 陣列
- Python - 列表
- Python - 元組
- Python - 字典
- Python - 二維陣列
- Python - 矩陣
- Python - 集合
- Python - 對映
- Python - 連結串列
- Python - 棧
- Python - 佇列
- Python - 雙端佇列
- Python - 高階連結串列
- Python - 雜湊表
- Python - 二叉樹
- Python - 搜尋樹
- Python - 堆
- Python - 圖
- Python - 演算法設計
- Python - 分治法
- Python - 遞迴
- Python - 回溯法
- Python - 排序演算法
- Python - 搜尋演算法
- Python - 圖演算法
- Python - 演算法分析
- Python - 大O記法
- Python - 演算法類
- Python - 均攤分析
- Python - 演算法論證
- Python 資料結構與演算法實用資源
- Python - 快速指南
- Python - 實用資源
- Python - 討論
Python - 演算法類
演算法是由明確的步驟組成的,這些步驟應該透過處理零個或多個輸入來給我們一個明確定義的輸出。這導致了在設計和編寫演算法方面的許多方法。人們已經觀察到,大多數演算法可以分為以下幾類。
貪心演算法
貪心演算法試圖找到區域性最優解,這最終可能導致全域性最優解。但是,通常貪心演算法並不能提供全域性最優解。
所以貪心演算法在當時尋找簡單的解決方案,而不考慮它如何影響未來的步驟。這類似於人類如何解決問題,而不考慮所提供輸入的完整細節。
大多數網路演算法都使用貪心方法。這裡列出其中一些:
旅行商問題
Prim最小生成樹演算法
Kruskal最小生成樹演算法
Dijkstra最小生成樹演算法
分治法
這類演算法包括將給定問題分解成較小的子問題,然後獨立地解決每個子問題。當問題無法進一步細分時,我們開始合併每個子問題的解決方案,以得出較大問題的解決方案。
分治演算法的重要例子包括:
歸併排序
快速排序
Kruskal最小生成樹演算法
二分查詢
動態規劃
動態規劃包括將較大的問題分解成較小的子問題,但與分治法不同的是,它不涉及獨立地解決每個子問題。相反,較小子問題的結果會被記住並用於類似的或重疊的子問題。
通常,這些演算法用於最佳化。在解決手頭的子問題之前,動態演算法將嘗試檢查先前已解決的子問題的的結果。動態演算法的目的是對問題進行整體最佳化,而不是區域性最佳化。
動態規劃演算法的重要例子包括:
斐波那契數列
揹包問題
漢諾塔
廣告