Algorîtmaya tevlihev bi giranî du çavkaniyan çareser dike:
dem
(dema bicîhanînê) û
dem
(bikaranîna bîrê). Her çiqas tevliheviya demê dipîve ka çawa dema xebitandinê bi mezinahiya têketinê re mezin dibe (
n
), tevliheviya fezayê xerckirina bîranînê dinirxîne. Bo nimûne:
- Algorîtmayek bi
Li)
Tevliheviya demê bi awayekî xêzikî li gorî mezinahiya têketinê diguhere.
- Algorîtmayek bi
O(1)
aloziya fezayê bêyî ku mezinahiya têketinê li ber çavan bigire, bîra sabît bikar tîne.
Her du metrîk jî girîng in. Algorîtmayek bilez dibe ku bîrê li ser setên daneyên mezin biqedîne, lê algorîtmayek ku bîrê bi bandor bikar tîne dikare ji bo sepanên demrast pir hêdî be.
Karîgerî gengazbûnê destnîşan dike. Li gorî 10 milyonan, lîsteyek ji 10 tiştan rêz bikin.:
- A
curekirina bilbilan
(
Li)
) dibe ku ji bo setên daneyên piçûk bes be lê ji bo yên mezin nepratîk dibe.
- A
rêzkirina hevgirtinê
(
O(n log n)
) bi xweşikî setên daneyên mezintir bi rêk û pêk birêve dibe lê bîra zêdetir hewce dike.
Analîza tevliheviyê zimanekî gerdûnî peyda dike ji bo berawirdkirina algorîtmayan, û hûrguliyên taybetî yên hardware-ê ji holê radike. Ew pêşdebiran hêzdar dike ku pîvanbariyê pêşbînî bikin û ji astengiyên di pergalên krîtîk de dûr bisekinin.
Nîşaneyên asîmptotîk tevgera sînordar a fonksiyonan vedibêjin, û kurtenivîsek ji bo tevliheviyê pêşkêş dikin. Sê nîşaneyên sereke ne:
Nîşaneya Big O herî zêde dem an cîhê ku algorîtmayek digire destnîşan dike. Bo nimûne:
-
O(1)
: Dema sabît (mînak, gihîştina hêmanek rêzê bi îndeksê).
-
Li)
Dema xêzikî (mînak, dubarekirina di nav lîsteyekê de).
-
Li)
Dema çargoşeyî (mînak, lûpên hêlînkirî di rêzkirina bi balonê de).
Big O metrîka herî zêde tê bikar anîn e, ji ber ku ew sînorên performansê garantî dike.
Omega herî kêm dema pêwîst diyar dike. Bo nimûne:
- Lêgerîneke xêzikî heye
(1)
eger hedef hêmana yekem be.
Her çend optimîst be jî, analîza rewşa çêtirîn ji bo plansaziya rewşa herî xirab kêmtir agahîdar e.
Theta Big O û Omega bi hev re tîne, û tevgera asîmptotîk a rastîn temsîl dike. Heger algorîtmayek rewşên çêtirîn û xirab yek bin:
-
(n log n)
ji bo senaryoyên navînî û xirabtirîn ên cureyên yekbûnê derbas dibe.
Ev nîşankirin sabît û termên rêza jêrîn ji holê radikin, û balê dikişînin ser rêjeyên mezinbûnê. Bo nimûne, 2n + 3n + 4 hêsan dike Li) ji ber ku terma çargoşeyî ji bo mezin serdest e n .
Têgihîştina çînên tevliheviyê dibe alîkar ku algorîtmayan li gorî pîvanbariyê kategorîze bikin. Li vir hiyerarşiyek ji herî bikêrhatî heta herî kêm bikêrhatî heye:
Dema bicîhanînê an jî bîr bêguher dimîne
n
mezin dibe.
-
Mînak
: Gihîştina nirxek tabloya hash bi mifteyê.
Dema xebitandinê bi awayekî logarîtmîkî bi
n
.
-
Mînak
Lêgerîna dualî di her dubarekirinê de qada têketinê nîvî dike.
Dema xebitandinê bi rêjeyî bi
n
.
-
Mînak
Lêgerîna xêzikî di nav lîsteyek bê rêzkirin de.
Di algorîtmayên parçe bike-û-birêve bibe de hevpar e.
-
Mînak
Rêzkirina hevgirtî û rêzkirina heap.
Dubarekirinên navbendkirî dibin sedema mezinbûna teqîner.
-
Mînak
: Rêzkirina bi balonê û rêzkirina bi hilbijartinê.
Dema xebitandinê bi her têketina zêde duqat dibe.
-
Mînak
: Hesabkirina Fibonacci ya dubarekirî bêyî jiberkirin.
Algorîtmayên li ser bingeha permutasyonê.
-
Mînak
Çareserkirina pirsgirêka firoşkarê rêwî bi rêya hêza brute-force.
Cudahiya di navbera O(n log n) û Li) ji bo zelal dibe n = 10 : ya berê dibe ku di milîçirkeyan de were bicîhanîn, lê ya paşîn dikare bi rojan bidome.
Algorîtma li gorî mîhengên têketinê ji hev cuda dixebitin. Analîzkirina hemû dozan saxlemiyê misoger dike:
Optimîzatorekî lêpirsîna databasê dikare di navbera tevlêbûna hash () de hilbijêre. O(n + m) ) û tevlêbûna xeleka nested ( O(nm) ) li ser bingeha belavkirina daneyan. Analîza rewşa herî xirab ji bo pergalên ku krîtîkên ewlehiyê ne (mînak, nermalava hewavaniyê) girîng e, li wir pêşbînînekirin nayê qebûlkirin.
Heman pirsgirêk dikare bi karanîna algorîtmayên cûda were çareser kirin. Bo nimûne, pirsgirêka lêgerîna nirxek hedef di navnîşek nirxan de dikare bi karanîna algorîtmayên cûda, wekî lêgerîna xêzik, lêgerîna binary, an lêgerîna tabloya hash were çareser kirin.
Tabloya li jêr tevlîheviyên dem û mekanî yên van algorîtmayan ji bo lêgerîna nirxek hedef di navnîşek de berawird dike. n nirxan
Hilbijartina algorîtmayê bi mezinahiya pirsgirêkê, taybetmendiyên têketinê û çavkaniyên berdest ve girêdayî ye. Bo nimûne, eger lîste piçûk û bê rêzkirin be, lêgerîna xêzik dibe ku bijardeya çêtirîn be. Eger lîste mezin û rêzkirî be, lêgerîna binary dibe ku bijardeya çêtirîn be. Eger lîste mezin û bê rêzkirin be, lêgerîna tabloya hash dibe ku bijardeya çêtirîn be.
Analîza amortismanê dema navînî li ser rêze operasyonan nîşan dide.
-
Mînak
Arêyên dînamîk dema ku tijî bin, kapasîteyê du qat zêde dikin. Dema ku yekane
lêqellibîn
dibe ku operasyon bidome
Li)
demê, lêçûna amortisman dimîne
O(1)
.
Algorîtmayên mîna
Monte Karlo
û
Las Vegas
ji bo karîgeriyê tesadufiyê bi kar bînin.
-
Mînak
Testa prîmîteyê ya Miller-Rabin xwedî garantiyên îhtimalî ye lê ji rêbazên determînîstîk zûtir e.
Hin pirsgirêk (mînak, têrkerbûna Boolean) in NP-temam , ev tê vê wateyê ku çareseriyek polînomiyal-demî ya naskirî tune ye. Îspatkirina temambûna NP bi rêya kêmkirinan dibe alîkar ku zehmetiya hesabkirinê were dabeşkirin.
Yek Li) Algorîtmaya komkirinê dikare ji bo setên daneyên mezin bibe astengiyek, û bibe sedema guhertinên ber bi rêbazên texmînî yên wekî darên kd ( O(n log n) ).
Sîstemên mifteya giştî xwe dispêrin hişkbûna O(2) pirsgirêkên (mînak, faktorîzekirina hejmarên tam) ji bo berxwedana li hember êrîşan.
Motorên renderkirina demrast pêşîniyê didin O(1) algorîtmayên ji bo simulasyonên fîzîkî ji bo parastina 60+ FPS.
Bazirganî girîng in:
-
Dem li dijî Dem
Nexşeyên hash bikar bînin (
O(1)
lêgerîn) bi bihayê bîranînê.
-
Sadeyî li hember Baştirînî
: Rêzkirina bi danîna têketinê (
Li)
) dibe ku ji bo setên daneyên piçûk, hema hema rêzkirî, çêtir be.
Ji bo algorîtmayên dubarekirî, têkiliyên dubarekirinê modela dema xebitandinê nîşan didin. Bo nimûne, dubarebûna cureyên hevgirtinê:
[ T(n) = 2T(n/2) + O(n) ] çareser dibe bo
O(n log n)
bi rêya
Teorema Mamoste
.
Ceribandina empîrîk analîza teorîk temam dike. Amûrên profîlkirinê (mînak, Valgrind, perf) astengiyên cîhana rastîn eşkere dikin.
piton
def linear_sum(arr):
tevahî = 0
ji bo hejmar di arr de:
tevahî += hejmar
vegera giştî
def quadratic_sum(arr):
tevahî = 0
ji bo ez di arr de me:
ji bo j di arr de:
tevahî += i * j
vegera giştî
Demek Li) sabîtan ji hev vediqetîne, a 100n algorîtmayek dibe ku ji ya 0.01n algorîtmaya ji bo pratîkê n .
Yek O(n log n) dibe ku algorîtmaya Li) bo n = 10 ji ber lêçûna jor.
Fonksiyoneke Fibonacci ya jiberkirî ( Li) cîh) dikare li ser têketinên mezin têk biçe, berevajî guhertoyek dubarekirî ( O(1) dem).
BST-yeke xwe-hevsengker ( O(log n) lêgerîn) ji BST-ya birêkûpêk ewletir e ( Li) rewşa herî xirab) ji bo daneyên ne pêbawer.
Analîza tevliheviya algorîtmayê rêberiya pêşdebiran di nav peyzaja fireh a karîgeriya hesabkirinê de dike. Ji bo xwendekarên MTSC7196, serweriya vê dîsîplînê zanîna teorîk û pisporiya pratîkî bi hev re pire dike. Bi analîzkirina pêdiviyên dem û mekanî, berawirdkirina sînorên asîmptotîk, û navigkirina danûstandinên cîhana rastîn, pêşdebir dikarin pergalên ku bi rengek xweşik pîvan dibin û bi pêbawerî dixebitin biafirînin.
Di serdemeke ku bi nûjeniya daneyan ve tê pênasekirin de, şiyana cudakirina di navbera O(n log n) û yek Li) Çareserî ne tenê akademîk e, ew pêdivîyek stratejîk e. Dema ku hûn di xebatên xwe de pêşve diçin, ji bîr mekin: analîza tevliheviyê ne tenê li ser hejmaran û sembolan e. Ew li ser têgihîştina lêdana dilê hesabkirinê bi xwe ye.
Ji sala 2019an ve, li Guangzhou, Chinaînê, Chinaîn, çêkirina jewelry, li dar xistin. Em sêwirana pargîdaniyê, hilberîn û firotanê ya hevgirtî ne.
+86-19924726359/+86-13431083798
Floor 13, West Tower of Gome Smart City, No. 33 Kolana Juxin, navçeya Haizhu, Guangzhou, Chinaîn.