Transcript 下載/瀏覽
計算機概論-CH5 演算法 演算法的發現 發現演算法 發展一個程式需要兩個主要動作:發現 其內涵的基本演算法及將演算法表示成 程式。 發現演算法是軟體發展過程中具有挑戰 性的一步 找到演算法就找到解決問題的方法 了解演算法如何被發現,就等於了解問 題解答的過程 解決問題的藝術 設計演算法的步驟與發覺一般問題解法 的過程有密切的關聯 數學家G. Polya所定義解決問題的階段: 解決問題的藝術 G. Polya所強調解決問題階段並不是代表 解決問題一定要遵守這個步驟順序 Polya的四個階段並不一定得依序完成 事實上許多成功的解題者往往是在完全了解 問題之前(階段1)就已開始找出解答的策略 (階段2) ,因此如果此一策略在階段3或階段 4失敗時,解題者便可以了解到與此問題有 關的細節,並據以找到更佳的解法 找孩子年齡問題 根據線索一得到之可能解 根據線索二得到之可能解 根據線索三 得到之解 說明 在此例,我們直到企圖去完成我們的計畫以 解決這個問題(階段3)時才完成了解這個問 題(階段1) 。 若我們堅持先完成階段1再進行下一階段, 則我們將無法知道三個小孩的年齡 Getting a Foot in the Door 許多解決問題的方法似乎有一個共同點, 簡稱一腳已在門內(Getting a Foot in the Door ) 所謂一腳在門內並不是代表已經知道如何做, 而是我們已獲得一些重要線索並可使用一些求 解答方法推展這些已知的資訊因而獲得完全的 解答 Getting a Foot in the Door 這些求解答方法有 反推法:由結果(輸出)反推找出答案;例如 摺紙鳥問題 逐步細分法(stepwise refinement):逐步 細分法是一種由上而下方法論(top-down methodology),步驟是由一般到特定。 由下而上方法論(Bottom-up methodology) : 是從特定到一般。先解決簡單或細微之處再 向上尋找答案