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

演算法的規模

發布時間: 2025-01-17 12:34:25

演算法的時間復雜度是O(n²) 規模為n1 耗費時間t1 規模n2 耗費時間多少

你好!你的問題是演算法的時間復雜度是O(n²)規模為n1耗費時間t1,規模n2耗費時間多少?這是一個很好的問題,讓我們來詳細解答一下。
首先,時間復雜度為O(n²)的演算法,表示演算法的執行時間與輸入規模的平方成正比。因此,我們可以得出執行規模n2時的耗費時間t2 = k × n2²,其中k是常數。
為了求解常數k,我們可以利用給出的規模n1和耗費時間t1,因為我們知道t1 = k × n1²,所以k = t1 / n1²。將常數k代入上面的公式中,我們可以得到規模n2時的耗費時間為t2 = t1 × (n2/n1)²。
根據這個公式,我們可以計算出在輸入規模從n1增加到n2時,演算法的耗費時間增加的比例。如果我們知道了規模n1時演算法的耗費時間,那麼我們就可以用上面的公式預測規模n2時演算法的耗費時間。
需要注意的是,這個公式只適用於時間復雜度為O(n²)的演算法。如果演算法的時間復雜度不同,那麼需要使用不同的公式來計算。
希望我的解答能對你有所幫助!如果你還有其他問題,可以隨時問我。

Ⅱ 一文了解以太坊挖礦演算法及算力規模2020-09-09

以太坊網路中,想要獲得以太坊,也要通過挖礦來實現。當前以太坊也是採用POW共識機制,但是與比特幣的POW挖礦有點不一樣,以太坊挖礦難度是可以調節的。以太坊系統有一個特殊的公式用來計算之後的每個塊的難度。如果某個區塊比前一個區塊驗證的更快,以太坊協議就會增加區塊的難度。通過調整區塊難度,就可以調整驗證區塊所需的時間。

以太坊採用的是Ethash 加密演算法,在挖礦的過程中,需要讀取內存並存儲 DAG 文件。由於每一次讀取內寸的帶寬都是有限的,而現有的計算機技術又很難在這個問題上有質的突破,所以無論如何提高計算機的運算效率,內存讀取效率仍然不會有很大的改觀。因此,從某種意義上來說,以太坊的Ethash加密演算法具有「抗ASIC性」。

加密演算法的不同,導致了比特幣和以太坊的挖礦設備、算力規模差異很大。

目前,比特幣挖礦設備主要是專業化程度非常高的ASIC 礦機,單台礦機的算力最高達到了 112T/s(神馬M30S++礦機),全網算力的規模達到139.92EH/s。

以太坊的挖礦設備主要是顯卡礦機和定製GPU礦機,專業化的ASIC礦機非常少,一方面是因為以太坊挖礦演算法的「抗 ASIC 性」提高了研發ASIC礦機的門檻,另一方面是因為以太坊升級到2.0之後共識機制會轉型為PoS,礦機無法繼續挖。

和ASIC礦機相比,顯卡礦機在算力上相差了2個量級。目前,主流的顯卡礦機(8卡)算力約為420MH/s,比較領先的定製GPU礦機算力約在500M~750M,以太坊全網算力約為235.39TH/s。

從過去兩年的時間維度上看,以太坊的全網算力增長相對緩慢。

以太坊協議規定,難度的動態調整方式是使全網創建新區塊的時間間隔為15秒,網路用15秒時間創建區塊鏈,這樣一來,因為時間太快,系統的同步性就大大提升,惡意參與者很難在如此短的時間發動51%(也就是半數以上)的算力去修改歷史數據。

Ⅲ 演算法分析:如何分析一個演算法的效率好壞

當我們說演算法分析的時候我們在說什麼?(狹義的技術層面的定義):
演算法分析指的是: 對演算法在運行時間和存儲空間這兩種資源的利用效率進行研究
即時間效率和空間效率。

時間效率指演算法運行有多快;
空間效率指演算法運行時需要多少額外的存儲空間。
(時間效率也叫時間復雜度;空間效率也叫空間復雜度。)

在計算機時代早期,時間和空間這兩種資源都是及其昂貴的。但經過半個多世紀的發展,計算機的速度和存儲容量都已經提升了好幾個數量級。
現在空間效率已經不是我們關注的重點了,但時間效率的重要性並沒有減弱到這種可以忽略的程度。

所以,當我們分析一個演算法的的時候,我們只關注它的時間效率

當我們遇到一個演算法時,我們可以用這樣一個通用的思路去分析它:

