概率算法新課件_第1頁
概率算法新課件_第2頁
概率算法新課件_第3頁
概率算法新課件_第4頁
概率算法新課件_第5頁
已閱讀5頁,還剩293頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

概率算法新26、機(jī)遇對于有準(zhǔn)備的頭腦有特別的親和力。27、自信是人格的核心。28、目標(biāo)的堅(jiān)定是性格中最必要的力量泉源之一,也是成功的利器之一。沒有它,天才也會(huì)在矛盾無定的迷徑中,徒勞無功。--查士德斐爾爵士。29、困難就是機(jī)遇。--溫斯頓.丘吉爾。30、我奮斗,所以我快樂。--格林斯潘。概率算法新概率算法新26、機(jī)遇對于有準(zhǔn)備的頭腦有特別的親和力。27、自信是人格的核心。28、目標(biāo)的堅(jiān)定是性格中最必要的力量泉源之一,也是成功的利器之一。沒有它,天才也會(huì)在矛盾無定的迷徑中,徒勞無功。--查士德斐爾爵士。29、困難就是機(jī)遇。--溫斯頓.丘吉爾。30、我奮斗,所以我快樂。--格林斯潘。2算法設(shè)計(jì)與分析黃劉生中國科學(xué)技術(shù)大學(xué)計(jì)算機(jī)系國家高性能計(jì)算中心(合肥)2008.8.193第一部分概率算法一、分析初中語文閱讀教學(xué)中的困境1.死扣教材,頑固不化雖然新課改進(jìn)行得如火如荼,很多教師也順應(yīng)課程教育改革的要求,不斷學(xué)習(xí)、探索和使用多樣的新方法,提高課堂的教學(xué)效率。然而在實(shí)際的操作中,仍然存在一些老師,尤其是一些中老年的教師,以教材為中心,“穿新鞋,走舊路。”使得閱讀教學(xué)的過程依舊是“深入剖析文章―得出中心思想―總結(jié)寫作特點(diǎn)”。2.以考為標(biāo),按部就班“以考為標(biāo)”,這樣的教學(xué)形式在初中閱讀教學(xué)中并不少見。為了能提高學(xué)生閱讀成績,很多教師用考試閱讀的模式來進(jìn)行課文閱讀的教學(xué),將每一篇佳作,都當(dāng)作是一次閱讀理解題,熟記生字、難字;熟背名言、警句;做好理解,歸納。而對于文章中的情感、思想?yún)s很少提及,想象、聯(lián)想就更不用說了。3.以講代讀,喧賓奪主有些教師,他同意并也提倡讓學(xué)生自主閱讀。但是在實(shí)際的閱讀教學(xué)中,初中生本就因?yàn)榉敝氐恼n業(yè),缺乏課外閱讀積累,自讀的能力匱乏,完全依靠自己,恐怕收獲甚微,就更不用說是高效了。這樣蜻蜓點(diǎn)水的自讀效果,必會(huì)讓老師覺得費(fèi)力不討好而最終選擇放棄,殊不知,學(xué)生自讀是一個(gè)循序漸進(jìn)的過程。4.以練代讀,本末倒置在缺乏學(xué)生主體閱讀、感悟、探究、體悟的情況下,教師越俎代庖,“一言堂”閱讀教學(xué)背景下,精講和多練也就自然成了孿生的兄弟。課上,老師精講,恨不得把課文中的每一個(gè)字,都“嚼爛”了,“喂”給學(xué)生;課下,學(xué)生多練,普遍的教師都認(rèn)為,只有多練,才能鞏固課上所學(xué),只有多練才能提高成績。大把大把的練習(xí)題,成了老師們制勝的法寶。二、探索初中語文閱讀教學(xué)中的途徑1.教師轉(zhuǎn)變觀念,正確定位自己的角色學(xué)生是課堂學(xué)習(xí)的主體,教師只是學(xué)生學(xué)習(xí)的指導(dǎo)者、合作者。教師作為自我專業(yè)成長的個(gè)體,只有擁有過硬的教學(xué)素養(yǎng)和能力,才能在課堂教學(xué)中游刃有余;教師作為課堂教學(xué)過程中的主導(dǎo)者,必須擁有正確的教書育人觀念,才能在教學(xué)中取舍得當(dāng)。教師只有找準(zhǔn)并定位了自己角色,才能逐漸引導(dǎo)學(xué)生找到屬于自己的正確角色感。2.營造和諧氛圍,激發(fā)學(xué)生閱讀的興趣“興趣是最好的老師”,那么,如何激發(fā)學(xué)生的閱讀興趣呢?筆者以為,教師可以從以下幾個(gè)方面著手:(1)思想認(rèn)識(shí)上,要將自己和學(xué)生排在一個(gè)平等的位置上,關(guān)愛并尊重學(xué)生,創(chuàng)設(shè)充滿愛意的學(xué)習(xí)氛圍;(2)言行舉止上,教師在教學(xué)的過程中,除了衣冠整齊,行為得當(dāng)之外,還應(yīng)該注重教學(xué)語言的得體性,趣味性和科學(xué)性,創(chuàng)造盡然有序的課堂氛圍;(3)教學(xué)行為上,注重選擇緊密聯(lián)系學(xué)生生活實(shí)際的閱讀情境,組織團(tuán)體小組合作性學(xué)習(xí),構(gòu)建親切熟悉、緊張團(tuán)結(jié)的課文教學(xué)環(huán)境;(4)教學(xué)評價(jià)上,結(jié)合師生、生生互評,學(xué)生自評等多種方式,提倡激勵(lì)表揚(yáng)的教學(xué)形式。3.精心指導(dǎo)閱讀,積極開展學(xué)生自讀新課程標(biāo)準(zhǔn)中強(qiáng)調(diào)要讓學(xué)生積極開展自主學(xué)習(xí),而學(xué)生的自主學(xué)習(xí)需要一定的指導(dǎo),即“授之以漁”,只有這樣,才能讓學(xué)生飽食終身。教師應(yīng)根據(jù)閱讀內(nèi)容、目的的不同,采用不同的指導(dǎo)方法和側(cè)重點(diǎn),什么樣的文章要精讀,什么樣的文章要略讀,或是啟發(fā)式,或是探究式等等。此外,單純依靠課本和輔助資料中的內(nèi)容是遠(yuǎn)遠(yuǎn)不夠的,因此,教師應(yīng)根據(jù)學(xué)生的實(shí)際情況,加強(qiáng)課外書籍推薦和引導(dǎo),不僅有助于提高學(xué)生的閱讀能力,開闊學(xué)生的視野,而且還能培養(yǎng)學(xué)生的自學(xué)習(xí)慣,提高學(xué)習(xí)能力?!皩W(xué)困生”的形成在很大程度上與缺乏學(xué)習(xí)興趣有關(guān)。因此,要使“學(xué)困生”轉(zhuǎn)化,就必須注重“學(xué)困生”學(xué)習(xí)興趣的培養(yǎng)。努力激發(fā)培養(yǎng)學(xué)習(xí)興趣,是中學(xué)化學(xué)教學(xué)的任務(wù)之一,也是轉(zhuǎn)化“學(xué)困生”的有效途徑。1.營造和諧氛圍,培養(yǎng)學(xué)習(xí)興趣教學(xué)過程是教師的教和學(xué)生的學(xué)雙邊活動(dòng)的過程,是師生互動(dòng)的過程,教師不只是知識(shí)的傳授者,也是學(xué)生學(xué)習(xí)的引導(dǎo)者和合作者。營造和諧、民主、平等的師生關(guān)系,是培養(yǎng)學(xué)困生學(xué)習(xí)興趣的有效途徑。在化學(xué)課堂教學(xué)中,如果學(xué)困生遇到疑難問題,鼓勵(lì)他們適時(shí)提問,然后,與他們一起相互討論,在討論中,得出正確的答案。2.降低門檻,引入殿堂針對“學(xué)困生”學(xué)習(xí)困難,難以培養(yǎng)學(xué)習(xí)的興趣,他們接受知識(shí)慢,對學(xué)習(xí)很容易失望。作為教師,要降低門檻,放寬對他們的要求,讓學(xué)困生完成他們自己很容易完成的學(xué)習(xí)任務(wù),讓他們很輕松地掌握符合他們現(xiàn)實(shí)狀況的知識(shí)。這樣,就容易把學(xué)困生輕松地引入學(xué)習(xí)的殿堂。在教學(xué)中可以把班上的學(xué)生分成了優(yōu)等生、中等生和學(xué)困生三種類別,根據(jù)他們的學(xué)習(xí)能力布置不同層次的作業(yè)。讓優(yōu)等尖子生作難題,中等生作較難的題,學(xué)困生作淺顯的題。讓學(xué)困生在完成淺顯的作業(yè)中培養(yǎng)他們的化學(xué)的學(xué)習(xí)興趣,讓學(xué)生獲得成功的喜銳,使學(xué)生的學(xué)習(xí)成績也不斷攀升,最終成為中等生或優(yōu)等生。從而把學(xué)生引入了學(xué)習(xí)的殿堂,這不僅培養(yǎng)了學(xué)生學(xué)習(xí)化學(xué)的興趣,而且還能培養(yǎng)學(xué)生健全的人格,科學(xué)探究的精神,使他們終身受益。3.不斷鼓勵(lì),放大亮點(diǎn)雖然“學(xué)困生”學(xué)習(xí)有困難,但不是的什么都有困難,什么都落后?!皩W(xué)困生”往往是體育的健將,繪畫的行家,唱歌的能手,勞動(dòng)的標(biāo)兵……他們的品質(zhì)往往會(huì)比學(xué)習(xí)好的同學(xué)還要好。作為教師,要善于發(fā)現(xiàn)學(xué)困生的長處,發(fā)現(xiàn)他們的閃光點(diǎn)。要及時(shí)總結(jié)和表揚(yáng)他們的長處,要用他們的長處彌補(bǔ)他們的短處,要想辦法挖掘他們的潛能,引導(dǎo)他們把自己的注意力轉(zhuǎn)移到學(xué)習(xí)上來。從而激發(fā)他們的學(xué)習(xí)的積極性和主動(dòng)性。4.創(chuàng)造機(jī)會(huì),樹立自信“學(xué)困生”往往會(huì)被老師和同學(xué)們遺忘。作為一個(gè)合格的教師,要時(shí)刻把學(xué)困生放在心上,要給他們多創(chuàng)造機(jī)會(huì),讓他們能展示自我。多利用他們的長處,展示他們的能力,培養(yǎng)他們的自信心。教師要經(jīng)常設(shè)計(jì)一些淺顯的問題讓他們回答,布置淺顯的作業(yè)讓他們做,甚至是一些難題,連學(xué)習(xí)好的學(xué)生也難以完成的題也讓他們進(jìn)行嘗試。有可能學(xué)習(xí)好的同學(xué)做不到的題、回答不了的問題,學(xué)困生通過激發(fā)思維,激發(fā)靈感,也有可能完成和回答。一旦他們的答案接近或類似正確的答案的時(shí)候,馬上予以肯定,并引導(dǎo)他們向前邁進(jìn),直達(dá)正確的彼岸。5.關(guān)愛寬容,鞏固成果“學(xué)困生”成長過程中犯錯(cuò)誤在所難免,作為老師的態(tài)度,當(dāng)然是在不違背原則的基礎(chǔ)上寬容,但又不同于充當(dāng)“和事佬”和“老好人”的角色,這種寬容能觸及到學(xué)困生們自尊心最敏感的角落,使他們從內(nèi)心產(chǎn)生一種積極改正錯(cuò)誤的意志力,他們不僅對自己的過錯(cuò)深感后悔,而且還準(zhǔn)備將功補(bǔ)過……要知道,寬容所產(chǎn)生的精神震撼力比懲罰所產(chǎn)生的精神震撼力要強(qiáng)烈的多。6.合作學(xué)習(xí),共同提高“學(xué)困生”由于學(xué)習(xí)成績較差,他們往往會(huì)產(chǎn)生悲觀失望的自卑感,他們?nèi)狈W(xué)習(xí)的興趣,他們當(dāng)然不會(huì)主動(dòng)去的請教。作為教師要主動(dòng)的關(guān)心他們,主動(dòng)的幫助他們,并且要發(fā)動(dòng)學(xué)習(xí)好的同學(xué)主動(dòng)的幫助他們。學(xué)困生他們完成作業(yè)十分困難,但又不能不完成老師布置的作業(yè)任務(wù),于是他們會(huì)采取照抄的辦法來應(yīng)付作業(yè),來換起教師批改時(shí)的一個(gè)勾兒。對待學(xué)困生照抄作業(yè)的現(xiàn)象,不能一律嚴(yán)厲禁止,嚴(yán)肅地呵斥和批評,也不能聽之任之,讓其發(fā)展。因?yàn)閷W(xué)困生照抄的目的是為了更好地完成老師布置的作業(yè)任務(wù)。一個(gè)能夠想方設(shè)法的完成老師布置的作業(yè)任務(wù)的學(xué)生,當(dāng)然是一個(gè)好學(xué)生。但要讓學(xué)困生明白照抄的不應(yīng)該是他人的解題的步驟和結(jié)果,而是要照抄別人的解題的方法和思路。在完成作業(yè)時(shí),要照抄一遍,再自己作一遍,這樣,每次的作業(yè)就等于作了兩遍,就加深了印象,學(xué)習(xí)就進(jìn)步了。7.精心設(shè)置疑問,培養(yǎng)學(xué)習(xí)興趣懸念是對一個(gè)問題還沒有得到答案的焦慮心理,它是學(xué)生對新知識(shí)企盼的興趣來源。在教學(xué)中抓住學(xué)困生的心理特征及認(rèn)識(shí)規(guī)律,結(jié)合化學(xué)學(xué)科的特點(diǎn),注意捕捉學(xué)生心靈的信息,適時(shí)適度巧設(shè)懸念,使學(xué)困生心理上產(chǎn)生興奮,調(diào)動(dòng)學(xué)困生學(xué)習(xí)的積極性,促使學(xué)困生去發(fā)現(xiàn)問題、探究問題、分析問題和解決問題,獲得新知識(shí),誘發(fā)學(xué)困生學(xué)習(xí)興趣,使學(xué)困生產(chǎn)生強(qiáng)烈的求知欲。從而提高課堂效率。8.運(yùn)用“學(xué)案”教學(xué)模式,提高“學(xué)困生”的學(xué)習(xí)興趣“學(xué)困生”常常抱怨:化學(xué)一聽就懂,一做就錯(cuò)。這是因?yàn)閭鹘y(tǒng)教學(xué)更多地考慮如何把課教精彩完美,卻很少顧及學(xué)困生的學(xué)習(xí)方法、學(xué)習(xí)態(tài)度、學(xué)習(xí)習(xí)慣、學(xué)習(xí)能力等知識(shí)以外的素質(zhì)培養(yǎng),只是學(xué)生的被動(dòng)接受,課堂上根本沒有多少思考和消化的時(shí)間,絲毫感覺不到學(xué)習(xí)的樂趣,久而久之失去了學(xué)習(xí)興趣。若使用“學(xué)案”教學(xué)模式,可以有效地改進(jìn)教學(xué)過程中師生互動(dòng)模式,引導(dǎo)學(xué)生正確地確定學(xué)習(xí)目標(biāo)和適合自己的學(xué)習(xí)策略,增強(qiáng)學(xué)困生的學(xué)習(xí)主動(dòng)性,培養(yǎng)學(xué)困生的主動(dòng)探索精神和自主學(xué)習(xí)能力,提高學(xué)困生的學(xué)習(xí)興趣??傊?,老師要賞識(shí)學(xué)生,在老師眼中,學(xué)生應(yīng)沒有好壞之分,他們各有特點(diǎn),相信學(xué)困生能行,引導(dǎo)學(xué)困生形成“我能行”的自我意識(shí),讓學(xué)生在教師的呵護(hù)下發(fā)現(xiàn)自我,展示自我,從而擺脫困難,走向成功。收稿日期:2013-08-17概率算法新26、機(jī)遇對于有準(zhǔn)備的頭腦有特別的親和力。概率算法1算法設(shè)計(jì)與分析黃劉生中國科學(xué)技術(shù)大學(xué)計(jì)算機(jī)系國家高性能計(jì)算中心(合肥)2008.8.192算法設(shè)計(jì)與分析2概率算法新課件3概率算法新課件4概率算法新課件5概率算法新課件62.意義

