當前位置:首頁 » 操作系統 » 演算法設計下載

演算法設計下載

發布時間: 2022-06-12 06:52:14

演算法設計

第5章:常用演算法設計(軟體設計篇)免費下載

鏈接:https://pan..com/s/1EsbJAHii_AXsOL6JuSnRHw

提取碼:vwj2

《演算法設計》是2007年清華大學出版社出版發行的圖書,作者是Jon Kleinberg / Éva Tardos。

② 演算法設計-幫幫忙

這個估計要用文件輸入
否則太累了
--我們必須盡量優化程序才能達到題目的要求。顯然n實在是太大了,所以我們不但不可能忍受O(n2)的復雜度,甚至連n前面的系數過大都會造成超時。為了盡量減小時間復雜度,我們只能依靠自動機的理論。
自動機理論
一個DFA(確定性有限自動機)是一個五元組<∑, U, s, T, φ>,其中∑是字元集U 是一個有限的狀態集合, s 是 U 的一個元素表示初始狀態, T 是 U的一個子集,表示終止狀態and φ : U × ∑ → U 是轉移函數。
開始時自動機在初始狀態s,每步它讀入一個字元c,然後根據state=φ(state,c)進行狀態的轉移。如果當字元串結束時它達到了終止狀態,那麼就說它接受了字元串。
NFA(非確定性自動機)與DFA的主要區別就是,NFA從一個狀態按照一個字元轉移到的狀態可能有多個。因此NFA需要使用一個狀態集合來表示當前可能處在的狀態。
把自動機用圖來表示的話,一般用結點表示狀態,而結點之間有標有某個字元的有向邊,表示可以從邊的起點通過這個字元轉移到邊的終點。
此外NFA還可以包含標有ε的邊,這種邊表示不需要任何字元就可以直接進行狀態的轉移。
容易想到,如果我們建立了一個只接受符合正則表達式的自動機,就可以通過它來較快的判斷哪些位置是可匹配的。
具體應用
比較常見的字元串匹配自動機大多都是DFA。但是由於有+,*,把正則表達式直接轉變成DFA是非常困難的。因此我們只能先把它轉化成NFA。
先看一下一般的轉換規則:
如果正則表達式是一個字元,那麼對應的NFA是:
p0-a->p1
如果正則表達式是A+B的形式,那麼只要把它們的起始狀態和終止狀態合並就可以:
p0-a->p1
p0-b->p1
如果正則表達式是AB的形式,那麼只要把A和B對應的自動機首尾相接:
p0-a->p1-b->p2
如果正則表達式是A*的形式,那麼就需要按下面的圖來進行處理:
p0-a->p0
p0->p1
通過上面的步驟可以得出:NFA的狀態數不會超過正則表達式長度。

NFA中的狀態轉移
在NFA中進行狀態轉移比DFA要困難一些。我們可以定義兩個函數,一個叫做epsilon-closure,用來計算一組NFA狀態通過epsilon邊能夠到達的NFA狀態集合。另外一個move用來在NFA上進行狀態的轉移。
設當前的狀態集合是now,那麼狀態轉移的過程就是:
new = {}
for every state s in now do
new = new ∪ {t | (s,t) = c}
new = epsilon_closure(new)
其中的(s,t)=c表示從s狀態經過一個字元c可以轉化到t狀態。因為這個語句需要的集合總數也不會太多,所以可以通過預先計算出它們來加快速度。預處理後這個過程的復雜度是O(m2),而系數是比較小的。
但是由於在NFA中,我們必須把狀態的集合作為一個真正的狀態,每次狀態轉移都是對這個集合的處理。這樣轉移一次的復雜度是O(m2),這是不可忍受的(最大的數據需要大約2分鍾才能出解)。
既然NFA速度過慢,我們自然想要把它轉化為DFA。因為DFA中的狀態轉移是O(1)的。可是並沒有一個多項式復雜度的方法可以把NFA轉換成DFA。一般介紹的NFA轉換到DFA的方法都是通過類似BFS的方法來把NFA中所有可能出現的狀態集合對應成DFA的一個狀態。
這種轉換在本題中顯然是不可行的,因為NFA的結點數最多是500,而轉化成的DFA則可能有多達2500個狀態,即使實際有許多狀態不能達到,也是無論如何不可以忍受的。
看來把NFA轉換成DFA是行不通的。但是我們還是從NFA轉DFA的過程中受到了一些啟發:NFA之所以速度慢,是因為我們在進行狀態轉移的時候可能進行許多重復操作:比如從{1,2}沿一個字元1轉移後是{2,3},以後我們還可能遇到相同的情況,而這時我們還會用O(m2)的時間去進行狀態轉移。這是一種很嚴重的浪費。因此我們每進行一次狀態轉移,就把這個狀態轉移的情況放到hash表中,以後使用的時候就可以查找了。這相當於只把我們需要的一部分子集轉移成DFA,雖然一般情況下並不能降低時間復雜度,但是在實際應用中確實很有效。(特別是對於沒有*和括弧的自動機,這樣做可以保證線形的時間復雜度)
演算法回顧和細節
我們重新來看一下演算法的框架:
根據正則表達式建立NFA
now = start
while not eof do begin
read(c);
if 曾經進行過now,c的轉移 then 利用以前的結果
else 進行狀態轉移並記錄結果
if 終止狀態 in now then 輸出當前位置
end
建立NFA有各種方法,由於NFA並不會很大,所以我們可以使用遞歸的方法來實現。為了盡量減小系數,我們使用位壓縮的方式來實現集合,並採用較為簡化的hash函數(比如把一個集合位壓縮後的一系列整數加起來取對220的余數),並在輸入和輸出的時候通過緩沖區來加快速度。這樣就基本可以達到題目的時間要求。
但是注意到字元串可能有10M,而產生的NFA的狀態集合最多也可能有10M個,而每個集合都需要100到200位元組的存儲空間,大大超出了允許的空間范圍。因此我們需要對hash表的規模加以嚴格限制。如果規模過大就不得不放棄存儲狀態的想法,犧牲一定的時間來換取空間。

