Ho rarahana ha algorithm ho bua haholo ka lisebelisoa tse peli:
nako
(nako ea ho phethahatsa) le
sebaka
(tšebeliso ea memori). Leha ho rarahana ha nako ho lekanya hore na nako ea ho sebetsa e hola joang ka boholo ba ho kenya (
n
), ho rarahana ha sebaka ho lekola tšebeliso ea mohopolo. Ka mohlala:
- Algorithm e nang le
O(n)
ho rarahana ha nako sekala ka ho latelana ka boholo ba ho kenya.
- Algorithm e nang le
O(1)
ho rarahana ha sebaka ho sebelisa mohopolo o sa feleng ho sa tsotelehe boholo ba ho kenya.
Li-metric ka bobeli li bohlokoa. Algorithm e potlakileng e ka senya mohopolo ho li-dataset tse kholo, athe algorithm e sebetsang hantle ea memori e ka lieha haholo bakeng sa lits'ebetso tsa nako ea nnete.
Ho sebetsa hantle ho laela ho khoneha. Nahana ka ho hlophisa lethathamo la lintho tse 10 khahlano le limilione tse 10:
- A
mofuta oa bubble
(
O(n)
) e kanna ea lekana bakeng sa li-dataset tse nyane empa e se e sa sebetse bakeng sa tse kholo.
- A
kopanya mofuta
(
O(n log n)
) e sebetsana le datha tse kholo ka bokhabane empa e hloka mohopolo o eketsehileng.
Tlhahlobo ea ho rarahana e fana ka puo e akaretsang ho bapisa li-algorithms, ho tlosa lintlha tse ikhethileng tsa Hardware. E matlafatsa batho ba ntlafatsang ho bolela esale pele scalability le ho qoba mathata a tsamaiso ea bohlokoa.
Litlhaloso tsa Asymptotic li hlalosa boits'oaro bo fokolang ba mesebetsi, ho fana ka khutsufatso bakeng sa ho rarahana. Lintlha tse tharo tsa mantlha ke:
Notation ea Big O e hlalosa boholo ba nako kapa sebaka seo algorithm e tla se nka. Mohlala:
-
O(1)
: Nako e sa khaotseng (mohlala, ho fihlella karolo ea sehlopha ka index).
-
O(n)
: Nako ea mola (mohlala, ho pheta-pheta lethathamong).
-
O(n)
: Nako ea Quadratic (mohlala, loops e behiloeng ka mokhoa oa mofuta oa bubble).
Big O ke metric e sebelisoang haholo, kaha e netefatsa siling ea ts'ebetso.
Omega e hlalosa bonyane nako e hlokahalang. Ka mohlala:
- Patlo ea mela e na le
(1)
haeba sepheo e le ntho ea pele.
Le hoja ho na le tšepo, tlhahlobo ea maemo a molemo ka ho fetisisa ha e na tsebo e ngata bakeng sa moralo oa boemo bo bobe ka ho fetisisa.
Theta e kopanya Big O le Omega, e emelang boitšoaro bo sa tsitsang. Haeba li-algorithms tse ntle le tse mpe ka ho fetisisa li tšoana:
-
(n log n)
e sebetsa ho kopanya mefuta e mahareng le maemong a mabe ka ho fetesisa.
Litlhaloso tsena ha li bue ka maemo a sa fetoheng le maemo a tlase, a shebane le sekhahla sa kholo. Mohlala, 2n + 3n + 4 nolofatsa ho O(n) hobane lereo la quadratic le rena ka boholo n .
Ho utloisisa litlelase tse rarahaneng ho thusa ho arola li-algorithms ka scalability. Mona ke lenane la maemo ho tloha ho tse ngata ho isa ho tse sa sebetseng hantle:
Nako ea ts'ebetso kapa mohopolo o lula o sa fetohe joalo ka
n
hola.
-
Mohlala
: Ho fihlella boleng ba tafole ea hash ka senotlolo.
Runtime e hola ka logarithmically ka
n
.
-
Mohlala
: Patlo ea Binary e etsa halofo ea sebaka sa ho kenya nako le nako.
Nako ea ho matha sekala ka ho lekana le
n
.
-
Mohlala
: Patlisiso ea linear ka lethathamo le sa hlophisoang.
E tloaelehileng ho arola-le-ho hlola li-algorithms.
-
Mohlala
: Kopanya mofuta le mofuta oa qubu.
Liphetoho tse entsoeng li baka kholo e phatlohang.
-
Mohlala
: Tlhophiso ea li-bubble le mofuta oa khetho.
Nako ea ho sebetsa e imena habeli ka kenyelletso e 'ngoe le e 'ngoe.
-
Mohlala
: Palo e pheta-phetoang ea Fibonacci ntle le ho hopola.
Li-algorithms tse thehiloeng ho tumello.
-
Mohlala
: Ho rarolla bothata ba barekisi ba tsamaeang ka brute-force.
Phapang pakeng tsa O(n log n) le O(n) fetoha stark bakeng sa n = 10 : ea pele e ka 'na ea phethahatsa ka milliseconds, ha ea morao e ka nka matsatsi.
Li-algorithms li sebetsa ka tsela e fapaneng ho latela litlhophiso tsa ho kenya. Ho sekaseka maemo ohle ho netefatsa hore ho na le matla:
Sesebelisoa sa potso sa database se ka khetha pakeng tsa ho kopanya hash ( O(n + m) ) le ho kopanya loop e kentsoeng ( O(nm) ) ho latela kabo ea data. Tlhahlobo ea boemo bo bobe ka ho fetesisa e bohlokoa bakeng sa lits'ebetso tsa bohlokoa tsa polokeho (mohlala, software ea bofofisi), moo ho se tsejoe esale pele ho sa amoheleheng.
Bothata bo tšoanang bo ka rarolloa ho sebelisoa li-algorithms tse fapaneng. Mohlala, bothata ba ho batla boleng boo u batlang ho bo fumana lethathamong la boleng bo ka rarolloa ho sebelisoa li-algorithms tse fapaneng, joalo ka patlo ea linear, patlo ea binary, kapa patlo ea tafole ea hash.
Tafole e ka tlase e bapisa nako le sebaka mathata a dikgatotharabololo tsena bakeng sa ho batla boleng ba shebiloeng lethathamong la n litekanyetso.
Khetho ea algorithm e itšetlehile ka boholo ba bothata, litšobotsi tsa ho kenya letsoho, le lisebelisoa tse teng. Ka mohlala, haeba lenane le le lenyenyane 'me le sa hlophisoa, ho batla ka mela e ka ba khetho e ntle ka ho fetisisa. Haeba lenane le le leholo mme le hlophisitsoe, ho batla ka binary e ka ba khetho e ntle ka ho fetisisa. Haeba lethathamo le le leholo ebile le sa hlophisoa, ho batla hashe tafoleng e ka ba khetho e ntle ka ho fetisisa.
Tlhahlobo ea amortized e lekanya nako ka tatellano ea ts'ebetso.
-
Mohlala
: Dynamic arrays matla a habeli ha a tletse. Ha ke le mong
Sututsa
opereishene e ka nka
O(n)
nako, litšenyehelo amortized lula
O(1)
.
Algorithms joalo ka
Monte Carlo
le
Las Vegas
sebelisa ka tšohanyetso bakeng sa katleho.
-
Mohlala
: Teko ea mantlha ea Miller-Rabin e na le litiisetso tse ka etsahalang empa e potlakile ho feta mekhoa ea deterministic.
Mathata a mang (mohlala, khotsofalo ea Boolean) ke NP-felletse , ho bolelang hore ha ho na tharollo e tsebahalang ea nako ea polynomial e teng. Ho paka ho phethahala ha NP ka ho fokotsa ho thusa ho arola boima ba computational.
An O(n) clustering algorithm e ka fetoha tšitiso bakeng sa li-datasets tse kholo, tse susumetsang liphetoho ho mekhoa e ka bang joalo ka lifate tsa kd ( O(n log n) ).
Litsamaiso tsa linotlolo tsa sechaba li itšetlehile ka boima ba O(2) mathata (mohlala, integer factorization) ho hanela litlhaselo.
Lienjineri tsa ho fana ka nako ea 'nete li etelletsa pele O(1) li-algorithms tsa lipapiso tsa fisiks ho boloka 60+ FPS.
Likhoebo li bohlokoa:
-
Nako vs. Sebaka
: Sebelisa limmapa tsa hash (
O(1)
lookups) ka theko ea mohopolo.
-
Bonolo vs. Optimality
: Mofuta oa ho kenya (
O(n)
) e ka ba molemo bakeng sa li-dataset tse nyane, tse batlang li hlophisoa.
Bakeng sa li-algorithms tse iphetang, nako ea ho sebetsa ea mohlala oa likamano tse iphetang. Ka mohlala, kopanya mefuta e phetoang:
[ T(n) = 2T(n/2) + O(n) ] e ikemiselitse ho
O(n log n)
ka tsela ea
Theorem ea Master
.
Teko ea matla e tlatselletsa tlhahlobo ea theory. Lisebelisoa tsa profil (mohlala, Valgrind, perf) li senola mathata a sebele a lefats'e.
python
def linear_sum(arr):
kakaretso = 0
bakeng sa num in arr:
kakaretso += palo
kakaretso ea ho khutla
def quadratic_sum(arr):
kakaretso = 0
hobane ke arr:
bakeng sa j ka arr:
kakaretso += ke * j
kakaretso ea ho khutla
Leha ho le joalo O(n) abstracts away constants, a 100n algorithm e kanna ea lieha ho feta a 0.01n algorithm bakeng sa ts'ebetso n .
An O(n log n) algorithm e kanna ea se sebetse hantle O(n) bakeng sa n = 10 ka lebaka la ho phahama.
Ts'ebetso ea Fibonacci e tšoaretsoeng ka hlooho ( O(n) space) e ka senyeha ka lisebelisoa tse kholo, ho fapana le mofuta o pheta-phetoang ( O(1) sebaka).
BST ea ho ikemela ( O(log n) batla) e bolokehile ho feta BST e tloaelehileng ( O(n) mpe ka ho fetisisa) bakeng sa data e sa tšepahaleng.
Tlhahlobo ea ho rarahana ha algorithm ke sesupa-tsela se tataisang bahlahisi ho pholletsa le sebaka se seholo sa ts'ebetso ea khomphutha. Bakeng sa baithuti ba MTSC7196, ho tseba taeo ena ho kopanya tsebo ea theory le boiphihlelo bo sebetsang. Ka ho arola litlhoko tsa nako le sebaka, ho bapisa meeli ea li-asymptotic, le ho tsamaisa khoebo ea sebele ea lefats'e, bahlahisi ba ka etsa mekhoa e metle le e sebetsang ka botšepehi.
Mehleng e hlalosoang ke boqapi bo tsamaisoang ke data, bokhoni ba ho lemoha lipakeng tsa O(n log n) le a O(n) tharollo hase feela academicits bohlokoa leano. Ha u ntse u tsoela pele ka lithuto tsa hau, hopola: tlhahlobo ea ho rarahana ha se feela lipalo le matšoao. E mabapi le ho utloisisa ho otla ha pelo ea k'homphieutha ka boeona.
Ho tloha ka 2019, kopana le mabenyane a thehiloe Guangzhou, China, Jeremane e hlahisang mabenyane. Re khoebo ea mabenyane e kopanang le moralo oa ho kopanya, tlhahiso le thekiso.
+86-19924726359/+86-13431083798
Fatše 13, Tora ea Bophirima ea Tower Smart City, Che. 33 Juxin Street, Haize seratos, Guangzhou, China.