是不是演算法
㈠ 什麼叫演算法
演算法,對應的英文單詞是algorithm,這是一個很古老的概念,最早來自數學領域,是用於解決某一類問題的公式和思想。
計算機科學領域的演算法,本質是一系列程序指令,用於解答特定的運算和邏輯問題。一般運用時間復雜度和空間復雜度來衡量演算法好壞。
演算法的應用領域多種多樣:
運算,例如計算兩個數的最大公約數。
查找,例如使用谷歌、網路搜索某一關鍵詞得出數據和信息。
排序:例如瀏覽電商網站時,商品按價格從低到高進行排序。
最優決策:例如游戲中讓AI角色找到迷宮的最佳路線。
參考資料:魏夢舒(@程序員小灰),《漫畫演算法:小灰的演算法之旅》:電子工業出版社,2019-05
㈡ 關於編程,最重要的是不是演算法想問一下要行成一個好的演算法應該怎麼樣訓練
演算法跟數據結構都很重要 關於演算法的書強烈建議看《演算法導論》機械工業出版社的 恩 要學好演算法啊 平時多練啊
㈢ 是不是任何一個演算法都有明確的結果
應該是這樣的,演算法的特性裡面有一點就是
"
輸出項(Output)
一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
"
㈣ 操作系統是不是演算法是否滿足演算法的有窮性原則
內存管理演算法,硬體調度演算法,進程管理,都是演算法。
os也有結束:關機。
㈤ 什麼是演算法(不要從計算機的角度回答)
演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。演算法(Algorithm)是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。
㈥ 什麼是演算法
一、什麼是演算法
演算法是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。演算法常常含有重復的步驟和一些比較或邏輯判斷。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法的時間復雜度是指演算法需要消耗的時間資源。一般來說,計算機演算法是問題規模n 的函數f(n),演算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度(Asymptotic Time Complexity)。時間復雜度用「O(數量級)」來表示,稱為「階」。常見的時間復雜度有: O(1)常數階;O(log2n)對數階;O(n)線性階;O(n2)平方階。
演算法的空間復雜度是指演算法需要消耗的空間資源。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
[font class="Apple-style-span" style="font-weight: bold;" id="bks_etfhxykd"]演算法 Algorithm [/font]
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種演算法。前者是推理實現的演算法,後者是操作實現的演算法。
一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。
演算法的設計要求
1)正確性(Correctness)
有4個層次:
A.程序不含語法錯誤;
B.程序對幾組輸入數據能夠得出滿足規格要求的結果;
C.程序對精心選擇的、典型的、苛刻的、帶有刁難性的幾組輸入數據能夠得出滿足規格要求的結果;
D.程序對一切合法的輸入數據都能產生滿足規格要求的結果。
2)可讀性(Readability)
演算法的第一目的是為了閱讀和交流;
可讀性有助於對演算法的理解;
可讀性有助於對演算法的調試和修改。
3)高效率與低存儲量
處理速度快;存儲容量小
時間和空間是矛盾的、實際問題的求解往往是求得時間和空間的統一、折中。
演算法的描述 演算法的描述方式(常用的)
演算法描述 自然語言
流程圖 特定的表示演算法的圖形符號
偽語言 包括程序設計語言的三大基本結構及自然語言的一種語言
類語言 類似高級語言的語言,例如,類PASCAL、類C語言。
演算法的評價 演算法評價的標准:時間復雜度和空間復雜度。
1)時間復雜度 指在計算機上運行該演算法所花費的時間。用「O(數量級)」來表示,稱為「階」。
常見的時間復雜度有: O(1)常數階;O(logn)對數階;O(n)線性階;O(n^2)平方階
2)空間復雜度 指演算法在計算機上運行所佔用的存儲空間。度量同時間復雜度。
時間復雜度舉例
(a) X:=X+1 ; O(1)
(b) FOR I:=1 TO n DO
X:= X+1; O(n)
(c) FOR I:= 1 TO n DO
FOR J:= 1 TO n DO
X:= X+1; O(n^2)
「演算法」一詞最早來自公元 9世紀 波斯數學家比阿勒·霍瓦里松的一本影響深遠的著作《代數對話錄》。20世紀的 英國 數學家 圖靈 提出了著名的圖靈論點,並抽象出了一台機器,這台機器被我們稱之為 圖靈機 。圖靈的思想對演算法的發展起到了重要的作用。
演算法是 計算機 處理信息的本質,因為 計算機程序 本質上是一個演算法,告訴計算機確切的步驟來執行一個指定的任務,如計算職工的薪水或列印學生的成績單。 一般地,當演算法在處理信息時,數據會從輸入設備讀取,寫入輸出設備,可能保存起來以供以後使用。
這是演算法的一個簡單的例子。
我們有一串隨機數列。我們的目的是找到這個數列中最大的數。如果將數列中的每一個數字看成是一顆豆子的大小 可以將下面的演算法形象地稱為「撿豆子」:
首先將第一顆豆子(數列中的第一個數字)放入口袋中。
從第二顆豆子開始檢查,直到最後一顆豆子。如果正在檢查的豆子比口袋中的還大,則將它撿起放入口袋中,同時丟掉原先的豆子。 最後口袋中的豆子就是所有的豆子中最大的一顆。
下面是一個形式演算法,用近似於 編程語言 的 偽代碼 表示
給定:一個數列「list",以及數列的長度"length(list)" largest = list[1] for counter = 2 to length(list): if list[counter] > largest: largest = list[counter] print largest
符號說明:
= 用於表示賦值。即:右邊的值被賦予給左邊的變數。
List[counter] 用於表示數列中的第 counter 項。例如:如果 counter 的值是5,那麼 List[counter] 表示數列中的第5項。
<= 用於表示「小於或等於」。
㈦ 把a,b帶入求方程解是不是演算法
不是,演算法是一類問題的統一的計算方法,演算法不能等同於某個題目的解法
㈧ for循環是不是演算法
不能說是演算法吧 演算法不是一種結構 也許某個演算法中只有一個簡單的for語句 但是不能將for語句說成演算法 因為演算法是用來解決某個問題的 而for結構本身不能解決問題 但是大家通常所說的、學習的是能夠很好的解決問題的巧妙演算法 所以 在大多數時候 你如果只是簡單的用for循環羅列 大家不會認為你選擇了一個演算法
比如說 你要在一大堆數里找出某一個數 我可以通過一個個找 最後找出所需要的 這是演算法 但是因為效率比較低 耗得時間久 所以說它是比較菜的演算法 也可以將數裡面排好序 用折半查找法或者其他查找的方法 這樣能夠完成一樣的要求 但是我消耗的時間卻可能只有上一個的十分之一 甚至百分之一 千分之一 所以我說它是比較好的演算法
演算法到底是好還是壞 通常通過2個方面來考慮 時間 空間 而影響演算法選擇的就是使用次數和問題規模
時間是運行演算法所需要的時間,空間主要是指你使用演算法所需要的內存,這2個都是與問題規模相關的
使用次數和問題規模是怎麼影響演算法選擇的。 舉個例子,你還是從一堆數裡面尋找一個數,你如果只需要在裡面尋找數尋找一兩次,你就不應該使用我上面的方法, 因為你將它們排好序的時間足夠你完成所需要的操作了,使用上面演算法非但沒減少時間,反倒增加了時間。
再比如說 如果那堆數只有幾個數,那你也不需要使用上面的那些演算法,你會發現當數不多的時候,不會減少計算時間,或者減少很少的時間。
一般來說 我們考慮演算法只有當覺得我們不滿意常規演算法帶來的時間空間損耗 或者常規演算法不能實現我們的要求的時候,我們才考慮使用某種演算法來優化或者實現
演算法不只是一個函數或者其它什麼的,它代表的就是一種思路,也不是你掌握了這個演算法的一個應用 你就算掌握這個演算法 所以學習演算法 要理解透徹演算法的思路 然後才能按照實際情況選擇應用演算法。舉也許二段代碼 完全不相同 但是說它們卻用的是同一種演算法 就是因為它們用的是同一種思路來解決了這個問題
㈨ 演算法是不是一種計算方法
思路解析: 演算法是解決某類問題的一系列步驟或程序,只要按照這些步驟執行,都能使問題得到解決.A選項顯然是不正確的;B選項錯在「判斷一個數是否是一個素數的方法」僅是一個解決某一問題的演算法,但不是演算法的定義;C選項錯在並不是所有的程序能夠解決問題. 答案: D
㈩ 數學建模中,模型是不是演算法
模型是對現實世界中具體問題(現象)的數學描述,可能通過一個或多個數學公式來描述一它。
演算法則是解決這個問題(模型)的具體的過程。
打個比方:解決某個問題的數學描述是S=1+2+3+...+n,這個為模型
演算法:1.依次計算1+2+3+...+n
2.使用公式n*(n+1)/2計算
3.使用首尾相加*2 + 中間數方式計算