Ubunzima be-algorithm ngokuyintloko kujongana nezixhobo ezimbini:
ixesha
(ixesha lokwenziwa) kunye
indawo
(ukusetyenziswa kwememori). Ngelixa ixesha elintsonkothileyo lilinganisa ukuba ixesha lokubaleka likhula njani ngobungakanani begalelo (
n
), ubunzima bendawo buvavanya ukusetyenziswa kwememori. Umzekelo:
- I-algorithm ene
O(n)
ixesha elintsonkothileyo lilinganisa ngokobungakanani begalelo.
- I-algorithm ene
O(1)
indawo entsonkothileyo isebenzisa inkumbulo engaguqukiyo nokuba ingakanani na igalelo.
Zombini iimetriki zibalulekile. I-algorithm ekhawulezayo inokukhupha imemori kwiiseti zedatha ezinkulu, ngelixa i-algorithm esebenza kakuhle imemori inokucotha kakhulu kwizicelo zexesha lokwenyani.
Ukusebenza kakuhle kumisela ukuba nokwenzeka. Cinga ngokuhlela uluhlu lwezinto ezili-10 ngokuchasene ne-10 lezigidi:
- A
uhlobo lweqamza
(
O(n)
) inokwanela iseti yedatha encinci kodwa ayinakwenzeka kwezinkulu.
- A
dibanisa uhlobo
(
O(n log n)
) iphatha iiseti zedatha ezinkulu ngobubele kodwa ifuna inkumbulo eyongezelelweyo.
Uhlalutyo oluntsonkothileyo lubonelela ngolwimi lwehlabathi lonke ukuthelekisa i-algorithms, kutsalwa kude iinkcukacha ezithe ngqo zehardware. Ixhobisa abaphuhlisi ukuba baqikelele i-scalability kwaye baphephe imiqobo kwiinkqubo ezibalulekileyo.
Ubhalo lwe-Asymptotic luchaza indlela yokuziphatha ethintelayo yemisebenzi, enikezela ngokufutshane ngobunzima. Iimpawu ezintathu eziphambili:
I-Big O notation ichaza elona xesha liphezulu okanye isithuba esithathwa yi-algorithm. Njengokuba:
-
O(1)
: Ixesha elithe rhoqo (umzekelo, ukufikelela kuluhlu ngokwesalathiso).
-
O(n)
: Ixesha lomgca (umzekelo, ukuphinda-phinda kuluhlu).
-
O(n)
: Ixesha lequadratic (umzekelo, iirhintyela ezifakwe kwindlwane ngohlobo lwamaqamza).
IBig O yeyona metric isetyenziswa kakhulu, njengoko iqinisekisa iisilingi zokusebenza.
I-Omega ichaza ubuncinane bexesha elifunekayo. Umzekelo:
- Ukukhangela ngomgca
(1)
ukuba ekujoliswe kuko sisiqalelo sokuqala.
Ngelixa kunethemba, uhlalutyo lwemeko engcono kakhulu alunalwazi kangako kwisicwangciso semeko embi kakhulu.
I-Theta idibanisa i-Big O kunye ne-Omega, emele indlela yokuziphatha engabonakaliyo. Ukuba i-algorithms eyona nto ingcono kunye neemeko ezimbi ziyafana:
-
(n log n)
Isebenza ekudityanisweni kweentlobo zomndilili kunye neemeko ezimbi kakhulu.
Olu bhalo luyimiba engaguqukiyo kunye nemigaqo ephantsi, igxile kumazinga okukhula. Njengokuba, 2n + 3n + 4 yenza lula uku O(n) kuba igama lequadratic lilawula ubukhulu n .
Ukuqonda iiklasi ezintsonkothileyo kunceda ukwahlula ii-algorithms ngokukala. Nalu uluhlu lwemigangatho ukusuka kweyona incinci ukuya kweyona isebenzayo:
Ixesha lokwenziwa okanye inkumbulo ihlala ingatshintshwanga
n
iyakhula.
-
Umzekelo
: Ukufikelela kwixabiso letafile ye-hash ngesitshixo.
Ixesha lokubaleka likhula ngokwe-logarithmically nge
n
.
-
Umzekelo
: Uphendlo lwe-binary lisiqingatha isithuba songeniso ngokuphinda-phinda.
Ixesha lokubaleka lilinganisa ngokulinganayo nge
n
.
-
Umzekelo
: Uphendlo lomgca kuluhlu olungahlelwanga.
Ixhaphakile ekwahluleni-kwaye-koyisa i-algorithms.
-
Umzekelo
: Dibanisa uhlobo kunye nohlobo lwemfumba.
Uphindaphindo olwenziwayo lukhokelela ekukhuleni okugqabhukileyo.
-
Umzekelo
: Uhlobo lwebhamuza kunye nohlobo lokhetho.
Ixesha lokubaleka liphinda kabini ngegalelo ngalinye elongezelelweyo.
-
Umzekelo
: Ukubala okuphindiweyo kweFibonacci ngaphandle kokukhumbula.
I-algorithms esekwe kwimvume.
-
Umzekelo
: Ukusombulula ingxaki yomthengisi ohambahambayo nge-brute-force.
Umahluko phakathi O(n log n) kwaye O(n) iba stark for n = 10 : yangaphambili inokuphumeza kwi-milliseconds, ngelixa ukugqibela kunokuthatha iintsuku.
Ii-algorithms zisebenza ngokwahlukileyo ngokusekelwe kuqwalaselo lwegalelo. Ukuhlalutya zonke iimeko kuqinisekisa ukomelela:
Isilungisi sombuzo wesiseko sinokukhetha phakathi kodibaniso lwe-hash ( O(n + m) ) kunye nendibano ye-loop enendlu ( O(nm) ) ngokusekelwe ekusasazeni idatha. Uhlalutyo olubi kakhulu lubalulekile kwiinkqubo ezibaluleke kakhulu zokhuseleko (umzekelo, isofthiwe ye-aviation), apho ukungaqiniseki kungamkelekanga.
Ingxaki efanayo ingasonjululwa kusetyenziswa iindlela ezahlukeneyo zokuziqhelanisa. Umzekelo, ingxaki yokukhangela ixabiso ekujoliswe kulo kuluhlu lwamaxabiso inokusonjululwa kusetyenziswa iindlela ezahlukeneyo zokuziphatha, ezifana nophendlo lomgca, uphendlo lokubini, okanye uphendlo lwetafile yehash.
Itheyibhile engezantsi ithelekisa ixesha kunye nobunzima bendawo yale algorithms yokukhangela ixabiso ekujoliswe kulo kuluhlu lwe n ixabiso.
Ukukhethwa kwe-algorithm kuxhomekeke kubungakanani bengxaki, iimpawu zegalelo, kunye nezixhobo ezikhoyo. Umzekelo, ukuba uluhlu luncinci kwaye aluhlelwanga, ukukhangela ngemigca inokuba lolona khetho lulungileyo. Ukuba uluhlu likhulu kwaye luhleliwe, uphendlo lokubini lunokuba lolona khetho lungcono. Ukuba uluhlu lukhulu kwaye aluhlelwanga, ukukhangela kwetafile ye-hash kunokuba lolona khetho lulungileyo.
Uhlalutyo lwe-amortized iavareji yexesha kulandelelwano lwemisebenzi.
-
Umzekelo
: Uluhlu olunamandla oluphindwe kabini xa lugcwele. Ngelixa eyedwa
Dudula
utyando lunokuthatha
O(n)
ixesha, iindleko amortized uhlala
O(1)
.
Algorithms ezifana
Monte Carlo
kwaye
Las Vegas
sebenzisa i-random ukuze usebenze kakuhle.
-
Umzekelo
: Uvavanyo lweprimality lweMiller-Rabin luneziqinisekiso ezinokubakho kodwa lukhawuleza kuneendlela zokuqinisekisa.
Ezinye iingxaki (umzekelo, ukwaneliseka kweBoolean) zi I-NP-igqityiwe , okuthetha ukuba akukho sisombululo saziwayo sexesha lepolynomial sikhoyo. Ukubonisa ukugqibelela kwe-NP ngokunciphisa kunceda ekuhleleni ubunzima bokubala.
An O(n) ialgorithm yokudibanisa inokuba ngumqobo kwiiseti zedatha ezinkulu, ikhuthaza utshintsho kwiindlela eziqikelelweyo njengemithi ye-kd ( O(n log n) ).
Iinkqubo zesitshixo zikawonke-wonke zithembele kubulukhuni be O(2) iingxaki (umzekelo, i-integer factorization) ukuxhathisa uhlaselo.
Iinjini zonikezelo lwexesha lokwenyani zibeke phambili O(1) Ii-algorithms zokulinganisa iifiziksi ukugcina i-60+ FPS.
Urhwebo lubalulekile:
-
Ixesha vs. Isithuba
: Sebenzisa iimephu zehash (
O(1)
lookups) ngexabiso lememori.
-
Ubulula vs. Ukuba nempumelelo
: uhlobo lofakelo (
O(n)
) isenokukhethwa kwiseti yedatha encinci, ephantse yahlelwa.
Kwii-algorithms eziphindaphindayo, imodeli yobudlelwane obuphindaphindiweyo ngexesha lokusebenza. Umzekelo, ukudibanisa iintlobo ukuphindaphinda:
[ T (n) = 2T(n/2) + O(n) ] ugqiba ekubeni
O(n log n)
nge
Ithiyori yoMphathi
.
Uvavanyo lobugcisa luncedisa uhlalutyo lwethiyori. Izixhobo zokuchaza iinkcukacha (umzekelo, i-Valgrind, i-perf) zityhila iimeko zehlabathi zokwenyani.
inhlwathi
def linear_sum(arr):
iyonke = 0
nge num in arr:
iyonke += inani
imbuyekezo iyonke
def quadratic_sum(arr):
iyonke = 0
kuba ndihleli:
kuba j in arr:
iyonke += mna * j
imbuyekezo iyonke
Ngelixa O(n) abstracts kude constants, a 100n I-algorithm inokuba kade kuno-a 0.01n algorithm for practical n .
An O(n log n) I-algorithm inokuthi isebenze ngaphantsi O(n) ngenxa n = 10 ngenxa yobunzima.
Umsebenzi owenziwe ngentloko weFibonacci ( O(n) indawo) inokuntlitheka kumagalelo amakhulu, ngokungafaniyo noguqulelo oluphindaphindayo ( O(1) indawo).
I-BST yokuzilinganisa ( O(log n) Ukukhangela) kukhuselekile kune-BST eqhelekileyo ( O(n) eyona nto imbi) kwidatha engathenjwa.
Uhlalutyo oluntsonkothileyo lwe-algorithm yikhampasi ekhokela abaphuhlisi kumhlaba omkhulu wobuchule bokubala. Kubafundi be-MTSC7196, ukugqwesa olu qeqesho kudibanisa ulwazi lwethiyori kunye nobuchule obusebenzayo. Ngokucazulula iimfuno zexesha kunye nendawo, ukuthelekisa imida ye-asymptotic, kunye nokuhamba ngezorhwebo lehlabathi langempela, abaphuhlisi banokwenza iinkqubo zokwenza isikali esilungileyo kwaye senze ngokuthembekileyo.
Ngexesha elichazwe yidatha-eqhutywa ngokutsha, ukukwazi ukwahlula phakathi kwe O(n log n) kunye ne O(n) Isisombululo ayisosinyanzelo nje semfundo ephakamileyo. Njengoko uqhubela phambili kwizifundo zakho, khumbula: uhlalutyo lokuntsokotha alukho nje ngamanani kunye neesimboli. Imalunga nokuqonda ukubetha kwentliziyo yokubala ngokwayo.
Ukusukela ngo-2019, dibana nawe ubucwebe busekwe eGuangzhou, China, isiseko semveliso yobucwebe. Siyishishini lenziwe ishishini lokudibanisa uyilo, imveliso kunye nentengiso.
+86-19924726359/+86-13431083798
Umgangatho we-13, eWest tower ye-Gome Smart City, No. 33 I-Juxin Street, isithili saseHaizhu, iGuangzhou, China.