當前位置:首頁 » 操作系統 » 演算法設計技巧分析

演算法設計技巧分析

發布時間: 2022-12-29 11:44:53

『壹』 《演算法設計技巧與分析》pdf下載在線閱讀,求百度網盤雲資源

《演算法設計技巧與分析》([沙特]M. H. Alsuwaiyel)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:

提取碼:47oo

書名:演算法設計技巧與分析

作者:[沙特]M. H. Alsuwaiyel

譯者:吳偉昶

豆瓣評分:7.5

出版社:電子工業出版社

出版年份:2004-8

頁數:318

內容簡介:

本書是國際著名演算法專家李德財教授主編的系列叢書「Lecture Notes Series on Computing」中的一本。本書涵蓋了絕大多數演算法設計中的一般技術,在表達每一種技術時,闡述它的應用背景,注意用與其他技術比較的方法說明它的特徵,並提供大量相應實際問題的例子。本書同時也強調了對每一種演算法的詳細的復雜性分析。全書分七部分19章,從演算法設計和演算法分析的基本概念和方法入手,先後介紹了遞歸技術、分治、動態規劃、貪心演算法、圖的遍歷等技術,對NP完全問題進行了基本但清楚的討論。對概率演算法、近似演算法和計算幾何這些近年來發展迅猛的領域也用一定的篇幅講述了基本內容。書中每章後都附有大量的練習題,有利於讀者對書中內容的理解和應用。

本書結構簡明,內容豐富,適合於作為計算機學科以及相關學科演算法課程的教材和參考書,尤其適宜於學過數據結構和離散數學課程之後的演算法課教材。同時也可作為從事演算法研究的一本好的入門書。

『貳』 請教高人 遞歸演算法編寫思路技巧

一個子程序(過程或函數)的定義中又直接或間接地調用該子程序本身,稱為遞歸。遞歸是一種非常有用的程序設計方法。用遞歸演算法編寫的程序結構清晰,具有很好的可讀性。遞歸演算法的基本思想是:把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。
利用遞歸演算法解題,首先要對問題的以下三個方面進行分析:
一、決定問題規模的參數。需要用遞歸演算法解決的問題,其規模通常都是比較大的,在問題中決定規模大小(或問題復雜程度)的量有哪些?把它們找出來。
二、問題的邊界條件及邊界值。在什麼情況下可以直接得出問題的解?這就是問題的邊界條件及邊界值。
三、解決問題的通式。把規模大的、較難解決的問題變成規模較小、易解決的同一問題,需要通過哪些步驟或等式來實現?這是解決遞歸問題的難點。把這些步驟或等式確定下來。
把以上三個方面分析好之後,就可以在子程序中定義遞歸調用。其一般格式為:
if 邊界條件 1 成立 then
賦予邊界值 1
【 elseif 邊界條件 2 成立 then
賦予邊界值 2
┇ 】
else
調用解決問題的通式
endif
例 1 : 計算勒讓德多項式的值

x 、 n 由鍵盤輸入。
分析: 當 n = 0 或 n = 1 時,多項式的值都可以直接求出來,只是當 n > 1 時,才使問題變得復雜,決定問題復雜程度的參數是 n 。根據題目提供的已知條件,我們也很容易發現,問題的邊界條件及邊界值有兩個,分別是:當 n = 0 時 P n (x) = 1 和當 n = 1 時 P n (x) = x 。解決問題的通式是:
P n (x) = ((2n - 1)P n - 1 (x) - (n - 1)P n - 2 (x)) / n 。
接下來按照上面介紹的一般格式定義遞歸子程序。
function Pnx(n as integer)
if n = 0 then
Pnx = 1
elseif n = 1 then
Pnx = x
else
Pnx = ((2*n - 1)*Pnx(n - 1) - (n - 1)*Pnx(n - 2)) / n
endif
end function
例 2 : Hanoi 塔問題:傳說印度教的主神梵天創造世界時,在印度北部佛教聖地貝拿勒斯聖廟里,安放了一塊黃銅板,板上插著三根寶石針,在其中一根寶石針上,自下而上地放著由大到小的 64 個金盤。這就是所謂的梵塔( Hanoi ),如圖。梵天要求僧侶們堅持不渝地按下面的規則把 64 個盤子移到另一根針上:

