當前位置:首頁 » 操作系統 » 演算法的發現

演算法的發現

發布時間: 2022-06-22 02:37:12

① 你在編程時發現過哪些非常精妙的演算法

用一個值記錄出現的數,一個值記錄出現次數,若下一個數等於記錄的數,則出現次數+1,若不等,則-1,當出現次數被減到0時,替換記錄的數,並把出現次數記為1,那麼最後,因為不同的數出現次數一定抵不過相同數出現次數,所以最終遍歷完數組,一定是存儲著次數超過數組大小一半的ans,並且出現次數還大於等於1。

② 12.6÷6=的演算法你發現了什麼

12.6/6=126/60=2.1

③ RSA演算法的基本含義

RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種「由已知加密密鑰推導出解密密鑰在計算上是不可行的」密碼體制。
在公開密鑰密碼體制中,加密密鑰(即公開密鑰)PK是公開信息,而解密密鑰(即秘密密鑰)SK是需要保密的。加密演算法E和解密演算法D也都是公開的。雖然解密密鑰SK是由公開密鑰PK決定的,但卻不能根據PK計算出SK。
正是基於這種理論,1978年出現了著名的RSA演算法,它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網路伺服器中注冊。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送信息時,常採用傳統加密方法與公開密鑰加密方法相結合的方式,即信息採用改進的DES或IDEA對話密鑰加密,然後使用RSA密鑰加密對話密鑰和信息摘要。對方收到信息後,用不同的密鑰解密並可核對信息摘要。
RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰演算法,從提出到現今的三十多年裡,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
SET(Secure Electronic Transaction)協議中要求CA採用2048bits長的密鑰,其他實體使用1024比特的密鑰。RSA密鑰長度隨著保密級別提高,增加很快。下表列出了對同一安全級別所對應的密鑰長度。 保密級別 對稱密鑰長度(bit) RSA密鑰長度(bit) ECC密鑰長度(bit) 保密年限 80 80 1024 160 2010 112 112 2048 224 2030 128 128 3072 256 2040 192 192 7680 384 2080 256 256 15360 512 2120 這種演算法1978年就出現了,它是第一個既能用於數據加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:Ron Rivest, Adi Shamir 和 Leonard Adleman。早在1973年,英國國家通信總局的數學家Clifford Cocks就發現了類似的演算法。但是他的發現被列為絕密,直到1998年才公諸於世。
RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。
RSA的演算法涉及三個參數,n、e1、e2。
其中,n是兩個大質數p、q的積,n的二進製表示時所佔用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密鑰對。其中(n,e1)為公鑰,(n,e2)為私鑰。
RSA加解密的演算法完全相同,設A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n;(公鑰加密體制中,一般用公鑰加密,私鑰解密)
e1和e2可以互換使用,即:
A=B^e1 mod n;B=A^e2 mod n;

④ 「演算法時代」到來,為何演算法服務人類並未被實現

一開始演算法只是服務於人類的,但隨著網路的發達以及智能地推廣,人們驚訝的發現自己正在慢慢依賴演算法乃至無法失去它。

好像在上世紀90年代當計算機深藍贏了大師之後,當時就有人提出智能電腦也許終究有一天將主導人類。而它的初衷只是發明出來,幫助人們生活在一個更加便利的環境下,人是主導它,或者說控制它的,它被發明出來也只是服務於人類的,但是隨著時間的推移會逐漸發現當它被賦予了的各種演算法以及不斷更新之後,開始會學習了,它產生的某種意義上的主導性,而這一點可能會將人類擺在一個尷尬的位置,因為人類將無法完全操控它。

久而久之的這種演算法讓人們變得越來越懶惰了,人們不願去自主思考,因為智能設備會推送給人類精準的信息,這些信息就是人類所需要的,它們已經自動排除了人類所不感興趣的無用信息了。

⑤ 通過對簡便演算法的探究,你發現了什麼

我發現了簡便方法不僅很方便的算出答案更能幫助自己有快速解題技巧