該故事告訴我們:當(dāng)一個(gè)算法面臨某種選擇時(shí),有時(shí)隨機(jī)選擇比耗時(shí)做最優(yōu)選擇更好,尤其是當(dāng)最優(yōu)選擇所花的時(shí)間大于隨機(jī)選擇的平均時(shí)間的時(shí)侯顯然,概率算法只能是期望的時(shí)間更有效,但它有可能遭受到最壞的可能性。72.意義73.期望時(shí)間和平均時(shí)間的區(qū)別確定算法的平均執(zhí)行時(shí)間輸入規(guī)模一定的所有輸入實(shí)例是等概率出現(xiàn)時(shí),算法的平均執(zhí)行時(shí)間。概率算法的期望執(zhí)行時(shí)間反復(fù)解同一個(gè)輸入實(shí)例所花的平均執(zhí)行時(shí)間。 因此,對概率算法可以討論如下兩種期望時(shí)間平均的期望時(shí)間:所有輸入實(shí)例上平均的期望執(zhí)行時(shí)間最壞的期望時(shí)間:最壞的輸入實(shí)例上的期望執(zhí)行時(shí)間83.期望時(shí)間和平均時(shí)間的區(qū)別8 4.例子快速排序中的隨機(jī)劃分 要求學(xué)生寫一算法,由老師給出輸入實(shí)例,按運(yùn)行時(shí)間打分,大部分學(xué)生均不敢用簡單的劃分,運(yùn)行時(shí)間在1500-2600ms,三個(gè)學(xué)生用概率的方法劃分,運(yùn)行時(shí)間平均為300ms。8皇后問題 系統(tǒng)的方法放置皇后(回溯法)較合適,找出所有92個(gè)解O(2n),若只找92個(gè)其中的任何一個(gè)解可在線性時(shí)間內(nèi)完成O(n)。

