第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有O(1 / n)算法?

是否有O(1 / n)算法?

慕運(yùn)維8079593 2019-11-04 15:29:17
是否有O(1 / n)算法?還是其他小于O(1)的東西?
查看完整描述

3 回答

?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗 獲得超4個贊

這個問題并不像看起來那樣愚蠢。至少從理論上講,當(dāng)我們采用Big O符號的數(shù)學(xué)定義時,諸如O(1 / n)之類的東西是完全明智的:




現(xiàn)在您可以輕松地將g(x)替換為1 / x …顯然上述定義對于f仍然成立。


為了估計漸近運(yùn)行時的增長,這種方法不太可行……有意義的算法無法隨著輸入的增長而更快。當(dāng)然,您可以構(gòu)造一個任意算法來實現(xiàn)這一目標(biāo),例如以下算法:


def get_faster(list):

    how_long = (1 / len(list)) * 100000

    sleep(how_long)

顯然,隨著輸入大小的增加,此函數(shù)花費的時間更少……至少要達(dá)到一定的限制(由硬件強(qiáng)制執(zhí)行)(數(shù)字的精度,sleep可以等待的最短時間,處理參數(shù)的時間等):然后,此限制為恒定下界所以其實上述功能仍然具有運(yùn)行時?(1)。


但是實際上,在現(xiàn)實世界中,當(dāng)輸入大小增加時,運(yùn)行時間會減少(至少部分減少)。注意,這些算法不會在O(1)以下表現(xiàn)出運(yùn)行時行為。仍然,它們很有趣。例如,采用Horspool的非常簡單的文本搜索算法。在這里,預(yù)期的運(yùn)行時間將隨著搜索模式長度的增加而減少(但是,增加干草堆的長度將再次增加運(yùn)行時間)。


查看完整回答
反對 回復(fù) 2019-11-04
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊

是。


恰好有一種運(yùn)行時為O(1 / n)的算法,即“空”算法。


對于O(1 / n)算法,意味著它比由單個指令組成的算法以更少的步長漸近執(zhí)行。如果所有n> n0的執(zhí)行步數(shù)少于一個步驟,則對于所有n,它必須完全不包含任何指令。由于檢查“如果n> n0”花費至少1條指令,因此對于所有n,它必須不包含任何指令。


總結(jié):唯一的算法為O(1 / n)是空算法,不包含任何指令。


查看完整回答
反對 回復(fù) 2019-11-04
?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗 獲得超6個贊

根據(jù)我以前對大O表示法的了解,即使您需要1個步驟(例如檢查變量,執(zhí)行賦值),也就是O(1)。


注意,O(1)與O(6)相同,因為“常數(shù)”無關(guān)緊要。這就是為什么我們說O(n)與O(3n)相同。


因此,即使您只需要1步,也就是O(1)...,并且由于您的程序至少需要1步,因此算法可以執(zhí)行的最小值為O(1)。除非我們不這樣做,否則我認(rèn)為它是O(0)?如果我們什么都不做,那就是O(1),這是它可以經(jīng)過的最小值。


(如果我們選擇不這樣做,那么它可能會成為Zen或Tao問題……在編程領(lǐng)域,O(1)仍然是最小值)。


還是這樣:


程序員:老板,我找到了一種在O(1)時間內(nèi)做到的方法!

老板:沒必要這樣做,我們今天早上破產(chǎn)了。

程序員:哦,那變成O(0)。


查看完整回答
反對 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 706 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號