⑥ 遺傳演算法研究進展

遺傳演算法[56,53]研究的興起是在20世紀80年代末和90年代初期,但它的歷史起源可追溯到20世紀60年代初期。早期的研究大多以對自然遺傳系統的計算機模擬為主。早期遺傳演算法的研究特點是側重於對一些復雜的操作的研究。雖然其中像自動博弈、生物系統模擬、模式識別和函數優化等給人以深刻的印象,但總的來說這是一個無明確目標的發展時期,缺乏帶有指導性的理論和計算工具的開拓。這種現象直到20世紀70年代中期由於Holland和De Jong的創造性研究成果的發表才得到改觀。當然,早期的研究成果對於遺傳演算法的發展仍然有一定的影響,尤其是其中一些有代表性的技術和方法已為當前的遺傳演算法所吸收和發展。

在遺傳演算法作為搜索方法用於人工智慧系統中之前,已有不少生物學家用計算機來模擬自然遺傳系統。尤其是Fraser的模擬研究,他於1962年提出了和現在的遺傳演算法十分相似的概念和思想。但是,Fraser和其他一些學者並未認識到自然遺傳演算法可以轉化為人工遺傳演算法。Holland教授及其學生不久就認識到這一轉化的重要性,Holland認為比起尋找這種或那種具體的求解問題的方法來說,開拓一種能模擬自然選擇遺傳機制的帶有一般性的理論和方法更有意義。在這一時期,Holland不但發現了基於適應度的人工遺傳選擇的基本作用,而且還對群體操作等進行了認真的研究。1965年,他首次提出了人工遺傳操作的重要性,並把這些應用於自然系統和人工系統中。

1967年,Bagley在他的論文中首次提出了遺傳演算法(genetic algorithm)這一術語,並討論了遺傳演算法在自動博弈中的應用。他所提出的包括選擇、交叉和變異的操作已與目前遺傳演算法中的相應操作十分接近。尤其是他對選擇操作做了十分有意義的研究。他認識到,在遺傳進化過程的前期和後期,選擇概率應合適地變動。為此,他引入了適應度定標(scaling)概念,這是目前遺傳演算法中常用的技術。同時,他也首次提出了遺傳演算法自我調整概念,即把交叉和變異的概率融於染色體本身的編碼中,從而可實現演算法自我調整優化。盡管Bagley沒有對此進行計算機模擬實驗,但這些思想對於後來遺傳演算法的發展所起的作用是十分明顯的。

在同一時期,Rosenberg也對遺傳演算法進行了研究,他的研究依然是以模擬生物進化為主,但他在遺傳操作方面提出了不少獨特的設想。1970年Cavicchio把遺傳演算法應用於模式識別中。實際上他並未直接涉及到模式識別,而僅用遺傳演算法設計一組用於識別的檢測器。Cavicchio對於遺傳操作以及遺傳演算法的自我調整也做了不少有特色的研究。

Weinberg於1971年發表了題為《活細胞的計算機模擬》的論文。由於他和Rosenberg一樣注意於生物遺傳的模擬,所以他對遺傳演算法的貢獻有時被忽略。實際上,他提出的多層次或多級遺傳演算法至今仍給人以深刻的印象。

第一個把遺傳演算法用於函數優化的是Hollstien。1971年他在論文《計算機控制系統中的人工遺傳自適應方法》中闡述了遺傳演算法用於數字反饋控制的方法。實際上,他主要是討論了對於二變數函數的優化問題。其中,對於優勢基因控制、交叉和變異以及各種編碼技術進行了深入的研究。

1975年在遺傳演算法研究的歷史上是十分重要的一年。這一年,Holland出版了他的著名專著《自然系統和人工系統的適配》。該書系統地闡述了遺傳演算法的基本理論和方法,並提出了對遺傳演算法的理論研究和發展極為重要的模式理論(schemata theory)。該理論首次確認了結構重組遺傳操作對於獲得隱並行性的重要性。直到這時才知道遺傳操作到底在干什麼,為什麼又幹得那麼出色,這對於以後陸續開發出來的遺傳操作具有不可估量的指導作用。

