如何衡量一個(gè)算法的優(yōu)劣?
如何衡量一個(gè)算法的優(yōu)劣,見(jiàn)人見(jiàn)智。一個(gè)好的算法首先是要能夠滿足場(chǎng)景的需求,其次是在能夠最大限度的節(jié)省資源(最低成本原則),最后是實(shí)現(xiàn)邏輯簡(jiǎn)單,比較容易理解(本質(zhì)上也是最低成本原則)。但是,在現(xiàn)實(shí)中硬件資源不變,算法不變情況下,算法執(zhí)行的效率提高,相對(duì)應(yīng)往往是資源消耗增加。一個(gè)合格的算法是在一個(gè)可以接受的范圍內(nèi)滿足場(chǎng)景需求,而一個(gè)優(yōu)秀的算法則是在滿足場(chǎng)景需求的基礎(chǔ)上,最大限度的節(jié)省資源,簡(jiǎn)化邏輯。
比如我要完成一項(xiàng)計(jì)算任務(wù),要求是在5分鐘執(zhí)行完成?,F(xiàn)在有算法1:需要執(zhí)行1分鐘,消耗內(nèi)存8G;算法2需要執(zhí)行3分鐘,需要消耗內(nèi)存256M。那么,我們應(yīng)該如何選擇呢?首先,這兩種方案都能滿足我們的需求;其次:算法1的需要消耗的資源是算法2的32倍,算法1的效率是算法2的3倍。在這種滿足需求的情況下,往往更傾向于選擇算法2。衡量一個(gè)算法的優(yōu)劣往往要評(píng)估多方因素,結(jié)合實(shí)踐,綜合比較最終得出結(jié)論。
衡量一個(gè)算法有哪些標(biāo)準(zhǔn)?
衡量一個(gè)算法的的標(biāo)準(zhǔn)主要有3個(gè):算法的執(zhí)行效率,算法的內(nèi)存消耗和算法的穩(wěn)定性。
算法的執(zhí)行效率
往往和算法本身以及具體的數(shù)據(jù)有關(guān)系。通常會(huì)從3個(gè)維度的時(shí)間復(fù)雜度來(lái)衡量算法的的執(zhí)行效率: 最好情況時(shí)間復(fù)雜度,最壞情況時(shí)間復(fù)雜度和平均情況時(shí)間復(fù)雜度。
算法的內(nèi)存消耗
算法的內(nèi)存消耗:往往和算法本身有關(guān)系。可以通過(guò)調(diào)整算法,以空間換時(shí)間來(lái)提升算法的執(zhí)行效率。
算法的穩(wěn)定性
算法的穩(wěn)定性:算法的執(zhí)行效率隨著數(shù)據(jù)規(guī)模增長(zhǎng)的變化也是衡量算法的穩(wěn)定性的一個(gè)因素;同時(shí),算法的內(nèi)存消耗和數(shù)據(jù)規(guī)模增長(zhǎng)的變化也是衡量算法的穩(wěn)定性的一個(gè)因素。