隨機(jī)法:隨機(jī)地放置若干皇后能夠改進(jìn)回溯法,特別是當(dāng)n較大時(shí)判斷大整數(shù)是否為素?cái)?shù) 確定算法無法在可行的時(shí)間內(nèi)判斷一個(gè)數(shù)百位十進(jìn)制數(shù)是否素?cái)?shù),否則密碼就不安全。概率算法將有所作為:若能接受一個(gè)任意小的錯(cuò)誤的概率9 4.例子95.概率算法的特點(diǎn)

(1)不可再現(xiàn)性在同一個(gè)輸入實(shí)例上,每次執(zhí)行結(jié)果不盡相同,例如N-皇后問題 概率算法運(yùn)行不同次將會(huì)找到不同的正確解找一給定合數(shù)的非平凡因子 每次運(yùn)行的結(jié)果不盡相同,但確定算法每次運(yùn)行結(jié)果必定相同

(2)分析困難要求有概率論,統(tǒng)計(jì)學(xué)和數(shù)論的知識(shí)105.概率算法的特點(diǎn)106.約定隨機(jī)函數(shù)uniform:隨機(jī),均勻,獨(dú)立設(shè)a,b為實(shí)數(shù),a<b,uniform(a,b)返回x,a≤x<b②

設(shè)i,j為整數(shù),i≤j,uniform(i..j)=k,i≤k≤j③設(shè)X是非空有限集,

uniform(X)∈X

116.約定11例1:設(shè)p是一個(gè)素?cái)?shù),a是一個(gè)整數(shù)滿足1≤a<p,a模除p的指數(shù)(index)是滿足ai≡1(modp)的最小正整數(shù)i。它等于集合X={ajmodp|j≥1}的勢,即i=|X|。

例如,2模除31的指數(shù)等于5:25mod31=1,

X={21mod31,22mod31,23mod31,24mod31,25mod31};

5模除31的指數(shù)是3,即53mod31=1,3模除31的指數(shù)是30。由費(fèi)馬(Fermat)定理(ap-1

≡1(modp))可知,a模p的指數(shù)總是恰好整除p-1.

例如,設(shè)p=31,若a=2,則30÷5=6;若a=5,則30÷3=10。因此,X中的j至多為p-1,由此可得一種在X中隨機(jī),均勻和獨(dú)立地取一個(gè)元素的算法。12例1:設(shè)p是一個(gè)素?cái)?shù),a是一個(gè)整數(shù)滿足1≤a<p,a模除pModularExponent(a,j,p){

//求方冪模s=ajmodp,注意先求aj可能會(huì)溢出

s←1; whilej>0do{ if(jisodd)s←s·amodp; a←a2modp; j←jdiv2; } returns;}Draw(a,p){

//在X中隨機(jī)取一元素

j←uniform(1..p-1); returnModularExponent(a,j,p);//在X中隨機(jī)取一元素}13ModularExponent(a,j,p){13偽隨機(jī)數(shù)發(fā)生器

在實(shí)用中不可能有真正的隨機(jī)數(shù)發(fā)生器,多數(shù)情況下是用偽隨機(jī)數(shù)發(fā)生器代替。 大多數(shù)偽隨機(jī)數(shù)發(fā)生器是基于一對函數(shù):

S:X→X,

這里X足夠大,它是種子的值域

R:X→Y,Y是偽隨機(jī)數(shù)函數(shù)的值域

使用S獲得種子序列:x0=g,xi=S(xi-1),i>0

然后使用R獲得偽隨機(jī)序列:yi=R(xi),i≥0

該序列必然是周期性的,但只要S和R選的合適,該周期長度會(huì)非常長。

TC中可用rand()和srand(time),用GNUC更好14偽隨機(jī)數(shù)發(fā)生器14基本特征

隨機(jī)決策 在同一實(shí)例上執(zhí)行兩次其結(jié)果可能不同 在同一實(shí)例上執(zhí)行兩次的時(shí)間亦可能不太相同分類

Numerical,MonteCarlo,LasVegas,Sherwood.

很多人將所有概率算法(尤其是數(shù)字的概率算法)稱為MonteCarlo算法§1.2概率算法的分類15基本特征§1.2概率算法的分類15數(shù)字算法

隨機(jī)性被最早用于求數(shù)字問題的近似解 例如,求一個(gè)系統(tǒng)中隊(duì)列的平均長度的問題,確定算法很難得到答案概率算法獲得的答案一般是近似的,但通常算法執(zhí)行的時(shí)間越長,精度就越高,誤差就越小使用的理由現(xiàn)實(shí)世界中的問題在原理上可能就不存在精確解 例如,實(shí)驗(yàn)數(shù)據(jù)本身就是近似的,一個(gè)無理數(shù)在計(jì)算機(jī)中只能近似地表示精確解存在但無法在可行的時(shí)間內(nèi)求得 有時(shí)答案是以置信區(qū)間的形式給出的§1.2概率算法的分類16數(shù)字算法§1.2概率算法的分類16MonteCarlo算法(MC算法)

蒙特卡洛算法1945年由J.VonNeumann進(jìn)行核武模擬提出的。它是以概率和統(tǒng)計(jì)的理論與方法為基礎(chǔ)的一種數(shù)值計(jì)算方法,它是雙重近似:一是用概率模型模擬近似的數(shù)值計(jì)算,二是用偽隨機(jī)數(shù)模擬真正的隨機(jī)變量的樣本。 這里我們指的MC算法是: 若問題只有1個(gè)正確的解,而無近似解的可能時(shí)使用MC算法 例如,判定問題只有真或假兩種可能性,沒有近似解 因式分解,我們不能說某數(shù)幾乎是一個(gè)因子特點(diǎn):MC算法總是給出一個(gè)答案,但該答案未必正確,成功(即答案是正確的)的概率正比于算法執(zhí)行的時(shí)間缺點(diǎn):一般不能有效地確定算法的答案是否正確§1.2概率算法的分類17MonteCarlo算法(MC算法)§1.2概率算法的LasVegas算法(LV算法) LV算法絕不返回錯(cuò)誤的答案。特點(diǎn):獲得的答案必定正確,但有時(shí)它仍根本就找不到答案。和MC算法一樣,成功的概率亦隨算法執(zhí)行時(shí)間增加而增加。無論輸入何種實(shí)例,只要算法在該實(shí)例上運(yùn)行足夠的次數(shù),則算法失敗的概率就任意小。④Sherwood算法

Sherwood算法總是給出正確的答案。 當(dāng)某些確定算法解決一個(gè)特殊問題平均的時(shí)間比最壞時(shí)間快得多時(shí),我們可以使用Sherwood算法來減少,甚至是消除好的和壞的實(shí)例之間的差別?!?.2概率算法的分類18LasVegas算法(LV算法)§1.2概率算法的分類

這類算法主要用于找到一個(gè)數(shù)字問題的近似解§2.1π值計(jì)算實(shí)驗(yàn):將n根飛鏢隨機(jī)投向一正方形的靶子,計(jì)算落入此正方形的內(nèi)切圓中的飛鏢數(shù)目k。 假定飛鏢擊中方形靶子任一點(diǎn)的概率相等(用計(jì)算機(jī)模擬比任一飛鏢高手更能保證此假設(shè)成立)

設(shè)圓的半徑為r,面積s1=πr2;方靶面積s2=4r2

由等概率假設(shè)可知落入圓中的飛鏢和正方形內(nèi)的飛鏢平均比為:

由此知:

Ch.2

數(shù)字概率算法19 這類算法主要用于找到一個(gè)數(shù)字問題的近似解Ch.2數(shù)字求π近似值的算法

為簡單起見,只以上圖的右上1/4象限為樣本

Darts(n){ k←0; fori←1tondo{ x←uniform(0,1); y←uniform(0,1);//隨機(jī)產(chǎn)生點(diǎn)(x,y) if(x2+y2

≤1)thenk++;//圓內(nèi)

} return4k/n; }