同年,De Jong完成了他的重要論文《遺傳自適應系統的行為分析》。他在該論文中所做的研究工作可看作是遺傳演算法發展進程中的一個里程碑,這是因為他把Holland的模式理論與他的計算實驗結合起來。盡管De Jong和Hollstien一樣主要側重於函數優化的應用研究,但他將選擇、交叉和變異操作進一步完善和系統化,同時又提出了諸如代溝(generation gap)等新的遺傳操作技術。可以認為,De Jong的研究工作為遺傳演算法及其應用打下了堅實的基礎,他所得出的許多結論迄今仍具有普遍的指導意義。

進入20世紀80年代,遺傳演算法迎來了興盛發展時期,無論是理論研究還是應用研究都成了十分熱門的課題。尤其是遺傳演算法的應用研究顯得格外活躍,不但它的應用領域擴大,而且利用遺傳演算法進行優化和規則學習的能力也顯著提高,同時產業應用方面的研究也在摸索之中。此外一些新的理論和方法在應用研究中亦得到了迅速的發展,這些無疑均給遺傳演算法增添了新的活力。

隨著應用領域的擴展,遺傳演算法的研究出現了幾個引人注目的新動向:一是基於遺傳演算法的機器學習(Genetic Base Machine Learning),這一新的研究課題把遺傳演算法從歷來離散的搜索空間的優化搜索演算法擴展到具有獨特的規則生成功能的嶄新的機器學習演算法。這一新的學習機制對於解決人工智慧中知識獲取和知識優化精煉的瓶頸難題帶來了希望。二是遺傳演算法正日益和神經網路、模糊推理以及混沌理論等其他智能計算方法相互滲透和結合,這對開拓21世紀中新的智能計算技術將具有重要的意義。三是並行處理的遺傳演算法的研究十分活躍。這一研究不僅對遺傳演算法本身的發展,而且對於新一代智能計算機體系結構的研究都是十分重要的。四是遺傳演算法和另一個稱為人工生命的嶄新研究領域正不斷滲透。所謂人工生命即是用計算機模擬自然界豐富多彩的生命現象,其中生物的自適應、進化和免疫等現象是人工生命的重要研究對象,而遺傳演算法在這方面將會發揮一定的作用。五是遺傳演算法和進化規劃(Evolution Programming,EP)以及進化策略(Evolution Strategy,ES)等進化計算理論日益結合。EP和ES幾乎是和遺傳演算法同時獨立發展起來的,同遺傳演算法一樣,它們也是模擬自然界生物進化機制的智能計算方法,既同遺傳演算法具有相同之處,也有各自的特點。

隨著遺傳演算法研究和應用的不斷深入和發展,一系列以遺傳演算法為主題的國際會議十分活躍。從1985年開始,國際遺傳演算法會議,即ICGA(International Conference on Genetic Algorithm)每兩年舉行一次。在歐洲,從1990年開始也每隔一年舉辦一次類似的會議,即 PPSN(Parallel Problem Solving from Nature)會議。除了遺傳演算法外,大部分有關ES和EP的學術論文也出現在PPSN中。另外,以遺傳演算法的理論基礎為中心的學術會議有FOGA(Foundation of Genetic Algorithm)。它也是從1990年開始,隔年召開一次。這些國際學術會議論文集中反映了遺傳演算法近些年來的最新發展和動向。

⑦ 你覺得如何選擇演算法才能讓連減計算變得簡便說說你的發現

連減題要用簡便法計算,有兩個思路,一個思路是把減數加起來,可以湊成整十或者整百,或者整千 ,再用被減數去減。比如:136-53-47
=136-(53+47)
=136-100
=36
另一個思路是把減數的位置移動一下,先減好計算的減數,再減復雜的減數。比如:123-56-23
=123-23-56
=100-56
=44

