計算機算法設(shè)計與第王曉東電子教案第章2_第1頁
計算機算法設(shè)計與第王曉東電子教案第章2_第2頁
計算機算法設(shè)計與第王曉東電子教案第章2_第3頁
計算機算法設(shè)計與第王曉東電子教案第章2_第4頁
計算機算法設(shè)計與第王曉東電子教案第章2_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章隨機化算法1學(xué)習(xí)要點理解產(chǎn)生偽隨機數(shù)的算法掌握數(shù)值隨機化算法的設(shè)計思想掌握蒙特卡羅算法的設(shè)計思想掌握拉斯維加斯算法的設(shè)計思想掌握舍伍德算法的設(shè)計思想2隨機數(shù)隨機數(shù)在隨機化算法設(shè)計中扮演著十分重要的角色。在現(xiàn)實計算機上無法產(chǎn)生真正的隨機數(shù),因此在隨機化算法中使用的隨機數(shù)都是一定程度上隨機的,即偽隨機數(shù)。線性同余法是產(chǎn)生偽隨機數(shù)的最常用的方法。由線性同余法產(chǎn)生的隨機序列a0,a1,…,an滿足其中b0,c0,dm。d稱為該隨機序列的種子。如何選取該方法中的常數(shù)b、c和m直接關(guān)系到所產(chǎn)生的隨機序列的隨機性能。這是隨機性理論研究的內(nèi)容,已超出本書討論的范圍。從直觀上看,m應(yīng)取得充分大,因此可取m為機器大數(shù),另外應(yīng)取gcd(m,b)=1,因此可取b為一素數(shù)。3數(shù)值隨機化算法

4用隨機投點法計算值

設(shè)有一半徑為r的圓及其外切四邊形。向該正方形隨機地投擲n個點。設(shè)落入圓內(nèi)的點數(shù)為k。由于所投入的點在正方形上均勻分布,因而所投入的點落入圓內(nèi)的概率為。所以當n足夠大時,k與n之比就逼近這一概率。從而doubleDarts(intn){//用隨機投點法計算值

staticRandomNumberdart;intk=0;for(inti=1;i<=n;i++){doublex=dart.fRandom();doubley=dart.fRandom();if((x*x+y*y)<=1)k++;}return4*k/double(n);}5計算定積分設(shè)f(x)是[0,1]上的連續(xù)函數(shù),且0f(x)1。需要計算的積分為,積分I等于圖中的面積G。在圖所示單位正方形內(nèi)均勻地作投點試驗,則隨機點落在曲線下面的概率為假設(shè)向單位正方形內(nèi)隨機地投入n個點(xi,yi)。如果有m個點落入G內(nèi),則隨機點落入G內(nèi)的概率6解非線性方程組求解下面的非線性方程組其中,x1,x2,…,xn是實變量,fi是未知量x1,x2,…,xn的非線性實函數(shù)。要求確定上述方程組在指定求根范圍內(nèi)的一組解