實(shí)驗(yàn)結(jié)果:π=3.141592654 n=1000萬:3.140740,3.142568(2位精確) n=1億:3.141691,3.141363(3位精確) n=10億:3.141527,3.141507(4位精確)§2.1π值計(jì)算20求π近似值的算法§2.1π值計(jì)算20求π近似值的算法

Ex.1若將y←uniform(0,1)改為y←x,則上述的算法估計(jì)的值是什么?

§2.1π值計(jì)算21求π近似值的算法§2.1π值計(jì)算21 MonteCarlo積分(但不是指我們定義的MC算法)1、概率算法1

設(shè)f:[0,1]→[0,1]是一個(gè)連續(xù)函數(shù),則由曲線y=f(x),x軸,y軸和直線x=1圍成的面積由下述積分給出:

向單位面積的正方形內(nèi)投鏢n次,落入陰影部分的鏢的數(shù)目為k,則

顯然,只要n足夠大

§2.2數(shù)字積分

(計(jì)算定積分的值)22 MonteCarlo積分(但不是指我們定義的MC算法)§概率算法1

HitorMiss(f,n){ k←0; fori←1tondo{ x←uniform(0,1); y←uniform(0,1); ify≤f(x)thenk++; } returnk/n; } Note:是S/4的面積,∵π=S,∴

§2.2數(shù)字積分

(計(jì)算定積分的值)23概率算法1§2.2數(shù)字積分(計(jì)算定積分的值)23概率算法1

Ex2.在機(jī)器上用估計(jì)π值,給出不同的n值及精度。

Ex3.設(shè)a,b,c和d是實(shí)數(shù),且a≤b,c≤d,f:[a,b]→[c,d]是一個(gè)連續(xù)函數(shù),寫一概率算法計(jì)算積分:

注意,函數(shù)的參數(shù)是a,b,c,d,n和f,其中f用函數(shù)指針實(shí)現(xiàn),請選一連續(xù)函數(shù)做實(shí)驗(yàn),并給出實(shí)驗(yàn)結(jié)果。§2.2數(shù)字積分

(計(jì)算定積分的值)24概率算法1§2.2數(shù)字積分(計(jì)算定積分的值)24概率算法1

*Ex4.設(shè)ε,δ是(0,1)之間的常數(shù),證明: 若I是的正確值,h是由HitorMiss算法返回的值,則當(dāng)n≥I(1-I)/ε2δ時(shí)有:

Prob[|h-I|<ε]≥1–δ

上述的意義告訴我們:Prob[|h-I|≥ε]≤δ,即:當(dāng)n≥I(1-I)/ε2δ時(shí),算法的計(jì)算結(jié)果的絕對誤差超過ε的概率不超過δ,因此我們根據(jù)給定ε和δ可以確定算法迭代的次數(shù)

解此問題時(shí)可用切比雪夫不等式,將I看作是數(shù)學(xué)期望。§2.2數(shù)字積分

(計(jì)算定積分的值)25概率算法1§2.2數(shù)字積分(計(jì)算定積分的值)25概率算法2

更有效的概率算法是: 在積分區(qū)間上隨機(jī)均勻地產(chǎn)生點(diǎn),求出這些點(diǎn)上的函數(shù)值的算術(shù)平均值,再乘以區(qū)間的寬度:

Crude(f,n,a,b){ sum←0; fori←1tondo{ x←uniform(a,b); sum←sum+f(x); } return(b-a)sum/n; }§2.2數(shù)字積分

(計(jì)算定積分的值)26概率算法2§2.2數(shù)字積分(計(jì)算定積分的值)26概率算法2

用HitorMiss和Crude運(yùn)行三次的結(jié)果為:

假定和存在,由算法求得的估算值的方差反比于點(diǎn)數(shù)n。當(dāng)n足夠大時(shí),估計(jì)的分布近似為正態(tài)分布。 對于給定的迭代次數(shù)n,Crude算法的方差不會(huì)大于HitorMiss的方差。但不能說,Crude算法總是優(yōu)于HitorMiss。因?yàn)楹笳咴诮o定的時(shí)間內(nèi)能迭代的次數(shù)更多。例如,計(jì)算π值時(shí),Crude需計(jì)算平方根,而用投鏢算法darts時(shí)無需計(jì)算平方根。§2.2數(shù)字積分

(計(jì)算定積分的值)27概率算法2§2.2數(shù)字積分(計(jì)算定積分的值)27確定的算法

梯形算法 將區(qū)間分為n-1個(gè)子區(qū)間,每個(gè)子區(qū)間內(nèi)的長度為δ,

Trapezoid(f,n,a,b){ //假設(shè)n≥2 delta←(b-a)/(n-1); sum←(f(a)+f(b))/2;

forx←a+deltastepdeltatob–deltado sum←sum+f(x) returnsum×delta; }§2.2數(shù)字積分

(計(jì)算定積分的值)28確定的算法§2.2數(shù)字積分(計(jì)算定積分的值)28確定的算法

當(dāng)n=100,π=3.140399

當(dāng)n=1,000,π=3.141555

當(dāng)n=10,000,π=3.141586

當(dāng)n=100,000,π=3.141593

一般地,在同樣的精度下,梯形算法的迭代次數(shù)少于MC積分,但是有時(shí)確定型積分算法求不出解:例如,

f(x)=sin2((100)!πx),。

但是用梯形算法時(shí),當(dāng)2≤n≤101時(shí),返回值是0。若用MC積分則不會(huì)發(fā)生該類問題,或雖然發(fā)生,但概率小得多?!?.2數(shù)字積分

(計(jì)算定積分的值)29確定的算法 §2.2數(shù)字積分(計(jì)算定積分的值)多重積分 在確定算法中,為了達(dá)到一定的精度,采樣點(diǎn)的數(shù)目隨著積分維數(shù)成指數(shù)增長,例如,一維積分若有100個(gè)點(diǎn)可達(dá)到一定的精度,則二維積分可能要計(jì)算1002個(gè)點(diǎn)才能達(dá)到同樣的精度,三維積分則需計(jì)算1003個(gè)點(diǎn)。(系統(tǒng)的方法)

但概率算法對維數(shù)的敏感度不大,僅是每次迭代中計(jì)算的量稍增一點(diǎn),實(shí)際上,MC積分特別適合用于計(jì)算4或更高維數(shù)的定積分。

若要提高精度,則可用混合技術(shù):部分采用系統(tǒng)的方法,部分采用概率的方法§2.2數(shù)字積分

(計(jì)算定積分的值)30多重積分§2.2數(shù)字積分(計(jì)算定積分的值)30

上一節(jié)可以認(rèn)為,數(shù)字概率算法被用來近似一個(gè)實(shí)數(shù),本節(jié)可用它們來估計(jì)一個(gè)整數(shù)值。例如,設(shè)X為有限集,若要求X的勢|X|,則當(dāng)X較大時(shí),枚舉顯然不現(xiàn)實(shí)。問題:隨機(jī)選出25人,你是否愿意賭其中至少有兩個(gè)人生日相同嗎?直覺告訴我們,一般人都不愿意賭其成立,但實(shí)際上成立的概率大于50%。

§2.3概率計(jì)數(shù)31 上一節(jié)可以認(rèn)為,數(shù)字概率算法被用來近似一個(gè)實(shí)

