《零基礎學演算法》 第1章 基礎演算法思想

2021-05-22 06:49:20 字數 832 閱讀 8889

程式設計 = 資料結構 + 演算法 + 程式語言

需要滿足兩個條件:

一般有三個要求:

綜上,有幾點需要注意:

例項:求階乘、數制轉換

一般具有以下特徵的問題可以使用分治法來求解:

分治與遞迴演算法經常同時應用在演算法設計之中:分解--求解--合併

貪婪演算法總是做出在當前看來是最好的選擇。不從整體最優考慮,選擇區域性最優選擇。大多情況下,貪婪演算法即使不能得到整體最優解,但其最終結果卻非常近似最優解。貪婪演算法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪演算法一般可以快速得到滿意得解,因為它省去了為找最優解要窮盡所有可能而必須耗費大量的時間。所以貪婪演算法不要回溯。

使用貪婪演算法時,通常採用自頂向下的方法來解,每一步都使用最貪婪的選擇,使原問題變為乙個相似的、規模更小的問題。

貪婪演算法基本思路:從問題的某乙個初始解出發逐步逼近給定的目標,以盡可能快的求得更好的解。當到達演算法中的某一步不能再繼續前進時,該演算法停止,給出近似解。

該演算法存在以下問題:

例如,在超市購物,收銀員找補零錢時,為使零錢紙幣張數最少,不考慮找零錢的所有方案,而是從最大面值的幣種開始,按遞減的順序考慮各幣種,先盡量用大面值的幣種,當不足大面值幣種的金額時才考慮下一種較小面值的幣種。

例如,在棋手思考下一步該走**時,首先試想下一步棋的位置,計算對手的應對,再計算自己的應對,若對手的應對於我不利,則取消下一步的設想,然後重新計算下一步棋的位置。這是一步試探法。再如,迷宮求解。

電腦程式在與人的互動中經常會出現一些不能建立數學模型,也不能使用前面介紹的各種演算法求解的問題。這是,課使用計算機來模擬生成日常生活中的相關資料,來分析相應的資料。例如,可用計算機模擬跑硬幣得到正反面概率的情況。

《零基礎學演算法 第3版》PDF 免費

pdf電子書 零基礎學演算法 第3版 出版社 機械工業出版社 出版年 2014年 pdf書籍頁數 492 格式 pdf電子書 isbn 9787111461883 內容簡介 零基礎學演算法 第3版 分為上 下兩篇,共10章,上篇用5章的篇幅介紹了演算法和資料結構的基礎知識,包括基礎演算法思想 簡單資...

零基礎學Python

零基礎學python 1 1 python是一門指令碼語言 2 python的優勢 1 語法和結構比較簡單,易入門 2 能夠跨平台使用 3 應用範圍廣,設計到作業系統 3d動畫 web 雲計算,企業應用等多方面。3 idle 是乙個python shell,類似於windows的cmd視窗 4 pr...

零基礎學C C

零基礎學c c 零基礎學c c 199 孿生素數 題目描述 在素數的大家庭中,大小相差為2的兩個素數稱之為一對 孿生素數 如3和5 17和19等。請你程式設計統計出不大於自然數n的素數中,孿生素數的對數。輸入一行乙個正整數n 1 n 10000 輸出若干行,每行2個整數,之間用乙個空格隔開,從小到大...