⑧ 列舉演算法層次的幾項重要工作。

1 引言
數據准備是KDD過程中一個很重要的過程,良好的數據准備過程能夠為數據挖掘提供清潔、可靠、穩定的數據環境,以保證挖掘演算法的有效實施。在線分類理想的數據環境應具備以下幾個特點: (1)數據應包含豐富的屬性信息,應具備可靠性和穩定性;
(2)數據的屬性應具有對於分類任務的相關性。大多數的分類任務只與資料庫中部分屬性有關,多餘的、無關的屬性介入分類,常會減慢甚至錯誤引導分類過程,應此必須去掉無關屬性。
(3)數據應具有高層數據信息,以發現清晰的、高層的、具有統計意義的分類規則。在本文的研究中,為了使數據環境達到上述要求,在數據准備階段採用了數據泛化的策略,這個策略用概念層次作為背景,結合了OLAP技術與Jiawei Han等人的面向屬性歸納的方法,明顯提高了工作效率。
2 面向屬性歸納中的基本泛化策略和演算法
隨著KDD研究的逐步深入, Jiawei Han等人提出了一種基於歸納的知識發現方法——面向屬性的歸納方法[1][2][3],這方法的特點是能夠根據概念層次將低概念層的數據泛化到相應的高層次的概念層,以發現多層的或高層的規則。面向屬性歸納方法是一種有效的、完整的知識發現演算法,該演算法將機器學習中示例學習方法與資料庫的操作技術相結合[1]。演算法的一個關鍵就是攀升屬性所對應的概念層次樹以泛化原始數據集的數據到用戶感興趣的概念層上,減少數據集的大小,從而降低知識發現過程的計算復雜度。面向屬性歸納方法的進行,必須有兩個前提:

(1)必須由用戶提出明確的知識發現任務。在Jiawei Han等人的研究中,採用了一種類似SQL語句的知識發現語句DMQL[4]用來讓用戶定義發現任務,下面便是一個分類任務的語句描述:

要說明的是在本文的研究中採用了一個可視化的向導來引導用戶定義發現任務,但為了文章描述方便,在本文的描述中,借用了DMQL來描述發現任務
(2)與發現任務相關的屬性應有概念層次,如上文所述,數值型的概念層次可以自動提取,給定的概念層次可以用戶的興趣和發現任務的不同而進行動態調整。
在具備以上兩個前提時,面向屬性歸納採用了以下一些泛化策略。

⑨ 演算法有哪些特點它有哪些特徵它和程序的主要區別是什麼

演算法是處理解決問題的思路及辦法,程序語言是按照一定語法把演算法表達來。
打個比方,你頭腦里有了一套新思想,一個新發現,你可以用中文寫出來,也可以用英文寫出來,讓大家明白。思想和發現可以比作是演算法,用中文或英文可以比作是程序語言。
因此核心是演算法,但程序語言是實現演算法的載體。在計算機等系統中,演算法是處理某一問題的思路方法,而程序語言能具體表達演算法從而使之運行起來通過演算法需要完成的任務。

熱點內容
多次編譯仍然啟動不了 發布:2024-04-28 06:33:17 瀏覽:598
絕地求生怎麼調伺服器2020 發布:2024-04-28 06:28:14 瀏覽:802
虛擬主機和輕雲伺服器 發布:2024-04-28 05:34:20 瀏覽:774
電腦伺服器的品牌型號怎麼查 發布:2024-04-28 04:33:06 瀏覽:138
文件上傳ui 發布:2024-04-28 04:07:14 瀏覽:483
我的世界pe登伺服器 發布:2024-04-28 04:05:58 瀏覽:672
如何監控資料庫 發布:2024-04-28 03:44:07 瀏覽:28
測溫一體機怎麼配置 發布:2024-04-28 03:11:56 瀏覽:591
大生活迅雷下載ftp 發布:2024-04-28 03:11:09 瀏覽:511
python如何生成隨機數 發布:2024-04-28 02:21:59 瀏覽:169