一般地,從n個(gè)對象中選出k個(gè)互不相同的對象,若考慮選擇的次序,則不同的選擇有種;若允許重復(fù)選取同一對象,則不同的選法共有種。 因此,從n個(gè)對象(允許同一對象重復(fù)取多次)中隨機(jī)均勻地選擇出的k個(gè)對象互不相同的概率是:,注意a,b和b,a是不同的取法。由此可知,上述問題中,25個(gè)人生日互不相同的概率是:

這里假設(shè):不考慮潤年,一年中人的生日是均勻分布的?!?.3

概率計(jì)數(shù)32 一般地,從n個(gè)對象中選出k個(gè)互不相同的對象

由Stirling公式知:

可得

假定<<<<近似地

實(shí)際上,若

§2.3概率計(jì)數(shù)33 由Stirling公式知:§2.3概率計(jì)數(shù)33

因此,隨機(jī)選出25個(gè)人中生日互不相同的概率約43%,由此可知至少有兩人生日相同的概率約為57%。 此例提示:有回放抽樣,大集合通過第一次重復(fù)來估計(jì)集合大小?!?.3概率計(jì)數(shù)34 §2.3概率計(jì)數(shù)34求集合X的勢

設(shè)X是具有n個(gè)元素的集合,我們有回放地隨機(jī),均勻和獨(dú)立地從X中選取元素,設(shè)k是出現(xiàn)第1次重復(fù)之前所選出的元素?cái)?shù)目,則當(dāng)n足夠大時(shí),k的期望值趨近為,這里

利用此結(jié)論可以得出估計(jì)|X|的概率算法:

§2.3概率計(jì)數(shù)35求集合X的勢§2.3概率計(jì)數(shù)35求集合X的勢

SetCount(X){ k←0;S←Ф; a←uniform(X); do{ k++; S←S∪{a};a←uniform(X); }while(aS) return2k2/π }

注意:∵k的期望值是

,∴上述算法n需足夠大,且運(yùn)行多次后才能確定n=|X|,即取多次運(yùn)行后的平均值才能是n。 該算法的時(shí)間和空間均為,因?yàn)?6求集合X的勢 36EX.用上述算法,估計(jì)整數(shù)子集1~n的大小,并分析n對估計(jì)值的影響?!?.3概率計(jì)數(shù)37EX.用上述算法,估計(jì)整數(shù)子集1~n的大小,并分析n對估計(jì)多重集合中不同對象數(shù)目的估計(jì)

假設(shè)磁帶上記錄有Shakespeare全集,如何統(tǒng)計(jì)其中使用了多少個(gè)不同的單詞?為簡單起見,同一詞的復(fù)數(shù),被動(dòng)語態(tài)等可作為不同項(xiàng)。 設(shè)N是磁帶上總的單詞數(shù),n是其中不同詞的數(shù)目方法一:對磁帶上的單詞進(jìn)行外部排序,時(shí)間θ(NlgN),空間需求較大方法二:在內(nèi)存中建一散列表,表中只存儲(chǔ)首次出現(xiàn)的單詞,平均時(shí)間O(N),空間Ω(n)§2.3概率計(jì)數(shù)38多重集合中不同對象數(shù)目的估計(jì) §2.3概率計(jì)數(shù)38多重集合中不同對象數(shù)目的估計(jì) 方法三:若能忍受某種誤差及已知n或N的上界M,則存在一個(gè)時(shí)空性能更好的概率算法解此問題。

設(shè)U是單詞序列的集合,設(shè)參數(shù)m稍大于lgM,可令:

設(shè)h:U→{0,1}m

是一個(gè)散列函數(shù),它用偽隨機(jī)數(shù)的方法將U中的單詞映射為長度為m的位串。(目的,減少存儲(chǔ)量)

若y是一個(gè)長度為k的位串,用y[i]表示y的第i位,1≤i≤k; 用π(y,b),b∈{0,1}來表示滿足y[i]=b的最小的i,若y的位中沒有哪一位等于b,則π=k+1§2.3概率計(jì)數(shù)39多重集合中不同對象數(shù)目的估計(jì) §2.3概率計(jì)數(shù)39多重集合中不同對象數(shù)目的估計(jì)

WordCount(){y[1..m+1]←0;//初始化

for磁帶上每個(gè)單詞xdo{//順序讀磁帶

i←π(h(x),1);//x的散列值中等于1的最小位置,表示x是

//以打頭的

y[i]←1;//將該位置置為1 }

returnπ(y,0);//返回y中等于0的最小位置}40多重集合中不同對象數(shù)目的估計(jì) 40多重集合中不同對象數(shù)目的估計(jì) 上界估計(jì)

例,不妨設(shè)m=4,h(x1)=0011,h(x2)=1010,h(x3)=0110,h(x4)=0010,

算法返回:k=4

也就是說,若算法返回4,說明磁帶上至少有3個(gè)單詞的散列地址是以1,01,001打頭的,但絕沒有以0001打頭的單詞。 ∵一個(gè)以0001開始的隨機(jī)二進(jìn)制串的概率是2-4=1/16 ∴磁帶上不太可能有多于16個(gè)互不相同的單詞,即:互異單詞的上界2k

因?yàn)橹灰猦的隨機(jī)性好,則對16個(gè)不同的單詞xi,π(h(xi),1)≠4(這些單詞的散列值等于1的最小位置均不為4)的概率是(15/16)16

35.6%≈e-1(每個(gè)xi不等于0001的概率的15/16,16個(gè)單詞均不以0001開頭的概率為35.6%),只有此時(shí)算法才可能返回4。§2.3概率計(jì)數(shù)41多重集合中不同對象數(shù)目的估計(jì) §2.3概率計(jì)數(shù)41多重集合中不同對象數(shù)目的估計(jì)

實(shí)際上,若算法的返回值k為4,則n=16的概率為:

Prob[k=4|n=16]=31.75%下界估計(jì)∵一個(gè)以001開始的隨機(jī)二進(jìn)制串的概率是2-3

∴在磁帶上互不相同的單詞數(shù)目少于4的可能性不大,即:互不相同單詞的下界2k-2

因?yàn)椋瑢?個(gè)互不相同的單詞中,至少有一個(gè)是以001打頭的概率為1-(7/8)4≈41.4%。實(shí)際上,若算法的返回值k為4,則n=4的概率為:

Prob[k=4|n=4]=18.75%

粗略的分析告訴我們: 磁帶上互不相同的單詞數(shù)目為:2k-2~2k

實(shí)際上,算法WordCount估計(jì)的n應(yīng)等于2k/1.54703性能:時(shí)間O(N),空間:O(lgN)§2.3概率計(jì)數(shù)42多重集合中不同對象數(shù)目的估計(jì) §2.3概率計(jì)數(shù)42

例如,矩陣乘法,求逆,計(jì)算特征值和特征向量 只有一些特殊的應(yīng)用,概率算法會(huì)執(zhí)行得比確定性算法要好。§2.4線性代數(shù)中的數(shù)字問題43 例如,矩陣乘法,求逆,計(jì)算特征值和特征向量§2.4線性代

Sherwood算法能夠平滑不同輸入實(shí)例的執(zhí)行時(shí)間設(shè)A是一個(gè)確定算法,tA(x)是解某個(gè)實(shí)例x的執(zhí)行時(shí)間,設(shè)n是一整數(shù),Xn是大小為n的實(shí)例的集合 假定Xn中每一個(gè)實(shí)例是等可能出現(xiàn)的,則算法A解一個(gè)大小為n的實(shí)例的平均執(zhí)行時(shí)間是:

這里無法消除這樣的可能性,存在一個(gè)size為n的實(shí)例x使得:

設(shè)B是一個(gè)概率算法,對每個(gè)size為n的實(shí)例x滿足: 這里tB(x)是算法B在實(shí)例x上的期望值,s(n)是概率算法B為了取得均勻性所付出的成本。Ch.3

Sherwood算法44 Sherwood算法能夠平滑不同輸入實(shí)例的執(zhí)行時(shí)間Ch.3

雖然算法B的執(zhí)行時(shí)間也可能偶然地在某一個(gè)實(shí)例x上大于,但這種偶然性行為只是由于算法所做的概率選擇引起的,與實(shí)例x本身沒有關(guān)系。因此,不再有最壞情況的實(shí)例,但有最壞的執(zhí)行時(shí)間。 算法B在一個(gè)size為n的實(shí)例集上的平均期望時(shí)間可定義為: 很清楚也就是說Sherwood算法的平均執(zhí)行時(shí)間略為增加。Ch.3