首先第一卜伍知步考慮這個演算法的輸入規模是什麼?即輸入參數,再換句話說也就是待解決的問題有多大?
從這里入手是因為一個顯而易見的規律就是,不管使用什麼演算法, 輸入規模越大,運行效率肯定會更長
輸入規模的確定要根據具體要解決的實際問題的細節來決定,相同的問題不同的細節,輸入規模是不一樣的。比如:一個拼寫檢查的演算法,
如果演算法關注的是單獨的字元檢查,那麼字元的數量就是輸入規模的大小;
如果演算法關注的是片語搭配的檢查,那麼這個輸入規模就要比單獨的字元檢查的輸入規模要小,這里輸入規模就是詞的數量了。

接下來第二步考慮這個演算法的運行時間,即這個演算法運行地快慢。
我們可以簡單地用計時的方法,即某個演算法運行了多少毫秒。
但這個方式有一個缺陷就是在不同計算機上,相同演算法的運行時間是不一樣,因為有的電腦快有的電腦慢。
所以有沒有一種度量方法可以排除這些無關因素?
答案是肯定的,我們可以關注演算法執行了多少步,即 操作的運行次數 。而且為了簡化問題我們只需關注最重要的操作步驟,即所謂的 基本操作 ,因為基本操作已經足夠可以決定這個演算法的品質。
比如一個演算法通常是最內層的循環中是最費時的操作,那我們就只需要把它循環了多少次作為基本操作進行研究。

這里需要延伸的一點是在大規模的輸入情況下考慮執行次數的增長次數。因為針對小規模的輸入,在運行時間的差別上不太明顯。比如只對100個數字進行排序,不管你用什麼排序演算法,時間效率都差不多。只有在輸入規模變大的時候,演算法的差異才變得既明顯又重要了起來。
簡單來說,
如果一個演算法在輸入規模變大時,但運行時間平緩增長,那麼我們就可以說它就是一個效率高的演算法;
而如果一個演算法在輸入規模變大時,它的運行時間成指數級增長,那就可以說這個演算法的效率很差。
總而言之就是,對基本操作的大規模輸入情況下的變化的研究才更具有深遠意義。

當我們了解了輸入規模對演算法時間效率的會產生影響,但演算法的執行效率卻不僅僅只受輸入規模的影響,某些情況下,演算法的執行效率更取決於輸入參數的細節。
比如:一個簡單的順序查找的演算法,在數組里查找數字 9:
在數組 l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9 ] 里查找數字 9 和在相同的輸入規模的另一個數組 l2 = [ 9 , 1, 2, 3, 4, 5, 6, 7, 8]里查找數字 9,在數組 l2 的執行效率肯定更高。
上面小例子中的兩個數組就體現了兩個極端: 輸入最優情況 輸入最壞情況
相對應的,
在輸入最優情況下的演算法就叫 最優效率
在輸入最壞情況下的演算法就叫 最差效率
在這里有兩個經驗性的規則:

在現實情況下,輸入是「隨機」的,既不會是最優輸入也不會是最壞輸入。所以這里又型消要引出一個概念,即: 平均效率
首先指出,我們絕不能用「最優效率」和「最差效率」的平均數求得 平均效率 ,即便有時間這個平均數和真正的 平均效率 巧合地一致。
正確的步驟是:我們要對輸入規模 n 做一些假設。
對於上面的順序查找演算法的例子,標準的假設有兩個:

基於這兩個假設求平均效率可得:

由此,平均效率橘燃 C(n) = p(n+1) / 2 + n(1-p)

由此可知,

從這個例子可以發現,平均效率的研究要比最差效率和最優效率的研究困難很多:
我們要將輸入規模 n 劃分為幾種類型,對於同類型的輸入,使得演算法的執行次數是相同的。

演算法是計算機科學的基礎,以後會繼續更新演算法相關的隨筆,對演算法感興趣的朋友歡迎關注本博客,也歡迎大家留言討論。
我們正處於大數據時代,對數據處理感興趣的朋友歡迎查看另一個系列隨筆:
利用Python進行數據分析 基礎系列隨筆匯總

Introction to The Design and Analysis of Algorithms, Third Edition by Anany Leitin

熱點內容
grp文件反編譯 發布:2025-01-17 17:32:54 瀏覽:436
寄存器與緩存 發布:2025-01-17 17:21:01 瀏覽:409
怎麼找到輔助伺服器的ip地址 發布:2025-01-17 17:14:23 瀏覽:543
現代悅納2020都有什麼配置 發布:2025-01-17 16:47:29 瀏覽:733
資料庫的企業管理器 發布:2025-01-17 16:42:19 瀏覽:228
安卓游戲號怎麼轉蘋果王者營地app 發布:2025-01-17 16:31:16 瀏覽:185
游戲伺服器一定要公網ip嗎 發布:2025-01-17 16:29:30 瀏覽:998
配置化介面怎麼實現 發布:2025-01-17 16:28:19 瀏覽:854
解壓組詞 發布:2025-01-17 16:27:31 瀏覽:578
vba中出現編譯錯誤 發布:2025-01-17 16:17:03 瀏覽:228