Markdown 翻譯專家指南#
您是一位 Markdown 翻譯專家。在翻譯過程中,您需要特別注意保持所有 Markdown 語法和標籤的完整性,並且不改變 HTML 標籤的功能,以確保翻譯內容不會影響任何語法或標籤的呈現。請遵循以下規則進行翻譯:
-
識別並翻譯文本內容:只識別並翻譯 Markdown 中的純文本內容,包括標題、段落和列表項中的文本。
-
保留標籤和屬性:在遇到 HTML 標籤(例如,
-
特殊語法處理:對於 Markdown 特定的語法(例如鏈接、圖像標籤),只翻譯描述性文本部分(例如 alt 文本),不改變鏈接或語法結構。
-
保持格式不變:確保所有 Markdown 格式(例如粗體、斜體、代碼塊)在翻譯過程中保持不變。
-
您的任務是確保翻譯內容既準確又不破壞原始 Markdown 結構和 HTML 標籤的功能。請在翻譯過程中仔細檢查,以確保正確呈現語法和標籤。
-
您只能返回翻譯的文本,不能返回其他內容。
重要提示:只返回翻譯的文本,不要返回其他內容。
將以下文本翻譯為繁體中文:
動態規劃是一個重要的算法範式,它將一個問題分解為一系列更小的子問題,並通過存儲子問題的解來避免重複計算,從而大幅提升時間效率。
動態規劃問題特性#
子問題分解是一種通用的算法思路,在分治,動態規劃,回溯中的側重點不同。
- 分治算法遞歸地將問題劃分為多個相互獨立的子問題,直至最小子問題,並在回溯中合併子問題的解,最終得到元問題的解。
- 動態規劃也對問題進行遞歸分解,但與分治算法的主要區別是,動態規劃中的子問題是相互依賴的,在分解過程中會出現許多重疊子問題。
- 回溯算法在嘗試和回退中窮舉所有可能的解,並通過剪枝避免不必要的搜索分之。原問題的解由一系列決策步驟構成,我們可以將每個決策步驟之前的子序列看作一個子問題。
動態規劃常用來求解最優化問題,它們不僅包含重疊子問題,還具有另外兩大特性:最優子結構,無後效性 - 最優子結構的定義:原問題的最優解是從子問題的最優解構建得來。
- 無後效性:給定一個確定的狀態,它的未來發展只與當前狀態有關,而與過去經歷的所有狀態無關。
動態規劃解題思路#
考慮以下兩個問題:
- 如何判斷一個問題是不是動態規劃問題?
- 求解動態規劃問題該從何處入手,完整步驟是什麼?
問題判斷#
如果一個問題包含重疊子問題,最優子結構,並滿足無後效性,那麼它通常適合用動態規劃求解。
通常我們會放寬條件,先觀察問題是否適合用回溯解決。適合用回溯解決的問題通常滿足 "決策樹模型",這種問題可以使用樹形結構來描述,其中每一個節點代表一個決策,每一條路徑代表一個決策序列。
換句話說,如果問題包含明確的決策概念,並且解是通過一系列決策產生的,那麼它就滿足決策樹模型,通常可以使用回溯來解決。
在此基礎上,動態規劃問題還有一些判斷的 "加分項":
- 問題包含最大(小)或最多(小)等最優化描述
- 問題的狀態能使用一個列表,多維矩陣或樹來表示,並且一個狀態與其周圍的狀態存在遞推關係。
相應的也存在一些 "減分項": - 問題的目標是找出所有可能的解決方案,而不是找出最優解
- 問題描述中有明顯的排列組合的特徵,需要返回具體的多個方案。
問題求解步驟#
動態規劃的解題流程會因問題的性質和難度而有所不同,但通常遵循以下步驟:描述決策,定義狀態,建立 dp 表,推導狀態轉移方程,確定邊界條件等。