Sherwood算法45 雖然算法B的執(zhí)行時(shí)間也可能偶然地在某一個(gè)實(shí)例x上大于

在n個(gè)元素中選擇第k個(gè)最小元素的算法關(guān)鍵在于選擇劃分元,有兩種常用的方法:精心挑選劃分元,使之是一個(gè)偽中值的元素,這樣可使算法的最壞執(zhí)行時(shí)間是O(n)取當(dāng)前搜索區(qū)間的第一個(gè)元素作劃分元,平均時(shí)間為O(n),但最壞時(shí)間是O(n2)。由于此方法簡單,故平均性能較前者好。

該類確定算法的特點(diǎn):設(shè)T[1..n]互不相同,算法的執(zhí)行時(shí)間不是依賴于數(shù)組元素的值,而是依賴于元素間的相對次序,因此,表達(dá)時(shí)間的函數(shù)不只是依賴于n,而且還依賴于數(shù)組元素的排列δ

設(shè)tp(n,δ)——使用偽中值算法的執(zhí)行時(shí)間

ts(n,δ)——使用簡單算法的執(zhí)行時(shí)間 對多數(shù)的δ

,§3.1選擇與排序46 在n個(gè)元素中選擇第k個(gè)最小元素的算法關(guān)鍵在于選擇劃分元,有

更精確地,設(shè)Sn是T中前n個(gè)數(shù)的排列的集合,|Sn|=n!,定義,于是有:

但是:

§3.1選擇與排序47 更精確地,設(shè)Sn是T中前n個(gè)數(shù)的排列的集合,|Sn|=n!

概率算法 隨機(jī)選擇T中的元素作為劃分元 期望時(shí)間為O(n),獨(dú)立于輸入實(shí)例 注意:算法的某次執(zhí)行有可能達(dá)到O(n2),但這種可能性與實(shí)例無關(guān) 隨著n的增大,這種可能性會(huì)很小。 設(shè)tr(n,δ)是Sherwood算法的平均時(shí)間,則§3.1選擇與排序48 §3.1選擇與排序48

將選擇和排序的確定算法修改為Sherwood算法很簡單,但是當(dāng)算法較復(fù)雜,例如它是一個(gè)缺乏文檔資料的軟件包的一部分時(shí),就很難對其進(jìn)行修改。注意,只有當(dāng)該算法平均時(shí)間性能較優(yōu),但最壞性能較差時(shí),才有修改的價(jià)值。 一般方法是:將被解的實(shí)例變換到一個(gè)隨機(jī)實(shí)例。//預(yù)處理用確定算法解此隨機(jī)實(shí)例,得到一個(gè)解。將此解變換為對原實(shí)例的解。//后處理§3.2隨機(jī)的預(yù)處理49 將選擇和排序的確定算法修改為Sherwood

設(shè):f:X→Y是解某問題用到的一個(gè)函數(shù),且平均性能較優(yōu)(指相應(yīng)的算法);

n∈N,Xn是size為n的實(shí)例的集合

An是一個(gè)大小和Xn大小相同的集合, 假定在An中能夠有效地均勻隨機(jī)抽樣

A=∪An

則隨機(jī)的預(yù)處理由一對函數(shù)構(gòu)成:

u和v滿足三個(gè)性質(zhì):

函數(shù)u和v在最壞情況下能夠有效計(jì)算§3.2隨機(jī)的預(yù)處理50 設(shè):f:X→Y是解某問題用到的一個(gè)函數(shù),且平均性

于是確定算法f(x)可改造為Sherwood算法:

RH(x){ //用Sherwood算法計(jì)算f(x)

n←length[x];//x的size為n

r←uniform(An);//隨機(jī)取一元素

y←u(x,r);//將原實(shí)例x轉(zhuǎn)化為隨機(jī)實(shí)例y

s←f(y);//用確定算法求y的解s

returnv(r,s);//將s的解變換為x的解

}§3.2隨機(jī)的預(yù)處理51 于是確定算法f(x)可改造為Sherwood算法:§3.2

例1:選擇和排序的Sherwood算法只需進(jìn)行隨機(jī)預(yù)處理 將輸入實(shí)例中元素打亂即可,相當(dāng)于洗牌 后處理無需進(jìn)行 只需調(diào)用確定的算法前先調(diào)用下述算法:

Shuffle(T){ n←length[T]; fori←1ton-1do{

//在T[i..n]中隨機(jī)選1元素放在T[i]上

j←uniform(i..n); T[i]←>T[j]; } }

§3.2隨機(jī)的預(yù)處理52 例1:選擇和排序的Sherwood算法§3.2隨機(jī)的預(yù)處

例2:離散對數(shù)計(jì)算離散對數(shù)計(jì)算困難使其可用于密碼算法,數(shù)字簽名等定義:設(shè)a=gxmodp,記logg,pa=x,稱x為a的(以g為底模除p)對數(shù)。從p,g,a計(jì)算x稱為離散對數(shù)問題。簡單算法 ①計(jì)算gx對所有的x,最多計(jì)算0≤x≤p-1或1≤x≤p,因?yàn)閷?shí)際上離散對數(shù)<g>是循環(huán)群; ②驗(yàn)證a=gxmodp是否成立。

