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樓:匿名使用者
給個圖 我好演示
中常見的段落修飾有哪幾項,Word中常見的段落修飾有哪幾項?
1 段落格式設定,我們先來說說對齊方式,選中文字,圖中,分別對應的是左對齊,居中,右對齊,兩端對齊,分散對齊,標題我們就選擇居中對齊 2 特殊格式有2種,首行縮排和懸掛縮排,首行縮排我們一般用的比較多,而懸掛縮排是跟首行縮排相反的,我們為這個段落設定首行縮排2個字元吧 3 首行縮排2字元就是第一行相...
道路工程中常見的灌木有哪些,道路工程中常見的灌木有
重慶問問我網路科技 綠籬 指的是密植於路邊及各種用地邊界處的樹叢帶。綠籬因其隔離作用和裝飾美化作用,被廣泛應用於公共綠地和庭院綠化中。綠籬可分為高籬 中籬 矮籬 綠牆等,多採用常綠樹種。綠籬也可採用花灌木 帶刺灌木 觀果灌木等,做成花籬 果籬 刺籬。現介紹幾種常用的綠籬樹種 小葉黃楊黃楊科黃楊屬,常...
績效管理中常見的誤區有哪些,績效考核中常見的問題有哪些
波士商學教育 在激烈的市場競爭環境中,人力資源管理越來越受企業的重視,其中績效管理是人力資源中的關鍵一環。但是很多企業在績效管理中,效果並不是那麼理想。是什麼原因造成的呢?一 注重績效考核結果而忽略過程 許多企業只關注績效考核的結果。卻忽視了績效實現的過程。殊不知績效的實現是通過有效的過程來保障的,...