(1) 一次只能移一個盤子;
(2) 盤子只許在三根針上存放;
(3) 永遠不許大盤壓小盤。
梵天宣稱,當把他創造世界之時所安放的 64 個盤子全部移到另一根針上時,世界將在一聲霹靂聲中毀滅。那時,他的虔誠的信徒都可以升天。
要求設計一個程序輸出盤子的移動過程。
分析: 為了使問題更具有普遍性,設共有 n 個金盤,並且將金盤由小到大依次編號為 1 , 2 ,…, n 。要把放在 s(source) 針上的 n 個金盤移到目的針 o(objective) 上,當只有一個金盤,即 n = 1 時,問題是比較簡單的,只要將編號為 1 的金盤從 s 針上直接移至 o 針上即可。可定義過程 move(s,1,o) 來實現。只是當 n>1 時,才使問題變得復雜。決定問題規模的參數是金盤的個數 n ;問題的邊界條件及邊界值是:當 n = 1 時, move(s,1,o) 。
當金盤不止一個時,可以把最上面的 n - 1 個金盤看作一個整體。這樣 n 個金盤就分成了兩個部分:上面 n - 1 個金盤和最下面的編號為 n 的金盤。移動金盤的問題就可以分成下面三個子問題(三個步驟):
(1) 藉助 o 針,將 n - 1 個金盤(依照上述法則)從 s 針移至 i(indirect) 針上;
(2) 將編號為 n 的金盤直接從 s 針移至 o 針上;
(3) 藉助 s 針,將 i 針上的 n - 1 個金盤(依照上述法則)移至 o 針上。如圖

其中第二步只移動一個金盤,很容易解決。第一、第三步雖然不能直接解決,但我們已經把移動 n 個金盤的問題變成了移動 n - 1 個金盤的問題,問題的規模變小了。如果再把第一、第三步分別分成類似的三個子問題,移動 n - 1 個金盤的問題還可以變成移動 n - 2 個金盤的問題,同樣可變成移動 n - 3 ,…, 1 個金盤的問題,從而將整個問題加以解決。
這三個步驟就是解決問題的通式,可以以過程的形式把它們定義下來:
hanoi(n - 1,s,o,i)
move(s,n,o)
hanoi(n - 1,i,s,o)
參考程序如下:
declare sub hanoi(n,s,i,o)
declare sub move(s,n,o)
input "How many disks?",n
s = 1
i = 2
o = 3
call hanoi(n,s,i,o)
end
sub hanoi(n,s,i,o)
rem 遞歸子程序
if n = 1 then
call move(s,1,o)
else
call hanoi(n - 1,s,o,i)
call move(s,n,o)
call hanoi(n - 1,i,s,o)
endif
end sub
sub move(s,n,o)
print "move disk";n;
print "from";s;"to";o
end sub

『叄』 演算法設計與分析課程總結怎麼寫、急急急!!!!!!

一、演算法分析的基本思路
二、演算法設計的解決方案
三、對過程的綜合總結

『肆』 《演算法分析與設計》課程講什麼內容

《演算法分析與設計》課程是理論性與應用性並重的專業課程。本課程以演算法設計策略為知識單元,系統地介紹計算機演算法的設計方法和分析技巧。課程教學主要內容包括:第一章,演算法概述;第二章,遞歸與分治策略;第三章,動態規劃;第四章,貪心演算法;第五章,回溯法;第六章,分支限界法。通過介紹經典以及實用演算法讓同學掌握演算法設計的基本方法。結合實例分析,讓同學深入理解演算法設計的技巧,以及分析演算法的能力。

『伍』 演算法的常用設計方法有哪些

演算法設計是一件非常困難的工作,經常採用的演算法設計技術主要有迭代法、窮舉搜索法、遞推法、貪婪法、回溯法、分治法、動態規劃法等等。
另外,為了更簡潔的形式設計和藐視演算法,在演算法設計時又常常採用遞歸技術,用遞歸描述演算法。

『陸』 演算法設計技巧與分析(沙特 M.H.Alsuwaiye l著) 電子工業出版社 課後答案

我也想啊 O(∩_∩)O

熱點內容
加密loadrunner 發布:2025-05-10 17:08:46 瀏覽:352
ftp默認使用埠是8080 發布:2025-05-10 17:04:28 瀏覽:273
安卓美團我的評價在哪裡 發布:2025-05-10 17:03:55 瀏覽:215
銀行推薦演算法 發布:2025-05-10 16:57:21 瀏覽:643
2014年二級c語言真題 發布:2025-05-10 16:56:25 瀏覽:181
絕地求生進不去顯示伺服器已滿怎麼辦 發布:2025-05-10 16:56:21 瀏覽:91
存儲系統安裝工程師 發布:2025-05-10 16:53:38 瀏覽:710
php搜索分詞 發布:2025-05-10 16:53:29 瀏覽:546
8位加密 發布:2025-05-10 16:51:01 瀏覽:651
免費nvr伺服器搭建 發布:2025-05-10 16:45:20 瀏覽:847