在指定求根區(qū)域D內(nèi),選定一個隨機點x0作為隨機搜索的出發(fā)點。在算法的搜索過程中,假設(shè)第j步隨機搜索得到的隨機搜索點為xj。在第j+1步,計算出下一步的隨機搜索增量xj。從當前點xj依xj得到第j+1步的隨機搜索點。當x<時,取為所求非線性方程組的近似解。否則進行下一步新的隨機搜索過程。7舍伍德(Sherwood)算法設(shè)A是一個確定性算法,當它的輸入實例為x時所需的計算時間記為tA(x)。設(shè)Xn是算法A的輸入規(guī)模為n的實例的全體,則當問題的輸入規(guī)模為n時,算法A所需的平均時間為這顯然不能排除存在x∈Xn使得的可能性。希望獲得一個隨機化算法B,使得對問題的輸入規(guī)模為n的每一個實例均有這就是舍伍德算法設(shè)計的基本思想。當s(n)與tA(n)相比可忽略時,舍伍德算法可獲得很好的平均性能。8舍伍德(Sherwood)算法復(fù)習(xí)學(xué)過的Sherwood算法:(1)線性時間選擇算法(2)快速排序算法有時也會遇到這樣的情況,即所給的確定性算法無法直接改造成舍伍德型算法。此時可借助于隨機預(yù)處理技術(shù),不改變原有的確定性算法,僅對其輸入進行隨機洗牌,同樣可收到舍伍德算法的效果。例如,對于確定性選擇算法,可以用下面的洗牌算法shuffle將數(shù)組a中元素隨機排列,然后用確定性選擇算法求解。這樣做所收到的效果與舍伍德型算法的效果是一樣的。template<classType>voidShuffle(Typea[],intn){//隨機洗牌算法

staticRandomNumberrnd;for(inti=0;i<n;i++){intj=rnd.Random(n-i)+i;Swap(a[i],a[j]);}}9跳躍胳表舍伍島德型躬算法醋的設(shè)氣計思阿想還證可用登于設(shè)滲計高耕效的父數(shù)據(jù)搏結(jié)構(gòu)抵。如果幼用有嚷序鏈模表來咳表示牧一個數(shù)含有n個元姿素的菠有序遮集S,則孟在最農(nóng)壞情炊況下炭,搜堤索S中一退個元須素需環(huán)要(n妨)計算附時間庫。提高跟有序書鏈表叫效率耍的一壁個技釘巧是貿(mào)在有極序鏈仁表的伶部分辮結(jié)點嚴處增稈設(shè)附梁加指噴針以六提高劈燕其搜袖索性重能。攤在增它設(shè)附勺加指末針的體有序惜鏈表工中搜在索一廚個元荒素時戲,可根借助穴于附漠加指雞針跳月過鏈曠表中匪若干船結(jié)點就,加貴快搜產(chǎn)索速兆度。役這種刃增加丟了向其前附昌加指尊針的吃有序領(lǐng)鏈表本稱為跳躍惠表。應(yīng)在閥跳躍驅(qū)表的漸哪些殲結(jié)點翼增加案附加塊指針陡以及擔(dān)在該雪結(jié)點滑處應(yīng)隸增加腎多少創(chuàng)指針月完全咬采用駁隨機頌化方蝕法來勿確定透。這斗使得證跳躍女表可移在O(lo西gn)平均綁時間狐內(nèi)支授持關(guān)沈于有男序集化的搜協(xié)索、窗插入首和刪罩除等畫運算禍。10跳躍飄表在一抓般情請況下潮,給郊定一肌個含闖有n個元斧素的準有序淹鏈表與,可資以將裹它改埋造成奸一個雞完全修跳躍冤表,棵使得版每一勺個k級結(jié)室點含討有k+效1個指膛針,棉分別塌跳過2k-1,2k-螞1-1,…,20-1個中色間結(jié)舍點。蝦第i個k級結(jié)蓬點安宿排在刪跳躍賺表的偵位置i2名k處,i0。這份樣就緩可以啟在時怒間O(lo完gn)內(nèi)完美成集蓋合成墾員的洲搜索耳運算瓣。在怨一個焰完全孩跳躍正表中沖,最擱高級座的結(jié)姿點是lo草gn級結(jié)擠點。完全罰跳躍妥表與件完全州二叉居搜索壟樹的叉情形慚非常柜類似企。它瞎雖然耀可以購有效塌地支陸持成劣員搜僅索運覺算,刻但不板適應(yīng)禁于集愁合動證態(tài)變趟化的盈情況瘡。集臥合元什素的宗插入表和刪削除運鎖算會謊破壞尸完全省跳躍封表原碰有的仆平衡脈狀態(tài)剛,影占響后峽繼元鋤素搜穴索的看效率其。11跳躍帝表為了謙在動版態(tài)變餃化中單維持倒跳躍辱表中妹附加它指針自的平克衡性完,必棒須使母跳躍塵表中k級結(jié)頂點數(shù)愉維持號在總躲結(jié)點精數(shù)的線一定杏比例大范圍病內(nèi)。伸注意有到在瓶一個樓完全雹跳躍域表中礦,50堵%的指扮針是0級指位針;25床%的指蠢針是1級指袍針;…;(1勸00睡/2k+揚1)%的指況針是k級指組針。蛙因此狐,在擱插入疏一個騎元素神時,址以概啄率1/意2引入揮一個0級結(jié)挑點,林以概虜率1/撓4引入埋一個1級結(jié)孝點,…,以窩概率1/錯2k+渡1引入是一個k級結(jié)絡(luò)點。緣瑞另一也方面尚,一何個i級結(jié)哲點指旁向下使一個猛同級色或更拼高級況的結(jié)貫點,屠它所饅跳過罰的結(jié)句點數(shù)怪不再游準確夜地維慈持在2i沙-1。經(jīng)賢過這手樣的屈修改蠅,就濁可以年在插賞入或圍刪除稻一個姓元素副時,俊通過贏對跳章躍表圣的局蝕部修乎改來翠維持外其平賭衡性戲。12跳躍癢表在一請個完劣全跳嘉躍表羞中,甜具有i級指眉針的守結(jié)點液中有茶一半漠同時升具有i+披1級指以針。韻為了擔(dān)維持丟跳躍淡表的暴平衡錯性,哲可以錘事先襖確定斜一個趴實數(shù)0<倍p<徐1,并佛要求界在跳耕躍表拆中維油持在他具有i級指千針的錦結(jié)點滿中同住時具磁有i+英1級指襯針的撈結(jié)點渠所占啞比例乞約為p。為圣此目割的,年在插杯入一戲個新斑結(jié)點斃時,姜先將檢其結(jié)濁點級俗別初彈始化但為0,然宜后用沸隨機刪數(shù)生里成器琴反復(fù)藍地產(chǎn)天生一妙個[0,1]間的沖隨機搬實數(shù)q。如丑果q<浩p,則多使新線結(jié)點戀級別拉增加1,直悄至qp。由孫此產(chǎn)榮生新輝結(jié)點聚級別棟的過妙程可滿知,浪所產(chǎn)須生的透新結(jié)飼點的按級別信為0的概免率為1-肥p,級大別為1的概故率為p(含1-愧p),…,級霉別為i的概膀率為pi(1洞-p啟)。如啟此產(chǎn)爹生的彎新結(jié)繼點的籠級別朋有可偶能是碗一個娃很大撓的數(shù)輸,甚衫至遠思遠超宴過表桿中元澡素的敲個數(shù)盲。為晴了避霞免這采種情穿況,拾用等作為單新結(jié)赤點級擇別的粘上界觸。其貼中n是當廉前跳救躍表柔中結(jié)習(xí)點個左數(shù)。奏當前佳跳躍迎表中錦任一敘結(jié)點仰的級梢別不攻超過13拉斯畫維加販斯(圣La摸s勉Ve著ga孝s張)算法拉斯具維加旨斯算征法的久一個遍顯著席特征撞是它呀所作上的隨得機性司決策北有可放能導(dǎo)笛致算藥法找?guī)貌坏矫栀惖慕馐?。vo孔idob擠st珠in公at祖e(O闖bj超ec秒t療x,幕O箏bj砍ec物t女y){/媽/反復(fù)弄調(diào)用完拉斯浩維加且斯算幣法LV測(x煮,y嶄),直攤到找皂到問驅(qū)題的綱一個怒解ybo土olsu馬cc暮es寺s=輩f(xié)怎al陷se蠅;wh偵il啊e吉(!衣su災(zāi)cc沒es劫s)譽s站uc雄ce陜ss韻=lv(x淘,y守);}設(shè)p(誼x)是對思輸入x調(diào)用池拉斯愁維加薦斯算課法獲輛得問凝題的遲一個作解的莖概率亭。一磨個正遍確的援拉斯聞維加聰斯算符法應(yīng)拍該對序所有愛輸入x均有p(跑x)等>0。設(shè)t(霉x)是算寇法ob先st御in教at洗e找到晝具體串實例x的一及個解廢所需逮的平堡均時轉(zhuǎn)間,s售(x證)和e(京x)分別賺是算蓄法對直于具舌體實盜例x求解灶成功渴或求揪解失晝敗所齡需的姐平均仙時間棄,則熊有:解此座方程但可得開:14n后問熄題對于n后問悠題的滴任何百一個碧解而駱言,內(nèi)每一怒個皇拖后在闊棋盤遵上的飲位置栽無任猶何規(guī)先律,填不具鏡有系歌統(tǒng)性語,而辭更象免是隨敘機放折置的突。由罪此容霞易想險到下糧面的拉斯勺維加邁斯算盡法。在棋譜盤上凍相繼奇的各睛行中健隨機寨地放輪置皇偽后,撈并注屈意使籠新放煤置的屈皇后炸與已盡放置療的皇卵后互柿不攻竄擊,膝直至n個皇潔后均挺已相呈容地選放置肢好,濁或已仆沒有盒下一慢個皇侄后的毯可放宅置位精置時大為止獎。如果巷將上菠述隨左機放命置策年略與覺回溯橋法相押結(jié)合雙,可頭能會裳獲得輔更好弟的效魚果。掏可以懸先在恭棋盤胞的若情干行君中隨哨機地州放置屈皇后抱,然誰后在寸后繼筍行中壯用回源溯法潛繼續(xù)勻放置糾,直膽至找舌到一鳥個解越或宣怖告失鹽敗。棋隨機槽放置缺的皇牽后越泛多,餅后繼螞回溯捏搜索叨所需黑的時抬間就英越少棟,但踩失敗細的概丟率也慨就越役大。stopVegaspset01.0000262.00--262.0050.503933.8847.2380.39120.046513.0010.20222.1115整數(shù)因子躺分解設(shè)n>防1是一螺個整泡數(shù)。靈關(guān)于尖整數(shù)n的因橫子分違解問翼題是沈找出n的如塔下形第式的安唯一誓分解籍式:其中襲,p1<p2<…廣<pk是k個素跟數(shù),m1,m2,…便,mk是k個正逼整數(shù)弊。如果n是一霞個合潮數(shù),怕則n必有垃一個嫌非平輛凡因安子x,1<籠x<邪n,使脊得x可以戰(zhàn)整除n。給定推一個早合數(shù)n,求n的一稻個非叉平凡販因子魔的問巷題稱碰為整頑數(shù)n的因閱子分覺割問偽題。in淚tSp納li熄t(in昌tn){in到tm奏=創(chuàng)fl鉛oo頁r(sq視rt(d戲ou民bl燙e(尿n)攀))管;fo暮r目(in鈴ti=駁2;至i局<=鞋m;麥i壇++矮)if糾(戀n%致i=壤=0原)查re賺tu奇rn角i交;re涂tu良rn培1賺;}事實守上,拉算法sp愁li廈t(龜n)是對莫范圍攏在1~x的所盾有整躬數(shù)進荒行了硬試除白而得妹到范叨圍在1~x2的任始一整臂數(shù)的姿因子瓣分割扔。16Po匹ll農(nóng)ar廁d算柿法在開矩始時摔選取0~n-公1范圍納內(nèi)的妄隨機躁數(shù),濕然后辭遞歸嘆地由產(chǎn)生懲無窮盤序列對于i=廉2k,以兄及2k<j2k+沸1,算醉法計討算出xj-xi與n的最此大公改因子d=gc鋼d(xj-xi,n)。如銅果d是n的非硬平凡顏因子顆,則搬實現(xiàn)炭對n的一原次分徑割,稱算法吸輸出n的因浴子d。vo扔idPo柳ll呢ar團d(in警tn){/課/求整渾數(shù)n因子抬分割玩的拉該斯維殿加斯懇算法Ra羅nd萄om儀Nu星mb劑errn渣d;in宋ti=粉1;in建tx=rn棵d.R秀an價do盲m(惡n)協(xié);邊//隨機贈整數(shù)in輕ty=塌x;in醉tk=酬2;wh鋼il店e服(t昆ru星e)唐{i+繩+;x=撈(x連*x役-1紹)%槽n;曬//in御td=gc付d(y尾-x未,n沖);偷//求n的非劇平凡兵因子if寫(爺(d掌>1真)他&&索(植d<堡n)京)co碗ut<<斜d<副<en談dl;if趨(絲式i=鍛=k濃)寬{y=矛x;k*真=2毯;}}揮}對Pollard算法更深入的分析可知,執(zhí)行算法的while循環(huán)約次后,Pollard算法會輸出n的一個因子p。由于n的最小素因子p,故Pollard算法可在O(n1/4)時間內(nèi)找到n的一個素因子。17蒙特蓮卡羅漂(M抄on衫te此C孔ar確lo尋)算坑法在實貼際應(yīng)承用中均常會逆遇到棵一些鞏問題恒,不鏡論采胞用確閃定性嚴算法份或隨撿機化粉算法雹都無祝法保扮證每暈次都剛能得奸到正也確的凈解答闖。蒙厭特卡姑羅算詞法則韻在一食般情識況下恐可以促保證蔬對問紐奉題的露所有附實例堤都以土高概趴率給略出正抗確解任,但射是通臣常無發(fā)法判丟定一鋪個具閱體解遼是否信正確商。設(shè)p是一坊個實部數(shù),會且1/蕩2<左p<怠1。如吩果一瓜個蒙縱特卡劑羅算果法對黑于問痰題的肺任一險實例汁得到傍正確救解的宏概率楊不小雄于p,則哄稱該沒蒙特肢卡羅銳算法皺是p正確的,雙且稱p-錢1/率2是該劃算法嫩的優(yōu)勢。如果瞧對于厘同一色實例雙,蒙居特卡頃羅算商法不穿會給孩出2個不漸同的臂正確芹解答責(zé),則記稱該惠蒙特列卡羅栗算法厚是一致治的。有些輪蒙特鄙卡羅鑰算法橋除了麥具有陵描述預(yù)問題魚實例竭的輸駁入?yún)⑼鯏?shù)外巨,還轟具有撇描述黎錯誤射解可袍接受施概率策的參辦數(shù)。拉這類授算法主的計影算時性間復(fù)既雜性篩通常概由問蜻題的抵實例號規(guī)模綢以及元錯誤答解可摧接受卵概率夢的函重數(shù)來身描述旋。18蒙特侮卡羅明(M義on眨te或C辱ar采lo踩)算蔥法對于綠一個緩一致浩的p正確的蒙特畏卡羅宋算法寧,要包提高籃獲得穿正確倆解的俗概率突,只占要執(zhí)西行該紐奉算法狼若干己次,剃并選栗擇出單現(xiàn)頻傾次最必高的樸解即稻可。如果芝重復(fù)灰調(diào)用定一個潤一致蹦的(1灶/2適+)正確示的蒙雁特卡裹羅算碰法2m醬-1次,棒得到擇正確后解的網(wǎng)概率川至少俱為1-,其草中,對于墓一個仆解所塵給問群題的占蒙特未卡羅船算法MC腰(x抬),如畏果存構(gòu)在問投題實早例的餐子集X使得版:(1境)當xX時,MC節(jié)(x鑄)返回鈴的解源是正細確的半;(2脆)當xX時,號正確季解是y0,但MC嘗(x礎(chǔ))返回穗的解閑未必公是y0。稱上辛述算返法MC表(x微)是偏y0的算皆法。重復(fù)剖調(diào)用腥一個神一致頓的,p正確葡偏y0蒙特嚴卡羅商算法k次,套可得已到一面?zhèn)€O(烏1-澡(1招-p恭)k)正確攔的蒙全特卡蹈羅算納法,丑且所木得算甚法仍衡是一攀個一鈔致的掏偏y0蒙特佳卡羅袖算法庭。19主元素富問題設(shè)T[屯1:午n]是一謀個含棟有n個元衡素的啊數(shù)組橋。當|{蜻i|蹦T[施i]藝=x廚}|包>n桶/2時,芳稱元膽素x是數(shù)刊組T的主拳元素乳。te轉(zhuǎn)mp綱la鬧te驚<c邁la緣瑞ss旺T腫yp夢e>bo貼olMa遲jo嘆ri界ty(T德yp撞e到*T地,in薯tn){/笛/判定詞主元宜素的泛蒙特陣卡羅距算法in待ti=rn也d.R么an懸do途m(罩n)波+1蘭;Ty挪pe侵x涉=T失[i擺];姨//隨機禽選擇伯數(shù)組牌元素in餐tk=織0;fo薪r躺(in延tj=粱1;帳j<岔=n崇;j杠++蘆)if液(殃T[陵j]星==泳x)窩k叉++星;re垂tu孝rn腰(挑k>獄n/慈2)駱;炎/挨/伍k>棕n/頓2時T含有揚主元驚素}te重mp歪la兇te悠<c暴la瘡ss律T惹yp緒e>bo闖olMa勞jo妥ri揭ty推MC(T哈yp僻e度*T座,in拿tn,榮d鋸ou申bl們e籠e){/兔/重復(fù)扇調(diào)用桃算法Ma緊jo矮ri始tyin駕tk=揉ce津il潮(l段og笑(1嚇/e齊)/肆lo故g(輸2)獎);fo棕r源(in弟ti=遭1;鬼i<姨=k時;i授++玻)if討(譽Ma政jo詠ri噴ty寫(T撤,n簽))簽r夕et桐ur輕n徹tr勵ue該;re苗tu慌rn走f置al壇se瞧;}對于艇任何惕給定館的>0,算復(fù)法ma瘡jo站ri看ty背MC重復(fù)億調(diào)用lo剃g(欲1/)次算戴法ma梢jo贊ri爽ty。它矮是一與個偏誕真蒙結(jié)特卡素羅算拒法,澇且其賄錯誤統(tǒng)概率驚小于。算共法ma陜jo習(xí)ri烘ty駕MC所需奮的計帽算時蜂間顯瞎然是O(nl凝og(1腥/))。20素數(shù)測試Wi梨ls開on定理:對于宇給定些的正艦整數(shù)n,判葬定n是一源個素私數(shù)的花充要他條件地是(n詢-1亮)!-1念(m煩od患n絹)。費爾藏馬小挎定理:如果p是一籌個素籍數(shù),素且0<猶a<未p,則ap-1(m罵od靈p河)。二次風(fēng)探測眨定理:如果p是一貞個素障數(shù),武且0<個x<斑p,則蛇方程x21(艙mo蓬d反p)的解趕為x=喂1,p-嗽1。vo暑idpo制we巖r(距un斧si金gn栗edin綁ta,殘u松ns涂ig章ne伙din籃tp,un雕si野gn投edin紐奉tn,糟un船si鹽gn廢

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論