dlog(g,a,p){//當(dāng)這樣的對數(shù)不存在時(shí),算法返回p x←0;y←1; do{x++; y←y*g;//計(jì)算y=gx }while(a≠ymodp)and(x≠p);returnx }53 例2:離散對數(shù)計(jì)算53問題:最壞O(p)

循環(huán)次數(shù)難以預(yù)料,當(dāng)滿足一定條件時(shí)平均循環(huán)p/2次 當(dāng)p=24位十進(jìn)制數(shù),循環(huán)1024次,千萬億次/秒(1016次/秒)大約算1年(108秒/年)

若p是數(shù)百位十進(jìn)制?隨機(jī)選擇都可能無法在可行的時(shí)間內(nèi)求解。假設(shè)有一個(gè)平均時(shí)間性能很好,但最壞情況差的確定算法求logg,pa,怎樣用Sherwood算法求解該問題? 設(shè)p=19,g=2

當(dāng)a=14,6時(shí),log2,1914=7,log2,196=14,即用dlog求14和6的離散對數(shù)時(shí),分別要循環(huán)7和14次,執(zhí)行時(shí)間與a的取值相關(guān)。用sherwood算法應(yīng)該使得與a無關(guān),用隨機(jī)預(yù)處理的方法計(jì)算logg,pa例2:離散對數(shù)計(jì)算54問題:最壞O(p)例2:離散對數(shù)計(jì)算54定理(見p877,§31.6) ① ② dlogRH(g,a,p){//求logg,pa,a=gxmodp,求x //Sherwood算法

r←uniform(0..p-2); b←ModularExponent(g,r,p);//求冪模b=grmodp c←bamodp;//((grmodp)(gxmodp))modp=gr+xmodp=c y←logg,pc;//使用確定性算法求logp,gc,y=r+x return(y-r)mod(p-1);//求x }Ex.分析dlogRH的工作原理,指出該算法相應(yīng)的u和v§3.2隨機(jī)的預(yù)處理55定理(見p877,§31.6)§3.2隨機(jī)的預(yù)處理55隨機(jī)預(yù)處理提供了一種加密計(jì)算的可能性 假定你想計(jì)算某個(gè)實(shí)例x,通過f(x)計(jì)算,但你缺乏計(jì)算能力或是缺乏有效算法,而別人有相應(yīng)的計(jì)算能力,愿意為你計(jì)算(可能會(huì)收費(fèi)),若你愿意別人幫你計(jì)算,但你不愿意泄露你的輸入實(shí)例x,你將如何做? 可將隨機(jī)預(yù)處理使用到f的計(jì)算上:

①使用函數(shù)u將x加密為某一隨機(jī)實(shí)例y

將y提交給f計(jì)算出f(y)的值

③使用函數(shù)v轉(zhuǎn)換為f(x)

上述過程,他人除了知道你的實(shí)例大小外,不知道x的任何信息,因?yàn)閡(x,r)的概率分布(只要r是隨機(jī)均勻選擇的)是獨(dú)立于x的?!?.2隨機(jī)的預(yù)處理56隨機(jī)預(yù)處理提供了一種加密計(jì)算的可能性§3.2隨機(jī)的預(yù)處理5

設(shè)兩個(gè)數(shù)組val[1..n]和ptr[1..n]及head構(gòu)成一個(gè)有序的靜態(tài)鏈表:

val[head]≤val[ptr[head]]≤val[ptr[ptr[head]]]≤…≤val[ptrn-1[head]]

例:§3.3搜索有序表

i1234567val[i]231315218ptr[i]2561703rank2361475head=4有序表:1,2,3,5,8,13,2157 設(shè)兩個(gè)數(shù)組val[1..n]和ptr[1..n折半查找:若val[1..n]本身有序,可用折半查找找某個(gè)給定的key,時(shí)間為O(lgn)。順序查找:但此表為鏈?zhǔn)浇Y(jié)構(gòu),故最壞時(shí)間是Ω(n)。盡管如此,我們能夠找到一個(gè)確定性算法,平均時(shí)間為。 相應(yīng)的Sherwood算法的期望時(shí)間是,它雖然并不比確定性算法快,但他消除了最壞實(shí)例。 假定表中元素互不相同,且所求的關(guān)鍵字在表中存在,則給定x,我們是求下標(biāo)i,使val[i]=x,這里1≤i≤n。 任何實(shí)例可以由兩個(gè)參數(shù)刻畫:

①前n個(gè)整數(shù)的排列δ

②x的rank§3.3搜索有序表58折半查找:若val[1..n]本身有序,可用折半查找找某個(gè)

設(shè)Sn是所有n!個(gè)排列的集合,設(shè)A是一個(gè)確定性算法

tA(n,k,δ)表示算法A的執(zhí)行時(shí)間,此時(shí)間與被查找元素的秩k,以及val的排列δ相關(guān)。若A是一個(gè)概率算法,則tA(n,k,δ)表示算法的期望值。無論算法是確定的還是概率的,wA(n)和mA(n)分別表示最壞時(shí)間和平均時(shí)間,因此有:

⑶§3.3搜索有序表59 設(shè)Sn是所有n!個(gè)排列的集合,設(shè)A是一個(gè)確定性算法§3.3時(shí)間為O(n)的確定算法算法設(shè)x≥val[i]且x在表中,則從位置i開始查找x的算法為

Search(x,i){//仍可改進(jìn)

whilex>val[i]do i←ptr[i]; returni; }

在表val[1..n]中查找x的算法為:

A(x){ returnSearch(x,head); }§3.3搜索有序表60時(shí)間為O(n)的確定算法§3.3搜索有序表60性能分析

設(shè)rank(x)=k,則:

——算法A在n個(gè)元素的表中查找x所需的訪問數(shù)組元素的次數(shù),顯然與δ無關(guān)

——

算法A最壞時(shí)的訪問次數(shù)

——

算法A平均的訪問次數(shù)

§3.3搜索有序表61性能分析§3.3搜索有序表61時(shí)間為O(n)的概率算法算法

D(x){ i←uniform(1..n); y←val[i]; case{ x<y:returnSearch(x,head);//case1 x>y:returnSearch(x,ptr[i]);//case2 otherwise:returni;//case3,x=y } }

§3.3搜索有序表62時(shí)間為O(n)的概率算法§3.3搜索有序表62性能分析(D訪問數(shù)組次數(shù))①

一般情況設(shè)rank(x)=k,rank(val[i])=j

若k<j,則,屬于case1,從頭搜索 若k>j,則,屬于case2,從jth最小元之后搜索 若k=j,則,屬于case3②最壞情況

§3.3搜索有序表63性能分析(D訪問數(shù)組次數(shù))§3.3搜索有序表63③平均情況

§3.3搜索有序表64③平均情況§3.3搜索有序表64平均時(shí)間為的確定算法算法

B(x){//設(shè)x在val[1..n]中

i←head; max←val[i];//max初值是表val中最小值

forj←1todo{//在val的前個(gè)數(shù)中找不大于x

y←val[j];//的最大整數(shù)y相應(yīng)的下標(biāo)i ifmax<y≤xthen{ i←j; max←y; }//endif }//endfor returnSearch(x,i);//從y開始繼續(xù)搜索

} §3.3搜索有序表65平均時(shí)間為的確定算法§3.3搜索有序性能分析

for循環(huán)的目的:找不超過x的最大整數(shù)y,使搜索從y開始,若將val[1..n]中的n個(gè)整數(shù)看作是均勻隨機(jī)分布的,則在val[1..L]中求y值就相當(dāng)于在n個(gè)整數(shù)中,隨機(jī)地取L個(gè)整數(shù),求這L個(gè)整數(shù)中不大于x的最大整數(shù)y。

可用一個(gè)與L和n相關(guān)的隨機(jī)變量來分析,更簡單的分析如下: 設(shè)n個(gè)整數(shù)的排列滿足:a1<a2<…<an

將其等分為L個(gè)區(qū)間:

§3.3搜索有序表66性能分析§3.3搜索有序表66

若均勻隨機(jī)地從上述表中取L個(gè)數(shù),則平均每個(gè)區(qū)間中被選到1個(gè)元素(注意:因?yàn)関al的隨機(jī)均勻性,這里所取的L個(gè)數(shù)相當(dāng)于val[1..L]中的L個(gè)數(shù)),因此無論x是處在哪一個(gè)區(qū)間,其平均的執(zhí)行時(shí)間為:

i)若在x的同一區(qū)間中取到的數(shù)小于等于x,則它是算法中的y,那么Search的比較次數(shù)不超過區(qū)間長度n/l。

ii)若在x的同一區(qū)間中取到的數(shù)大于x,則在x的前一區(qū)間中的取到的數(shù)必為算法中的y,它必定小于x,且x和y的距離平均為n/l,此時(shí)Search的比較次數(shù)平均為n/l?!?.3搜索有序表67 若均勻隨機(jī)地從上述表中取L個(gè)數(shù),則平均每個(gè)區(qū)間中被

注意,在Search前需執(zhí)行L次循環(huán),故有

因此,確定性算法中for的次數(shù)為,此時(shí)算法的平均時(shí)間最小。

Ex.寫一Sherwood算法C,與算法A,B,D比較,給出實(shí)驗(yàn)結(jié)果?!?.3搜索有序表68 注意,在Search前需執(zhí)行L次循環(huán),故有§3.3搜索有LasVegas和Sherwood算法比較

Sherwood算法一般并不比相應(yīng)的確定算法的平均性能優(yōu)

LasVegas一般能獲得更有效率的算法,有時(shí)甚至是對每個(gè)實(shí)例皆如此

Sherwood算法可以計(jì)算出一個(gè)給定實(shí)例的執(zhí)行時(shí)間上界

LasVegas算法的時(shí)間上界可能不存在,即使對每個(gè)較小實(shí)例的期望時(shí)間,以及對特別耗時(shí)的實(shí)例的概率較小可忽略不計(jì)時(shí)。LasVegas特點(diǎn)

可能不時(shí)地要冒著找不到解的風(fēng)險(xiǎn),算法要么返回正確的解,要么隨機(jī)決策導(dǎo)致一個(gè)僵局。 若算法陷入僵局,則使用同一實(shí)例運(yùn)行同一算法,有獨(dú)立的機(jī)會(huì)求出解。 成功的概率隨著執(zhí)行時(shí)間的增加而增加。Ch.4

LasVegas算法{{69LasVegas和Sherwood算法比較Ch.4Las算法的一般形式

LV(x,y,success)——x是輸入的實(shí)例,y是返回的參數(shù),success是布爾值,true表示成功,false表示失敗

p(x)——對于實(shí)例x,算法成功的概率

s(x)——算法成功時(shí)的期望時(shí)間

e(x)——算法失敗時(shí)的期望時(shí)間 一個(gè)正確的算法,要求對每個(gè)實(shí)例x,p(x)>0,更好的情況是:Ch.4

LasVegas算法70算法的一般形式Ch.4LasVegas算法70

Obstinate(x){ repeat LV(x,y,success); untilsuccess; returny;}

設(shè)t(x)是算法obstinate找到一個(gè)正確解的期望時(shí)間,則

若要最小化t(x),則需在p(x),s(x)和e(x)之間進(jìn)行某種折衷,例如,若要減少失敗的時(shí)間,則可降低成功的概率p(x)。Ch.4

LasVegas算法71 Obstinate(x){Ch.4LasVegas傳統(tǒng)的回溯法

§4.18后問題72傳統(tǒng)的回溯法§4.18后問題72

置當(dāng)前行為第1行,當(dāng)前列為第1列,即i←j←1; whilei≤8do{//當(dāng)前行號(hào)≤8

檢查當(dāng)前行:從當(dāng)前列j起向后逐列試探,尋找安全列號(hào);

if找到安全列號(hào)then{

放置皇后,將列號(hào)記入棧,并將下一行置為當(dāng)前行(i++); j←1;//當(dāng)前列置為1 }else{

退?;厮莸缴弦恍?,即i--; 移去該行已放置的皇后,以該皇后所在列的下一列作為當(dāng)前列;

} }§4.18后問題73 置當(dāng)前行為第1行,當(dāng)前列為第1列,即i←j←1;§4.174§4.18后問題2.LasVegas方法向量try[1..8]中存放結(jié)果

try[i]——表示第i個(gè)皇后放在(i,try[i])位置上try[1..k]稱為k-promising是指: 若k個(gè)皇后的位置(0≤k≤8):(1,try[1]),(2,try[2]),…,(k,try[k])互相不攻擊,則稱try[1..k]是k-promising的.

形式化:對,若有

(式1)

若式1成立,則:無行沖突:無須考慮,因?yàn)榈趇個(gè)皇后放在第i行,故同一行不會(huì)有兩皇后 7474§4.18后問題2.LasVegas方法7475§4.18后問題無列沖突:若對任意不同的兩行i、j,因?yàn)槠淞袛?shù)之差不為0,故任意兩皇后不可能在同一列上。135°對角線無沖突:和沖突時(shí)有: 即故任兩皇后不會(huì)在135°對角線上沖突。45°對角線無沖突:和沖突時(shí)有: 即try[i]-try[j]=i-j

故任兩皇后不會(huì)在45°對角線上沖突。綜上所述,式1成立時(shí)try[1..k]是k-promising。顯然,若k≤1,則向量try[1..k]是k-promising的,對8后問題,解是8-promising的。算法7575§4.18后問題無列沖突:若對任意不同的兩行i、j,因76QueensLv(success){//貪心的LV算法,所有皇后都是隨機(jī)放置

//若Success=true,則try[1..8]包含8后問題的一個(gè)解。

col,diag45,diag135←Φ;//列及兩對角線集合初值為空

k←0;//行號(hào)

repeat//try[1..k]是k-promising,考慮放第k+1個(gè)皇后

nb←0;//計(jì)數(shù)器,nb值為(k+1)th皇后的open位置總數(shù)

fori←1to8do{//i是列號(hào)

if(icol)and(i-k-1diag45)and(i+k+1diag135)then{ //列i對(k+1)th皇后可用,但不一定馬上將其放在第i列

nb←nb+1;

ifuniform(1..nb)=1then//或許放在第i列

j←i;//注意第一次uniform一定返回1,即j一定有值1 }//endif }//endfor,在nb個(gè)安全的位置上隨機(jī)選擇1個(gè)位置j放置之7676QueensLv(success){//77§4.18后問題

if(nb>0)then{//nb=0時(shí)無安全位置,第k+1個(gè)皇后尚未放好

//在所有nb個(gè)安全位置上,(k+1)th皇后選擇位置j的概率為1/nb k←k+1;//try[1..k+1]是(k+1)-promisingtry[k]←j;//放置(k+1)th個(gè)皇后

col←col∪{j};

diag45←diag45∪{j-k};

diag135←diag135∪{j+k};

}//endifuntil(nb=0)or(k=8);//當(dāng)前皇后找不到合適的位置或try是

//8-promising時(shí)結(jié)束。

success←(nb>0);}7777§4.18后問題 if(nb>0)then{/78§4.18后問題分析設(shè)p是成功的概率(一次成功)

s:成功時(shí)搜索的結(jié)點(diǎn)的平均數(shù)(1個(gè)皇后放好算是搜索樹上的1個(gè)結(jié)點(diǎn))e:失敗時(shí)搜索的結(jié)點(diǎn)的平均數(shù)。顯然s=9(空向量try算在內(nèi)), p和e理論上難于計(jì)算,但實(shí)驗(yàn)用計(jì)算機(jī)可以計(jì)算出:

p=0.1293… e=6.971…

在重復(fù)上述算法,直至成功時(shí)(相當(dāng)于obstinate的時(shí)間),所搜索的平均結(jié)點(diǎn)數(shù): 大大優(yōu)于回溯法,回溯法約為114個(gè)結(jié)點(diǎn)才能求出一個(gè)解。Ex.證明:當(dāng)放置(k+1)th皇后時(shí),若有多個(gè)位置是開放的,則算法QueensLV選中其中任一位置的概率相等。7878§4.18后問題分析7879§4.18后問題問題及改進(jìn)消極:LV算法過于消極,一旦失敗,從頭再來樂觀:回溯法過于樂觀,一旦放置某個(gè)皇后失敗,就進(jìn)行系統(tǒng)回退一步的策略,而這一步往往不一定有效。

折中:會(huì)更好嗎?一般情況下為此。 先用LV方法隨機(jī)地放置前若干個(gè)結(jié)點(diǎn),例如k個(gè)。 然后使用回溯法放置后若干個(gè)結(jié)點(diǎn),但不考慮重放前k個(gè)結(jié)點(diǎn)。 若前面的隨機(jī)選擇位置不好,可能使得后面的位置不成功,如若前兩個(gè)皇后的位置是1、3。 隨機(jī)放置的皇后越多,則后續(xù)回溯階段的平均時(shí)間就越少,失敗的概率也就越大。7979§4.18后問題問題及改進(jìn)7980§4.18后問題改進(jìn)算法

折中算法只需將QueensLV的最后兩行改為:

untilnb=0ork=stepVegas;

if(nb>0)then//已隨機(jī)放好stopVegas個(gè)皇后

backtrace(k,col,diag45,diag135,success); else success←false;

stepVegas——控制隨機(jī)放置皇后的個(gè)數(shù),如何選擇?改進(jìn)算法的試驗(yàn)結(jié)果:

8080§4.18后問題改進(jìn)算法 8081

純回溯時(shí)間:40ms stepVegas=2or3:10ms(平均) 純貪心LV:23ms(平均) 結(jié)論:一半略少的皇后隨機(jī)放置較好。StepVegaspset01114—1141139.63—39.6320.87522.5339.6728.2030.493113.4815.1029.0140.261810.318.7935.1050.16249.337.2946.9260.13579.056.9853.5070.129396.9755.9380.129396.9753.938181 純回溯時(shí)間:40msStepVegaspset011182§4.18后問題-問題1:為什么僅隨機(jī)放一個(gè)皇后,其效果就會(huì)大大優(yōu)于純回溯方法?8282§4.18后問題-問題1:為什么僅隨機(jī)放一個(gè)皇后,其效83§4.18后問題-問題2:預(yù)先隨機(jī)選幾個(gè)皇后放置為好?

由于解缺乏規(guī)律性(至少在皇后數(shù)不等于4k+2,k為某整數(shù)時(shí)),故求出stepVegas的最優(yōu)值較難,但是找到一個(gè)較好(不一定是最優(yōu))的stepVegas還是可以的。12皇后:

StepVegaspset時(shí)間01262—262125ms50.503933.8847.2380.3937ms120.04651310.2222.11基本與純回溯相同8383§4.18后問題StepVegaspset時(shí)間012684§4.18后問題在AppleII機(jī)器上,20個(gè)皇后:確定性的回溯算法:找到第一個(gè)解的時(shí)間大于2個(gè)小時(shí)。概率算法,隨機(jī)地放置前10個(gè)皇后:5分半鐘找到36個(gè)不同的解。后者找一個(gè)接比前者大約快1000倍!-Obstinate算法在何時(shí)無限循環(huán)? 當(dāng)問題不存在解時(shí)。 對于n皇后,要求n>=4,即問題至少有一個(gè)解存在時(shí),Obstinate算法才有可能結(jié)束。Ex.寫一算法,求n=12~20時(shí)最優(yōu)的StepVegas值。8484§4.18后問題在AppleII機(jī)器上,20個(gè)皇后:85§4.2模p平方根定義1:設(shè)p是一個(gè)奇素?cái)?shù),若整數(shù)x∈[1,p-1]且存在一個(gè)整數(shù)y,使

溫馨提示

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

評論

0/150

提交評論