1. 在計算機科學中,有哪些非常巧妙的演算法
分支界定演算法(Branch and Bound)——在多種最優化問題中尋找特定最優化解決方案的演算法,特別是針對離散、組合的最優化。Buchberger演算法——一種數學演算法,可將其視為針對單變數最大公約數求解的歐幾里得演算法和線性系統中高斯消元法的泛化。
動態規劃演算法(Dynamic Programming)——展示互相覆蓋的子問題和最優子架構演算法
歐幾里得演算法(Euclidean algorithm)——計算兩個整數的最大公約數。最古老的演算法之一,出現在公元前300前歐幾里得的《幾何原本》。
期望-最大演算法(Expectation-maximization algorithm,又名EM-Training)——在統計計算中,期望-最大演算法在概率模型中尋找可能性最大的參數估算值,其中模型依賴於未發現的潛在變數。EM在兩個步驟中交替計算,第一步是計算期望,利用對隱藏變數的現有估計值,計算其最大可能估計值;第二步是最大化,最大化在第一步上求得的最大可能值來計算參數的值
2. 計算機專業本科生做畢業論文一般用什麼演算法
一個程序的核心在於演算法。比如說打開一個軟體和運行一個軟體的速度在計算機硬體性能相同情況下,軟體的演算法起到了幾近決定性作用,所有的計算機軟體和硬體的編程都是需要演算法的,就算一個hello world程序雖然我們編時候沒有用到演算法但是在編譯他和運行再屏幕顯示的時候就是演算法了。演算法是計算機乃至自然界的核心,如果知道人腦的演算法,就可以製造出人工智慧的軟體。
演算法太多,也就不全部列舉出來了,具體的還有用法,你自己看下書或去網上找下,都應該可以找到的:比如:貪心演算法,蟻群演算法,遺傳演算法,進化演算法,基於文化的遺傳演算法,禁忌演算法,蒙特卡洛演算法,混沌隨機演算法,序貫數論演算法,粒子群演算法,模擬退火演算法等等。
3. 演化計算的分支
自計算機出現以來,生物模擬便成為計算機科學領域的一個組成部分。其目的之一是試圖建立一種人工的模擬環境,在這個環境中使用計算機進行模擬,以便能夠更好地了解人類自己以及人類的生存空間;另一個目的則是從研究生物系統出發,探索產生基本認知行為的微觀機理,然後設計具有生物智能的機器或模擬系統,來解決復雜問題。如,神經網路、細胞自動機和演化計算都是從不同角度對生物系統進行模擬而發展起來的研究方向。演化計算最初具有三大分支:遺傳演算法(GeneticAlgorithm,GA)、演化規劃(EvolutionaryProgramming、EP)和演化策略(EvolutionStrategy,ES)。上世紀90年代初,在遺傳演算法的基礎上又形成了一個新的分支:遺傳程序設計(GeneticProgramming,GP)。雖然這幾個分支在演算法實現上有一些細微差別,但是它們都有一個共同的特點,即都是藉助生物演化的思想及原理來解決實際問題的。
(1)遺傳演算法
上世紀50年代末人們嘗試把計算機科學與進化論結合起來,但由於缺乏一種通用的編碼方案,人們只能依賴變異而非交配來產生新的基因結構,加上當時只有少數計算機可以滿足運算速度的要求,故而收效甚微。到60年代中期,美國Michigan大學的JohnHolland在A.S.Fraser和H.J.Bremermann等人工作的基礎上提出了位串編碼技術。這種編碼技術不但適於變異操作。而已同樣適於交配(即雜交)操作。並且強調將交配作為主要的遺傳操作。遺傳演算法的通用編碼技術和簡單有效的遺傳操作意義重大,並為其廣泛、成功的應用奠定了堅實的基礎。Holland遺傳演算法被稱為簡單遺傳演算法(SGA)。其操作對象是一群二進制串(稱為染色體、個體)。在解決實際問題中,每個染色體都對應問題的一個可行解。從初始種群出發,使用雜交和變異來產生下一代種群。如此一代代進行演化。直到達到設定好的終止條件。需要指出的是:目前的遺傳演算法已不再僅僅局限於二進制編碼。
(2) 演化策略
上世紀60年代初,柏林工業大學的學生I.Rechenberg和H.P.Schwefel在進行風洞實驗時,由於用傳統的方法難以對設計中描述物體形狀的參數進行優化。因而利用生物遺傳和變異的思想來改變參數值,並獲得了較好的效果。隨後,他們對這種方法進行了深入的研究和探索。形成了演化計算的另一個重要分支——演化策略。
(3)演化規劃
演化規劃的方法最初是由L.J.Fogel等提出在上世紀60年代。他們在研究人工智慧的時候發現,智能行為就是具有感應其所處環境的狀態、並按給定目標自動做出適當響應的能力。在研究中,他們將模擬環境描述成由有限字元集中的符號組成的序列。於是問題就被轉化為,如何根據當前觀察到的符號序列做出響應,以獲得最大收益。這里,收益主要由環境中將要出現的下一個符號及預先定義好的效益目標來確定。他們將此方法應用到數據診斷、模式識別和分類及控制系統的設計等問題中,取得了較好的結果。
(4)遺傳程序設計
自計算機出現以來,計算機科學的一個方向性目標就是讓計算機自主進行程序設計,即只要告訴計算機要解決的問題,而不需要告訴它具體如何去做。遺傳程序設計便是在該領域的一種嘗試。它採用演化演算法中遺傳演算法的基本思想,但使用一種更為靈活的表示方式——使用分層結構來表示解空間。這些分層結構有葉節點和中間節點,葉結點是所需解決問題的原始變數,中間結點則是組合這些原始變數的函數。這樣,每個分層結構對應問題的一個可行解。遺傳程序設計就是使用一些遺傳操作動態地改變這些結構,以獲得解決該問題的可行的計算機程序。遺傳程序設計的思想是Stanford大學的J.R.Koza在上世紀90年代初提出的。
4. 進化優化演算法-基於仿生和種群的計算機智能方法 丹 西蒙著 習題答案誰有啊 有償請教!
DE 演算法主要用於求解連續變數的全局優化問題。
先看基本定義:
是一種模擬生物進化的隨機模型,通過反復迭代,使得那些適應環境的個體被保存了下來。但相比於進化演算法,DE保留了基於種群的全局搜索策略,採用實數編碼、基於差分的簡單變異操作和一對一的競爭生存策略,降低了遺傳操作的復雜性。同時,DE特有的記憶能力使其可以動態跟蹤當前的搜索情況,以調整其搜索策略,具有較強的全局收斂能力和魯棒性,且不需要藉助問題的特徵信息,適於求解一些利用常規的數學規劃方法所無法求解的復雜環境中的優化問題。目前,DE已經在許多領域得到了應用,譬如人工神經元網路、化工、電力、機械設計、機器人、信號處理、生物信息、經濟學、現代農業、食品安全、環境保護和運籌學等。
5. 進化演算法的簡介
進化演算法包括遺傳演算法、遺傳規劃、進化規劃和進化策略等等。進化演算法的基本框架還是簡單遺傳演算法所描述的框架,但在進化的方式上有較大的差異,選擇、交叉、變異、種群控制等有很多變化,進化演算法的大致框圖可描述如右圖所示:
同遺傳演算法一樣,進化演算法的收斂性也有一些結果,文獻證明了在保存最優個體時通用的進化計算是收斂的,但進化演算法的很多結果是從遺傳演算法推過去的。
遺傳演算法對交叉操作要看重一些,認為變異操作是演算法的輔助操作;而進化規劃和進化策略認為在一般意義上說交叉並不優於變異,甚至可以不要交叉操作。
6. 電腦可以代替人類進行發明創造
人類進行發明創造時,很多時候都依賴於意外的發現。計算機能幫助我們收獲更多的好運嗎?
寶貴且難尋的靈感
1899年的一個夏日,一位美國自行車修理工從內胎包裝盒裡抽出一個自行車內胎並遞給他的顧客。之後這兩個人開始閑聊起來,而這位修理工開始隨意地玩弄內胎包裝盒。當抓住包裝盒的兩端並來回扭動時,他發現這就可以很順暢地改變包裝盒的形態。(你可以找一個牙膏盒來試一試。)這是一個微不足道的發現,但它卻足以改變整個世界。
20世紀90年代,美國斯坦福大學的計算機科學家約翰·科扎所領導的研究小組,對計算機輔助發明進行了開創性的研究。他們使用了一種模擬自然界中進化的計算機演算法,即所謂的「遺傳演算法」。使用遺傳演算法時,計算機把一種方案被看作一個基因組,而基因組內的基因代表著如電壓、焦距或材料密度等的各種參數。開始時,計算機會從初始的基因庫中隨機產生一些基因組樣品,盡管它們可能不是一個很好的方案。通過對這些基因組進行雜交,並引入「變異」,這樣每一個後代既包含一些來自上一代的特徵,也包含一些可能有益的新特徵。然後給這些後代基因組一個給定的任務,來測試它們。挑選出最好的,作為下一輪育種的基因庫。這樣,一次又一次地重復這個過程,就像自然選擇一樣,最佳的方案最終會生存下來。
科扎的研究小組進行了一些測試,看這種遺傳演算法是否能重新發明出下面這些基本的電路:那些由貝爾實驗室在20世紀20年代和30年代所開發的過濾器、放大器以及反饋控制系統。最終,他們的測試成功了。他們的遺傳演算法能重新發明出經典的貝爾實驗室電路。
如果你認為他們只是太走運而已的話,那麼他們還有許多成功的例子。例如,他們使用這個遺傳演算法對應用於各種光學儀器的6種目鏡進行了各種組合的嘗試。他們的演算法不僅再現了所有的光學系統,而且還對一些原設計進行了改進。其中,這種改進可以用來申請專利的。
遺傳演算法具有很強的通用性,在由美國計算機協會每年舉辦一次的遺傳與進化計算會議上,研究人員都會展示利用遺傳演算法所做出的發明。例如,在2015年的會議上,一個來自義大利的研究團體利用遺傳演算法,為一個有著4個觸角的水下無人機找到了一種高效游泳的姿態。而來自歐洲航天局的高級概念實驗室的工程師們,利用遺傳演算法為未來清理低軌道太空垃圾的太空設備設計出了一個最省油的路線。
每年會議都會頒發一個最大獎項,叫做「人類競爭力獎」,來獎給那些被認為超過人類聰明才智的發明。2004年,首屆人類競爭力獎被授予了一個奇形怪狀的天線。這個發明是由美國宇航局資助的,它看起來像一棵繁茂且怪異的樹,有著很多醜陋的分支,但是它工作起來極為出色。這種玩意肯定不是人類能設計出的。
而這往往會成為問題的關鍵。當計算機用於輔助發明時,它們不會被人類那些先入為主的觀念所蒙蔽,所以計算機可以做出人類從來都沒有想過的發明。
而2015年的「人類競爭力獎」頒給了一種提高超低功耗計算機運算準確度的方法。這種計算機是建立在簡單的邏輯電路上的,耗電少但會產生很多運算錯誤。捷克布爾諾科技大學的計算機科學家利用遺傳演算法使得軟體不斷進化,最終找到一種簡單的辦法就能夠進行糾錯。他們的研究成果是一個綠色的晶元,適用於計算準確度要求不高的程序,例如流媒體音樂或視頻。
幫助你進行橫向思維
不過使用遺傳演算法,你仍有一個需要面對的問題:你需要提前知道關於你所發明東西的所有細節,這樣你的演算法才能以富有成效的方式改進它。這意味著,遺傳演算法往往是善於優化已有的發明,而這並不需要很大的創新,這也通常不會帶來具有巨大的商業價值的發明。那麼,還有什麼辦法,使得計算機能給我們帶來更大的創新呢?
發明家發明一項新東西,常常是注意到了許多人所忽視的事情。如果計算機能讓人們注意到問題中容易忽視的事情,那麼我們就可以利用它來產生一個極具創新的發明。而最近,位於美國的創新加速器公司開發了一種軟體,就可以用來幫助發明者注意容易錯過的事情。那麼,他們的軟體是怎麼做到這一點的呢?
他們的軟體可以讓你用人類的語言來描述問題,然後它會把問題拆為大量相關的短語,並使用這些在專利資料庫中進行搜索,來尋找哪些發明解決了類似的問題。最重要的是,這種軟體還會在其他領域里尋找類似的問題。換句話說,軟體能幫助你進行橫向思維。
在一個例子中,測試人員要求軟體找到一種辦法,減少橄欖球運動員比賽時產生腦震盪的風險。軟體把問題的描述拆開,然後搜索下面的關鍵詞來尋找解決方案:減少能量、吸收能量、交換力、減少動量、反力、改變方向、擊退能量。最終根據「擊退能量」的搜索結果,公司最終發明出了一種包含強磁體的頭盔,這種頭盔可以彼此發生排斥,這樣可有效地減少頭盔發生嚴重的沖撞。但不幸的是,這個發明在幾周之前就被其他人申請了專利。不過,這個例子表明,創新加速器的軟體的確能有很大的幫助。
在另一個例子中,軟體成功地復制了滑雪板製造商最近的創新發明。其問題是要找到一種方法來減少滑雪時滑雪板的振動,使得滑雪者可以更快更安全地滑雪。製造商偶然發現了解決這個問題的答案,而創新加速器的軟體也能夠迅速地找到它。小提琴製造商已經有辦法減少樂器的額外振動來產生純凈的音樂,而軟體會提示這種辦法可以應用於滑雪板。
創新加速器的首席技術官托尼·麥卡弗里認為,90%的問題都已經在其他領域里得到了解決,你所要做的就是找到它們。他現在正計劃使用IBM的超級計算機沃森,對數以百萬計的文件進行分析,來幫助軟體對專利和技術論文有更加深入的了解。
而另一家名為Iprova的瑞士科技公司,也發明了「計算機加速發明」技術來幫助發明者進行橫向思考,而且點子的來源遠遠超出了專利文件。該公司不願透露它們的軟體究竟是如何工作的,但是在2013年的一項專利表明,其軟體會為客戶提供「建議的創新機會」,來源不僅限於專利資料庫和技術期刊,而且還包括博客、在線新聞網站和社交網路。
特別有意思的是,Iprova公司的軟體還可以隨著互聯網上熱門話題的改變而改變其建議。這樣,它會帶來更多富有成效的建議。Iprova公司的軟體每個月可以產生上百個高質量的發明,然後公司會與客戶溝通,客戶可以選擇一些來申請專利。Iprova公司的客戶主要來自醫療保健、自動化和電信行業,其中的一個客戶就是飛利浦——一家跨國技術公司。從這就可以看出Iprova公司的事業蒸蒸日上。
計算機發明遇到專利麻煩
然而,如果大部分的工作都是由計算機做的話,那麼這種事情可能會破壞專利制度本身。目前專利制度要求,只有當「具備通常技藝的人士」相信一項發明不是顯而易見的,這項發明才可能被授予專利權。但如果發明者只是用計算機發明出來的,那麼這項發明可能會被視為計算機的一個顯而易見的輸出結果,可能不具有申請專利的條件。
現在,這種擔憂已經在葯物的研發中變得嚴重起來。如果發現葯物的工具軟體變得如此強大,研究人員只需要負責監視軟體的活動,這會使整個葯物研發過程變成一件顯而易見的事情,那麼此時還能申請專利嗎?所以說,計算機輔助發明技術可能會使許多發明失去專利保護,這會大大打擊發明者的積極性。
但不管怎樣,在未來的發明的過程中,計算機的輔助將會發揮越來越重要的作用。計算機會加速技術的進步,還會帶來公平的競爭,使得許多人都可以成為發明家。雖然大家常說機會總是留給有準備的人,但是在現在,藉助計算機,我們可以大大增加意外發現出現的概率。換句話說,計算機能幫助我們收獲更多的好運。
(本文源自大科技*網路新說2015年第11期)
7. 電子計算機發展歷史是怎樣的
1946年在美國的賓夕法尼亞大學,誕生了世界上第一台電子計算機ENIAC。它是一個佔地170平方米、重30噸的龐然大物,由18000個電子管組成,每小時耗電量為140千瓦,每秒鍾可進行5000次加法運算。它的最重要的特點是,能按照大編寫的程序自動地進行計算。
從1946年至今,經過40多年的發展,電子計算機的運算速度越來越快,復雜程度越來越高,體積越來越小,更新周期越來越短。我國的「銀河」巨型計算機的運算速度已達到每秒1億次,國外的先進計算機的運算速度還要快。就機器本身來說,電子計算機已「進化」到第四代了。
第一代以電子管為主要元件。利用這一代計算機,人們把人造衛星送上了天。
第二代以晶體管構成基本電路。開始有了演算法語言和編譯系統。運算速度達每秒幾百萬次,體積、重量、耗電量、造價都大大減少。
第三代是中小規模集成電路計算機。這時已有操作系統,小型機廣泛應用,有了終端與網路,運算速度達每秒幾千萬次。
第四代是大規模集成電路組成的機器。體積與成本大幅度減少。這時製成了微型計算機,在工業、科學研究和家庭生活中廣泛應用。
第五代電子計算機實際是智能計算機,具有模仿人腦思維過程的能力。從1979年起,日本等國組織了各方面的專家,開始了對這種計算機的研製,現已取得初步進展。
8. 簡述計算機的發展歷程
第1代:電子管數字機(1946—1958年)
第2代:晶體管數字機(1958—1964年)
第3代:集成電路數字機(1964—1970年)
第4代:大規模集成電路機(1970年至今)
計算工具的演化經歷了由簡單到復雜、從低級到高級的不同階段,例如從「結繩記事」中的繩結到算籌、算盤計算尺、機械計算機等。它們在不同的歷史時期發揮了各自的歷史作用,同時也啟發了現代電子計算機的研製思想。
(8)計算機進化演算法擴展閱讀:
計算機發明者約翰·馮·諾依曼。計算機是20世紀最先進的科學技術發明之一,對人類的生產活動和社會活動產生了極其重要的影響,並以強大的生命力飛速發展。它的應用領域從最初的軍事科研應用擴展到社會的各個領域,已形成了規模巨大的計算機產業,帶動了全球范圍的技術進步,由此引發了深刻的社會變革,計算機已遍及一般學校、企事業單位,進入尋常百姓家,成為信息社會中必不可少的工具。
9. 計算機編程常用演算法有哪些
貪心演算法,蟻群演算法,遺傳演算法,進化演算法,基於文化的遺傳演算法,禁忌演算法,蒙特卡洛演算法,混沌隨機演算法,序貫數論演算法,粒子群演算法,模擬退火演算法。
模擬退火+遺傳演算法混合編程例子:
http://..com/question/43266691.html
自適應序貫數論演算法例子:
http://..com/question/60173220.html
10. 進化演算法的基本步驟
進化計算是基於自然選擇和自然遺傳等生物進化機制的一種搜索演算法。與普通的搜索方法一樣,進化計算也是一種迭代演算法,不同的是進化計算在最優解的搜索過程中,一般是從原問題的一組解出發改進到另一組較好的解,再從這組改進的解出發進一步改進。而且在進化問題中,要求當原問題的優化模型建立後,還必須對原問題的解進行編碼。進化計算在搜索過程中利用結構化和隨機性的信息,使最滿足目標的決策獲得最大的生存可能,是一種概率型的演算法。
一般來說,進化計算的求解包括以下幾個步驟:給定一組初始解;評價當前這組解的性能;從當前這組解中選擇一定數量的解作為迭代後的解的基礎;再對其進行操作,得到迭代後的解;若這些解滿足要求則停止,否則將這些迭代得到的解作為當前解重新操作。
以遺傳演算法為例,其工作步驟可概括為:
(1) 對工作對象——字元串用二進制的0/1或其它進制字元編碼 。
(2) 根據字元串的長度L,隨即產生L個字元組成初始個體。
(3) 計算適應度。適應度是衡量個體優劣的標志,通常是所研究問題的目標函數。
(4) 通過復制,將優良個體插入下一代新群體中,體現「優勝劣汰」的原則。
(5) 交換字元,產生新個體。交換點的位置是隨機決定的
(6) 對某個字元進行補運算,將字元1變為0,或將0變為1,這是產生新個體的另一種方法,突變字元的位置也是隨機決定的。
(7) 遺傳演算法是一個反復迭代的過程,每次迭代期間,要執行適應度計算、復制、交換、突變等操作,直至滿足終止條件。
將其用形式化語言表達,則為:假設α∈I記為個體,I記為個體空間。適應度函數記為Φ:I→R。在第t代,群體P(t)={a1(t),a2(t),…,an(t)}經過復制r(reproction)、交換c(crossover)及突變m(mutation)轉換成下一代群體。這里r、c、m均指宏運算元,把舊群體變換為新群體。L:I→{True, Flase}記為終止准則。利用上述符號,遺傳演算法可描述為:
t=0
initialize P(0):={ a1(0),a2(0),…,an(0)};
while(l(P(t))≠True) do
evaluate P(t):{ Φ(a1(t)), Φ(a2(t)),…,Φ(an(t))};
reproction: P′(t):=r(P(t));
crossover: P″(t):=c(P′(t));
mutation: P(t+1):= m(P″(t));
t=t+1;
end