1樓:奇倫_射手
主要是有三種、、
第一種是最直接的貪心dijkstra演算法、、可以利用堆資料結構進行優化、、缺點就是不能求有負權的最短路與判斷負環、、
第二種是bellman-ford演算法、、根據鬆弛操作的性質是可以來判斷負環的、、時間複雜度是o(nm)的、、
第三種是spfa演算法、、把他單獨拿出來作為一種演算法並不是非常好的、、他的實質應該是上面的bellman-ford演算法的佇列優化時間複雜度更低、o(ke)、k的值約等於2、、
2樓:匿名使用者
演算法 algorithm
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程式,都是在實施某種演算法。
前者是推理實現的演算法,後者是操作實現的演算法。
一個演算法應該具有以下五個重要的特徵:
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項。
<= 用於表示「小於或等於」。
演算法的分類
(一)基本演算法 :
1.列舉
2.搜尋:
深度優先搜尋
廣度優先搜尋
啟發式搜尋
遺傳演算法
(二)資料結構的演算法
(三)數論與代數演算法
(四)計算幾何的演算法:求凸包
(五)圖論 演算法:
1.哈夫曼編碼
2.樹的遍歷
3.最短路徑 演算法
4.最小生成樹 演算法
5.最小樹形圖
6.網路流 演算法
7.匹配演算法
(六)動態規劃
(七)其他:
1.數值分析
2.加密演算法
3.排序 演算法
4.檢索演算法
5.隨機化演算法
圖論中常見的最短路徑演算法有幾種?都是什麼
3樓:匿名使用者
主要是有三種、、
第一種是最直接的貪心dijkstra演算法、、可以利用堆資料結構進行優化、、缺點就是不能求有負權的最短路與判斷負環、、
第二種是bellman-ford演算法、、根據鬆弛操作的性質是可以來判斷負環的、、時間複雜度是o(nm)的、、
第三種是spfa演算法、、把他單獨拿出來作為一種演算法並不是非常好的、、他的實質應該是上面的bellman-ford演算法的佇列優化時間複雜度更低、o(ke)、k的值約等於2、、
求最短路徑演算法有哪幾種?
4樓:冰冷的岩漿
dijkstra演算法
抄,a*演算法和d*演算法
dijkstra演算法是典型最短路演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。dijkstra演算法能得出最短路徑的最優解,但由於它遍歷計算的節點很多,所以效率低。
dijkstra演算法是很有代表性的最短路演算法,在很多專業課程中都作為基本內容有詳細的介紹,如資料結構,圖論,運籌學等等。
dijkstra一般的表述通常有兩種方式,一種用永久和臨時標號方式,一種是用open, close表方式,drew為了和下面要介紹的 a* 演算法和 d* 演算法表述一致,這裡均採用open,close表的方式
5樓:匿名使用者
請問這個是什麼語言啊
求最短路徑???
php啊?具體點
語言,編寫要求
6樓:豔鼠逗白貓
flord,dijkstra,spfa這些都是常用的。。。
最短路徑演算法 20
7樓:牛得天下
dijkstra演算法,a*演算法和d*演算法
8樓:匿名使用者
給個圖 我好演示
管理中常見的PDCA是什麼意思,管理中常見的PDCA是什麼意思?
雨說情感 pdca是由英語單詞plan 計劃 do 執行 check 檢查 和act 修正 的第一個字母組成的,pdca是按照這樣的順序進行質量管理的迴圈。pdca迴圈也指休哈特 shewhart 迴圈或戴明環。pdca迴圈最早是由waltershewhart在1942年提出,之後在20世紀50年代...
裝修中常見的問題有哪些,裝修過程中常見問題都有哪些
夏候彬華 這要分自己裝還是包給裝修公司。1 自己找工人裝 自己比較辛苦,以後出現問題不好找責任人,材料都要自己親自轉市場作比較,要經常到工地監督,以免工人浪費材料,如果你找的都是散工就更麻煩了,時不時跟你要點伙食費什麼的.2 包給裝修公司 自己比較輕鬆,相對也比較有保障,但要付出鈔票。裝修公司一般都...
生活中常見的食品化學現象
小李談心 甜味劑甜味兒是普遍受人們歡迎的一種基本味感,自然想到糖類,最具有代表性的天然甜味兒物質,除了糖及其衍生物外,還有許多非糖的天然化合物,天然化合物的衍生物和合成化合物都具有甜味兒,有些已成為正在使用的或潛在的甜味兒劑。甜度 表示甜味兒高低的指標 一般來講,濃度越大,甜度越高,多數糖的甜度隨著...