Algoritmoen konplexutasunak batez ere bi baliabide jorratzen ditu:
denbora
(exekuzioaren iraupena) eta
espazioa
(memoriaren erabilera). Denbora-konplexutasunak exekuzio-denbora sarrera-tamainarekin nola hazten den neurtzen duen bitartean (
n
), espazio-konplexutasunak memoria-kontsumoa ebaluatzen du. Adibidez:
- Algoritmo bat
O(n)
denbora-konplexutasuna sarrera-tamainarekin linealki eskalatzen da.
- Algoritmo bat
O(1)
espazio-konplexutasunak memoria konstantea erabiltzen du sarrerako tamaina edozein dela ere.
Bi metrikak ezinbestekoak dira. Algoritmo azkar batek memoria agortu dezake datu-multzo handietan, memoria-eraginkortasun handiko algoritmo bat, berriz, motelegia izan daiteke denbora errealeko aplikazioetarako.
Eraginkortasunak bideragarritasuna agintzen du. Kontuan hartu 10 elementuko zerrenda bat 10 milioikoaren ordez ordenatzea:
- A
burbuila-ordena
(
O(n)
) nahikoa izan daiteke datu-multzo txikientzat, baina ez da praktikoa handientzat.
- A
batu ordena
(
O(n log n)
) datu-multzo handiagoak ondo kudeatzen ditu, baina memoria gehigarria behar du.
Konplexutasun-analisiak algoritmoak alderatzeko hizkuntza unibertsal bat eskaintzen du, hardwarearen xehetasun espezifikoak alde batera utziz. Eskalagarritasuna aurreikusteko eta sistema kritikoetan oztopoak saihesteko ahalmena ematen die garatzaileei.
Notazio asintotikoek funtzioen portaera mugatzailea deskribatzen dute, konplexutasunaren laburdura eskainiz. Hiru notazio nagusiak hauek dira:
O notazio handiak algoritmo batek hartuko duen gehienezko denbora edo espazioa definitzen du. Adibidez:
-
O(1)
Denbora konstantea (adibidez, array elementu batera indizearen bidez sartzea).
-
O(n)
Denbora lineala (adibidez, zerrenda batean zehar iteratzean).
-
O(n)
Denbora koadratikoa (adibidez, burbuila-ordenan txertatutako begiztak).
Big O da metrika erabiliena, errendimendu-sabaiak bermatzen baititu.
Omegak behar den gutxieneko denbora deskribatzen du. Adibidez:
- Bilaketa lineal batek du
(1)
helburua lehenengo elementua bada.
Baikorra izan arren, kasurik onenen analisiak informazio gutxiago ematen du kasurik txarrenaren plangintzarako.
Thetak Big O eta Omega konbinatzen ditu, portaera asintotiko zehatza irudikatuz. Algoritmo baten kasurik onena eta txarrena berdinak badira:
-
(n log n)
Batez besteko eta kasu txarreneko eszenatokietarako aplikatzen da merge sort-a.
Notazio hauek konstanteak eta behe-ordenako terminoak abstraktu egiten dituzte, hazkunde-tasetan arreta jarriz. Adibidez, 2n + 3n + 4 sinplifikatzen du O(n) termino koadratikoa nagusitzen delako handietan n .
Konplexutasun-klaseak ulertzeak algoritmoak eskalagarritasunaren arabera sailkatzen laguntzen du. Hona hemen hierarkia bat eraginkorrenetik gutxien eraginkorrera:
Exekuzio-denbora edo memoria aldatu gabe mantentzen da
n
hazten da.
-
Adibidea
: Hash taulako balio batera gako baten bidez sartzea.
Exekuzio-denbora logaritmikoki hazten da honekin:
n
.
-
Adibidea
Bilaketa bitarrak sarrera-espazioa erdira murrizten du iterazio bakoitzean.
Exekuzio-denbora proportzionalki eskalatzen da
n
.
-
Adibidea
: Bilaketa lineala ordenatu gabeko zerrenda batean zehar.
Ohikoa zatitu eta menderatu algoritmoetan.
-
Adibidea
: Ordenazio batu eta ordenazio heap.
Iterazio txertatuek hazkunde lehergarria dakarte.
-
Adibidea
Burbuila-ordenazioa eta hautaketa-ordenazioa.
Exekuzio-denbora bikoizten da sarrera gehigarri bakoitzarekin.
-
Adibidea
Fibonacciren kalkulu errekurtsiboa memorizaziorik gabe.
Permutazioetan oinarritutako algoritmoak.
-
Adibidea
Saltzaile bidaiariaren arazoa indar gordinaren bidez konpontzea.
arteko aldea O(n log n) eta O(n) zorrotz bihurtzen da n = 10 : lehenengoa milisegundotan exekutatu daiteke, eta bigarrenak, berriz, egunak behar izan ditzake.
Algoritmoek modu ezberdinean funtzionatzen dute sarrerako konfigurazioen arabera. Kasu guztiak aztertzeak sendotasuna bermatzen du:
Datu-baseko kontsulta-optimizatzaile batek hash lotura baten artean aukeratu dezake ( O(n + m) ) eta begizta txertatuen lotura ( O(nm) ) datuen banaketan oinarrituta. Kasu txarrenaren analisia funtsezkoa da segurtasun-kritiko sistemetarako (adibidez, hegazkintzako softwarea), non aurreikusezintasuna onartezina den.
Problema bera algoritmo desberdinak erabiliz konpondu daiteke. Adibidez, balio-zerrenda batean helburu-balio bat bilatzeko arazoa algoritmo desberdinak erabiliz konpon daiteke, hala nola bilaketa lineala, bilaketa bitarra edo hash taularen bilaketa.
Beheko taulak algoritmo hauen denbora eta espazio konplexutasunak alderatzen ditu zerrenda batean helburu-balio bat bilatzeko. n balioak.
Algoritmoaren aukera arazoaren tamainaren, sarrerako ezaugarrien eta eskuragarri dauden baliabideen araberakoa da. Adibidez, zerrenda txikia eta ordenatu gabea bada, bilaketa lineala izan daiteke aukerarik onena. Zerrenda handia eta ordenatua bada, bilaketa bitarra izan daiteke aukerarik onena. Zerrenda handia eta ordenatu gabea bada, hash taularen bilaketa izan daiteke aukerarik onena.
Amortizazio-analisiak eragiketa-segida baten batez besteko denbora kalkulatzen du.
-
Adibidea
Matrize dinamikoek edukiera bikoizten dute beteta daudenean. Bakarra den bitartean
bultzatu
eragiketak iraun dezake
O(n)
denboran, amortizazio-kostua geratzen da
O(1)
.
Algoritmoak bezalakoak.
Monte Carlo
eta
Las Vegas
erabili ausazkotasuna eraginkortasunerako.
-
Adibidea
Miller-Rabin primalitate-probak probabilitate-bermeak ditu, baina metodo deterministak baino azkarragoa da.
Arazo batzuk (adibidez, asegarritasun boolearra) dira NP-osoa , hau da, ez dago ezagutzen denbora polinomialeko soluziorik. NP-osotasuna murrizketen bidez frogatzeak gogortasun konputazionala sailkatzen laguntzen du.
Bat O(n) multzokatze algoritmoa datu-multzo masiboetarako oztopo bihur daiteke, kd zuhaitzak bezalako metodo hurbilduetara aldaketak eraginez ( O(n log n) ).
Giltza publikoko sistemek gogortasunaren mende daude O(2) erasoei aurre egiteko problemak (adibidez, zenbaki osoko faktorizazioa).
Denbora errealeko errendatze-motorrek lehentasuna ematen diete O(1) 60+ FPS mantentzeko fisika simulazioetarako algoritmoak.
Konpromisoek garrantzia dute:
-
Denbora vs. Espazioa
: Erabili hash mapak (
O(1)
bilaketak) memoriaren kostuan.
-
Sinpletasuna vs. Optimalitatea
Txertatze ordena (
O(n)
) hobeagoa izan daiteke datu-multzo txiki eta ia ordenatuetarako.
Algoritmo errekurtsiboetarako, errepikapen-erlazioek exekuzio-denbora modelatzen dute. Adibidez, batu ordenatzen errepikapena:
[ T(n) = 2T(n/2) + O(n) ] honela ebazten da
O(n log n)
bidez
Maisuaren Teorema
.
Proba enpirikoak analisi teorikoa osatzen du. Profilak egiteko tresnek (adibidez, Valgrind, perf) benetako oztopoak agerian uzten dituzte.
piton
def batura_lineala(arr):
guztira = 0
zenbakirako iristean:
guztira += zenb.
itzulera guztira
def batura_kuadratikoa(arr):
guztira = 0
niretzat arr-n:
j-rako arr-n:
guztira += i * j
itzulera guztira
Bitartean O(n) konstanteak abstraitzen ditu, a 100n algoritmoa baino motelagoa izan daiteke 0.01n algoritmo praktikoa n .
Bat O(n log n) algoritmoak errendimendu eskasa izan dezake O(n) -rako n = 10 gainkostuen ondorioz.
Fibonacci funtzio memorizatu bat ( O(n) espazioa) sarrera handietan huts egin dezake, bertsio iteratibo bat ez bezala ( O(1) espazioa).
Autoorekatzen den BST bat ( O(log n) bilaketa) BST arrunt bat baino seguruagoa da ( O(n) kasurik txarrenean) datu fidagarri ez direnentzat.
Algoritmoen konplexutasunaren analisia da garatzaileak konputazio-eraginkortasunaren paisaia zabalean zehar gidatzen dituen iparrorratza. MTSC7196 ikasleentzat, diziplina hau menderatzeak ezagutza teorikoa eta esperientzia praktikoa uztartzen ditu. Denbora eta espazio-eskakizunak aztertuz, muga asintotikoak alderatuz eta benetako munduko konpromisoak arakatuz, garatzaileek eskalatze egokia duten eta fidagarritasunez funtzionatzen duten sistemak sor ditzakete.
Datuetan oinarritutako berrikuntzak definitutako aro batean, baten eta beste baten artean bereizteko gaitasuna O(n log n) eta bat O(n) Irtenbidea ez da akademikoa bakarrik, inperatibo estrategiko bat baizik. Ikasketetan aurrera egin ahala, gogoratu: konplexutasun-analisia ez da zenbakiei eta sinboloei buruzkoa soilik. Konputazioaren taupada bera ulertzeari buruzkoa da.
2019az geroztik, ezagutu u bitxiak Guangzhou, Txinan, bitxien fabrikazio oinarrian sortu ziren. Bitxigintza enpresa bat gara diseinua, produkzioa eta salmenta integratzen.
+86-19924726359/+86-13431083798
13 solairua, West Tower of Gome Smart City, Ez. 33 Juxin kalea, Haizthu auzoa, Guangzhou, Txina.