演算法導論英文
㈠ 什麼是演算法,都什麼,舉個例子,謝謝
根據我個人的理解:
演算法就是解決問題的具體的方法和步驟,所以具有以下性質:
1、有窮性: 一個演算法必須保證執行有限步之後結束(如果步驟無限,問題就無法解決)
2、確切性:步驟必須明確,說清楚做什麼。
3、輸入:即解決問題前我們所掌握的條件。
4、輸出:輸出即我們需要得到的答案。
5、可行性:邏輯不能錯誤,步驟必須有限,必須得到結果。
演算法通俗的講:就是解決問題的方法和步驟。在計算機發明之前便已經存在。只不過在計算機發明後,其應用變得更為廣泛。通過簡單的演算法,利用電腦的計算速度,可以讓問題變得簡單。
譬如:計算 1×2×3×4。。。。×999999999×1000000000
如果人為計算,可想而知,即使你用N卡車的紙張都很難計算出來,即使算出來了,也很難保證其准確性。
如果用VB演算法:
dim a as integer
a=1
For i =1 to 1000000000
a=a*i
next i
input a
就這樣,簡單的演算法,通過計算機強大的計算能力,問題就解決了。
關於這段演算法的解釋:i每乘一次,其數值都會增大1,一直乘到1000000000,這樣,就將從1到1000000000的每個數都乘了。而且每乘一次,就將結束賦給a,這樣,a就代表了前面的相乘的所有結果,一直乘到1000000000。最後得到的a,就是我們想要的。
〓以下是網路復制過來的,如果你有足夠耐心,可以參考一下。
演算法(Algorithm)是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。
一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。
計算機科學家尼克勞斯-沃思曾著過一本著名的書《數據結構十演算法= 程序》,可見演算法在計算機科學界與計算機應用界的地位。
[編輯本段]演算法的復雜度
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
時間復雜度
演算法的時間復雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n 的函數f(n),演算法的時間復雜度也因此記做
T(n)=Ο(f(n))
因此,問題的規模n 越大,演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。
空間復雜度
演算法的空間復雜度是指演算法需要消耗的空間資源。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
詳見網路詞條"演算法復雜度"
[編輯本段]演算法設計與分析的基本方法
1.遞推法
遞推法是利用問題本身所具有的一種遞推關系求問題解的一種方法。它把問題分成若干步,找出相鄰幾步的關系,從而達到目的,此方法稱為遞推法。
2.遞歸
遞歸指的是一個過程:函數不斷引用自身,直到引用的對象已知
3.窮舉搜索法
窮舉搜索法是對可能是解的眾多候選解按某種順序進行逐一枚舉和檢驗,並從眾找出那些符合要求的候選解作為問題的解。
4.貪婪法
貪婪法是一種不追求最優解,只希望得到較為滿意解的方法。貪婪法一般可以快速得到滿意的解,因為它省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪婪法常以當前情況為基礎作最優選擇,而不考慮各種可能的整體情況,所以貪婪法不要回溯。
5.分治法
把一個復雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合並。
6.動態規劃法
動態規劃是一種在數學和計算機科學中使用的,用於求解包含重疊子問題的最優化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中通過子問題的解求出原問題的解。動態規劃的思想是多種演算法的基礎,被廣泛應用於計算機科學和工程領域。
7.迭代法
迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。
[編輯本段]演算法分類
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。
[編輯本段]舉例
經典的演算法有很多,如:"歐幾里德演算法"。
[編輯本段]演算法經典專著
目前市面上有許多論述演算法的書籍,其中最著名的便是《計算機程序設計藝術》(The Art Of Computer Programming) 以及《演算法導論》(Introction To Algorithms)。
[編輯本段]演算法的歷史
「演算法」即演演算法的大陸中文名稱出自《周髀算經》;而英文名稱Algorithm 來自於9世紀波斯數學家al-Khwarizmi,因為al-Khwarizmi在數學上提出了演算法這個概念。「演算法」原為"algorism",意思是阿拉伯數字的運演算法則,在18世紀演變為"algorithm"。歐幾里得演算法被人們認為是史上第一個演算法。 第一次編寫程序是Ada Byron於1842年為巴貝奇分析機編寫求解解伯努利方程的程序,因此Ada Byron被大多數人認為是世界上第一位程序員。因為查爾斯·巴貝奇(Charles Babbage)未能完成他的巴貝奇分析機,這個演算法未能在巴貝奇分析機上執行。 因為"well-defined procere"缺少數學上精確的定義,19世紀和20世紀早期的數學家、邏輯學家在定義演算法上出現了困難。20世紀的英國數學家圖靈提出了著名的圖靈論題,並提出一種假想的計算機的抽象模型,這個模型被稱為圖靈機。圖靈機的出現解決了演算法定義的難題,圖靈的思想對演算法的發展起到了重要作用的。
㈡ 親們演算法導論代碼英文注釋怎麼辦
英文注釋基本上和代碼上面的李洞滑中文解釋意思一樣,這本書只需要一點離散數學的知識,書的最後面有相關的哪臘知識,要求不是很高也不難,這本書很經典,樓主好好攻顫握讀吧,目前只有第二版有中文的,第三版沒有中文翻譯。如果不想看演算法導論,可以看看嚴蔚敏的數據結構,但是教條重了點。但是演算法導論還有個好處就是這本書的思考題很有價值,提升功力很不錯,樓主自己權衡吧。
㈢ 排列組合中的公式P(n,k) C(n,k) (都是n上k下)用英語怎麼寫怎麼讀
等於5×4×3(一共乘了三個數,等於上邊數字的數量),然後再除以3×2×1(上邊數的階乘)。 P是排列,跟順序有關,C是組合跟順序無關,所以還要除以可能出現的重復次數。 拓展資料: 1、排列的定義:從n個不同元素中,任取m(m≤n,m與n均為自然數,下同)個元素按照一定的順序排成一列,叫做從n個不同姿讓元素中取出m個亂冊晌元素的一個排列;從n個不同元素中取出m(m≤n)個元素的所有排列的個數,叫做從n個不同元素中取出m個元素的排列數,用符號 A(n,m)表示。 此外規定0!=1(n!表示n(n-1)(n-2)...1,也就是6!=6x5x4x3x2x1 2、組合的定義:從嘩鋒n個不同元素中,任取m(m≤n)個元素並成一組,叫做從n個不同元素中取出m個元素的一個組合;從n個不同元素中取出m(m≤n)個元素的所有組合的個數,叫做從n個不同元素中取出m個元素的組合數。用符號 C(n,m) 表示。計算公式:;C(n,m)=C(n,n-m)。(n≥m)
㈣ 演算法導論的英文名字是
《Introction to Algorithms》
㈤ 演算法導論是看英文版還是中文版
建議讀中文的。
分析:
1.《演算法導論》是一本可謂「面面俱到」的書,其中對演算法的證明佔了很大的比重,這在一般的演算法書中並不多見,也是它嚴謹性的體現。中英文在理解上的區別也就在於如何引出這個演算法、演算法為什麼正確上。但是這些證明雖然有重要意義,但是在實用價值上一般比不上演算法本身。我自己在學習演算法的時候都是先了解演算法思想,再了解演算法執行過程,再記住代碼,然後做題,最後再來回顧導引和證明,即先知其然,再知其所以然。不能光知其然,那樣無法掌握思想,思想才是精髓;而一上來就直奔證明,又缺乏學習效率。(也可能這只是我個人的特點)就演算法執行過程本身,中英文都一樣,而且由於偽代碼本身並無區別,所以先讀中文,以掌握演算法。
2.當參加國際比賽的時候,題目都是用英文描述;當對演算法的研究再上一個層次的時候,國內的譯材已經不能夠滿足學習需要了。要想進步,達到高層次的領域,實現「出色」和「領先」,就一定要大量研讀外國文獻。這要求英語必須要好。
綜上,我的建議是:讀中文版《演算法導論》,掌握演算法,再看解釋,理解它,才能更好地運用。學好英語,為達到更高的層次做准備。《演算法導論》內容非常豐富,應該讀好幾遍,到時候再看英文的也不遲。
㈥ 演算法導論這類書有必要看英文版嗎
書籍推薦看原版。舉個例子:第二版16-4,英文原版「If there is no such slot, assign task aj to the latestof the as yet unfilled slots.」,中文翻譯「如果不存在這樣的槽,則將任務aj賦予一個還未被占的最近的槽。」首先,latest應該是「最後的」,中文翻譯直接把意思變成相反的了,不能理解。其次,中文翻譯「槽」、「賦予」等等也不算準確。譯可能會出錯、造成歧義。閱讀原文的能力會越練越好,最終提高閱讀效率,有利無害。全文:Consider the following algorithm for the problem from Section 16.5 of schelingunit-time tasks with deadlines and penalties. Let all n time slots be initially empty,where time slot i is the unit-length slot of time that finishes at time i. We considerthe tasks in order of monotonically decreasing penalty. When considering task aj ,if there exists a time slot at or before aj 』s deadline dj that is still empty, assign ajto the latest such slot, filling it. If there is no such slot, assign task aj to the latest
of the as yet unfilled slots.但是中國的翻譯版就可能將其中的一些詞的意思更改,從而導致有些知識跟原著的不一樣,會導致對知識的理解不一樣,更會影響學習者對知識的理解與運用,但是看中國翻譯版也有好處,好處是節省學習者理解的時間,從而節省一定的時間,去應用知識與定理。但看中國版的之前一定要了解一下這個版本的口碑和了解一下其中的內容是否和原版有太多的差別,如果有,建議大家換一本別的。其實看中國版和原版都無所謂,重要的是你踏踏實實的去看去寫代碼才是正道。強調一點Taocp我認為應該2個版混著看,因為太難懂了。
㈦ 計算機科學的「兩本聖經」是什麼
科曼的《演算法導論》和高德納的《計算機程序設計藝術》被稱為計算機科學的兩本經典著作,被業界戲稱為「兩本聖經」
科曼的《演算法導論》這本書深入淺出,全面地介紹了計算機演算法。對每一個演算法的分析既易於理解又十分有趣,並保持了數學嚴謹性。涵蓋的內容有:演算法在計算中的作用,概率分析和隨機演算法的介紹。
《演算法導論》書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似演算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計演算法,以及對貪心演算法元素的討論。
高德納的《計算機程序設計藝術》這本書結合大量數學知識,分析不同應用領域中的各種演算法,研究演算法的復雜性,即演算法的時間、空間效率,探討各種適用演算法等,其理論和實踐價值得到了全世界計算機工作者的公認。
(7)演算法導論英文擴展閱讀
《演算法導論》自第一版出版以來,已經成為世界范圍內廣泛使用的大學教材和專業人譽宴迅員的標准參考手冊。本書全面論述了演算法的內容,從一定深度上涵蓋了演算法的諸多方面,同時其講授和分析方法又兼顧了各個層次讀者的接受能力。
《演算法導論》所有演算法都是用英文和偽碼描述,使具備初步編程經驗的人也可讀懂。全書講解通俗易懂,且不失深度和數學上的嚴謹性。第二版增加了新的章節,如演算法作用、概率分析與隨機演算法、線性編程等,幾乎對第一版的各個部分都慶此作了大量修訂。
《計算機程序設計藝術》書中引入的許多術語、得到的許多結論都變成了計算機領域的標准術語和被廣泛引用的結果。另外,作者對有關領域的科學發展史也有深入研究,因此本書介紹眾多研究成果的同時,也對其歷史淵源和發展過程做了很好的介紹,這種特色在全球科學著作中是不多見的。
參考資料網路--計算機科學
網路--計祥慧算機程序設計藝術
網路--演算法導論
㈧ 演算法導論是看英文版還是中文版
建議讀中文的。分析:
1、《演算法導論》是一本可謂面面俱到的書,其中對演算法的證明佔了很大的比重,這在一般的演算法書中並不多見,也是悄局它嚴謹性啟運睜的體現。中英文在理解上的區別也就在於如何引出這個演算法、演算法為什麼正確上。但是這些證明雖然有重要意義,但是在實用價值上一般比不上演算法本身。
2、當參加國際比賽的時候,題目都是用英文描述。當對演算法的研究再上一個層次的時候,國內的譯材悄歲已經不能夠滿足學習需要了。要想進步,達到高層次的領域,實現出色和領先,就一定要大量研讀外國文獻。這要求英語必須要好。綜上,我的建議是:讀中文版《演算法導論》,掌握演算法,再看解釋,理解它,才能更好地運用。
㈨ 計算機專業,英語書籍推薦
我猜你是想看一些計算機方面的英文經典教材。
《The art of computer programming》,作者是Donald.E.Knuth,這明液本書被譽為「計算機領域激橘物的荷馬史詩」
《演算法導論》,這本書被譽為「計算機演算法聖經」
《Data struture&Algorithm Analysis in C(second edition)》這本書被世界500多所大學選為教材
希望對你有幫助伍模