③ 《演算法設計與分析習題解答與學習指導第2版》pdf下載在線閱讀全文,求百度網盤雲資源

《演算法設計與分析習題解答與學習指導第2版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/179vMdBZkff4hFnlBxtr5BQ

?pwd=u8lo 提取碼:u8lo
簡介:北京大學教學團隊力作,凝多年教學積淀和成果,MOOC演算法課程配套用書。普通高等教育「十一五」*規劃教材,高等學校計算機教材建設立項項目。演算法設計與分析習題解答與學習指導第2版由屈婉玲著

④ 求《演算法設計與分析習題解答與學習指導第2版》全文免費下載百度網盤資源,謝謝~

《演算法設計與分析習題解答與學習指導第2版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/179vMdBZkff4hFnlBxtr5BQ

?pwd=u8lo 提取碼:u8lo
簡介:北京大學教學團隊力作,凝多年教學積淀和成果,MOOC演算法課程配套用書。普通高等教育「十一五」*規劃教材,高等學校計算機教材建設立項項目。演算法設計與分析習題解答與學習指導第2版由屈婉玲著

⑤ 《計算機演算法設計與分析第5版習題及答案》pdf下載在線閱讀全文,求百度網盤雲資源

《計算機演算法設計與分析第5版習題及答案》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1oxH2d3SdEUN0rx6LJRNBoA?pwd=8i4l 提取碼:8i4l
簡介:本書是與「十二五」普通高等教育本科國家級規劃教材《計算機演算法設計與分析(第5版)》配套的輔助教材和國家精品課程教材,分別對主教材中的演算法分析題和演算法實現題給出了解答或解題思路提示。為了提高學生靈活運用演算法設計策略解決實際問題的能力,本書還將主教材中的許多習題改造成演算法實現題,要求學生設計出求解演算法並上機實現。本書教學資料包含各章演算法實現題、測試數據和答案,可在華信教育資源網免費注冊下載。本書內容豐富,理論聯系實際,可作為高等學校計算機科學與技術、軟體工程、信息安全、信息與計算科學等專業本科生和研究生學習計算機演算法設計的輔助教材,也是工程技術人員和自學者的參考書。

⑥ 求發《Algorithm Design 》免費電子書網盤下載地址

《AlgorithmDesign》網路網盤免費下載

鏈接: https://pan..com/s/1QkzeyDjAzuBa5pIxtjEacA

提取碼:vvbn

作者:Jon Kleinberg/Éva Tardos
出版社:Addison-Wesley
出版年:2005-3-26
頁數:864

簡介

演算法設計通過觀察激發演算法的現實問題來介紹演算法。本書教學生一系列的設計和分析技術的問題,出現在計算應用程序。本文鼓勵了對演算法設計過程的理解,並欣賞演算法在計算機科學的更廣泛領域的作用。

作者Jon Kleinberg最近在《紐約時報》上因其在互聯網時代的統計分析研究而被引用。

⑦ 數據結構與演算法設計 王曉東 要去哪裡下載

給那個網站http://ds.fzu.e.cn/fine/index.htm 不是下載的書籍 ,但是相信對你有用的。

⑧ 求(美)Jon Kleinberg著、張立昂譯的《演算法設計》中文版pdf,不勝感激

找到這個

⑨ 求《計算機演算法設計與分析第5版習題及答案》全文免費下載百度網盤資源,謝謝~

《計算機演算法設計與分析第5版習題及答案》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1oxH2d3SdEUN0rx6LJRNBoA

?pwd=8i4l 提取碼:8i4l
簡介:本書是與「十二五」普通高等教育本科國家級規劃教材《計算機演算法設計與分析(第5版)》配套的輔助教材和國家精品課程教材,分別對主教材中的演算法分析題和演算法實現題給出了解答或解題思路提示。為了提高學生靈活運用演算法設計策略解決實際問題的能力,本書還將主教材中的許多習題改造成演算法實現題,要求學生設計出求解演算法並上機實現。本書教學資料包含各章演算法實現題、測試數據和答案,可在華信教育資源網免費注冊下載。本書內容豐富,理論聯系實際,可作為高等學校計算機科學與技術、軟體工程、信息安全、信息與計算科學等專業本科生和研究生學習計算機演算法設計的輔助教材,也是工程技術人員和自學者的參考書。

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

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

資源鏈接:

鏈接:

提取碼:47oo

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

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

譯者:吳偉昶

豆瓣評分:7.5

出版社:電子工業出版社

出版年份:2004-8

頁數:318

內容簡介:

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

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

熱點內容
python解析json文件 發布:2024-10-18 11:29:34 瀏覽:310
編譯程序的生成程序 發布:2024-10-18 11:29:27 瀏覽:403
軌跡處理演算法 發布:2024-10-18 11:22:25 瀏覽:782
支付密碼怎麼破解 發布:2024-10-18 11:09:19 瀏覽:144
線性鏈表c語言 發布:2024-10-18 11:09:17 瀏覽:784
淘寶賣的腳本可靠嗎 發布:2024-10-18 10:54:04 瀏覽:119
數質數演算法 發布:2024-10-18 10:53:26 瀏覽:281
安卓11有的地方怎麼那麼卡 發布:2024-10-18 10:53:21 瀏覽:478
蘋果怎麼設置程序加密 發布:2024-10-18 10:52:41 瀏覽:101
idea重啟自動編譯 發布:2024-10-18 10:52:41 瀏覽:448