什麼是演算法.pptVIP

  • 5
  • 0
  • 约1.12千字
  • 约 20页
  • 2020-07-21 发布于湖北
  • 举报
演算法 _ 第一章 介紹 1 什麼是演算法? 演算法是解決一個問題的流程 這個流程必須定義得很明確 而且可能會需要一些輸入 並且會產生一些輸出 為什麼要學演算法? 我們有 32 個外觀看起來都一樣的硬幣,其中有一個是劣幣而且其重量與其他 31 個不同(輕或重都可能) 請找出這個劣幣,並且決定它是比真幣輕或是重 唯一能使用的工具是一支天秤 每一次天秤量過的結果包括:左邊這一組硬幣的重量小於、等於、或大於右邊這一組硬幣的重量。 直覺的解法-演算法1.1 直覺的解法-演算法1.1 演算法 1.1 所需要使用的天秤次數跟輸入的硬幣數目成正比 換句話說,如果輸入的硬幣數有 n 個,那麼演算法 1.1 所需要使用的天秤次數跟 n 成正比 聰明人花一星期想出的演算法 聰明人花一星期想出的演算法 聰明人花一星期想出的演算法 聰明人花一星期想出的演算法 學過演算法後設計出的演算法 學過演算法後設計出的演算法 為什麼要學演算法? 演算法 1.1 是沒學過演算法的普通人設計出的 演算法 1.2 則是沒學過演算法的聰明人所絞盡腦汁設計出的 演算法 1.3 則是學過演算法的普通人或聰明人設計出的 不管我們是普通人或聰明人,只要修學過演算法,我們所設計出來的演算法可以比聰明人(但是沒學過演算法)絞盡腦汁後所設計出的演算法還好! 更多必須修學演算法的理由 更多必須修學演算法的理由 圖論證明 n 個頂點的圖裡最多可以找出nn-2 棵生成樹 當 n = 100 時,nn-2 等於 10196! 這個問題只要用貪婪法就可以很簡單地在 n2 的時間複雜度下解決掉 更多必須修學演算法的理由 凸面體 更多必須修學演算法的理由 一般人面對這個問題可能無從著手 如果你修學過演算法就知道這個問題只要用貪婪法就可以在 n log n 的時間複雜度下解決掉。 更多必須修學演算法的理由 看起來很簡單,實際上卻是很難的問題 更多必須修學演算法的理由 NP-完備問題 到目前為止,所有的 NP-完備問題都還找不到任何有效率的演算法! 更多必須修學演算法的理由 0/1打包問題 公司裡有 n 個不同的物品,物品 i 所佔用的體積是 vi 而價值為 pi,大保險櫃的容量則是 C 針對每一項物品,我們只能選擇放入大保險櫃或者不放入大保險櫃 我們的目標是使得大保險櫃中所放置的物品總價值最大,前提是所放置的物品總體積不能超過大保險櫃的容量 C。 更多必須修學演算法的理由 也是一個 NP-完備問題 到目前為止也還找不到任何有效率的演算法 * * 淘汰與搜尋法 所需要使用的天秤次數跟 log2 n 成正比

文档评论(0)

1亿VIP精品文档

相关文档