Mae cymhlethdod algorithmau yn ymdrin â dau adnodd yn bennaf.:
amser
(hyd gweithredu) a
gofod
(defnydd cof). Er bod cymhlethdod amser yn mesur sut mae amser rhedeg yn tyfu gyda maint y mewnbwn (
n
), mae cymhlethdod gofod yn gwerthuso'r defnydd o gof. Er enghraifft:
- Algorithm gyda
O(n)
mae cymhlethdod amser yn graddio'n llinol gyda maint y mewnbwn.
- Algorithm gyda
O(1)
Mae cymhlethdod gofod yn defnyddio cof cyson waeth beth fo maint y mewnbwn.
Mae'r ddau fetrig yn hanfodol. Gallai algorithm cyflym ddefnyddio cof ar setiau data mawr, tra gallai algorithm sy'n effeithlon o ran cof fod yn rhy araf ar gyfer cymwysiadau amser real.
Mae effeithlonrwydd yn pennu hyfywedd. Ystyriwch ddidoli rhestr o 10 eitem yn erbyn 10 miliwn:
- A
didoli swigod
(
O(n)
) gallai fod yn ddigonol ar gyfer setiau data bach ond mae'n dod yn anymarferol ar gyfer rhai mawr.
- A
cyfuno trefn
(
O(n log n)
) yn trin setiau data mwy yn rasol ond mae angen cof ychwanegol arno.
Mae dadansoddi cymhlethdod yn darparu iaith gyffredinol i gymharu algorithmau, gan dynnu manylion penodol i galedwedd i ffwrdd. Mae'n grymuso datblygwyr i ragweld graddadwyedd ac osgoi tagfeydd mewn systemau hanfodol.
Mae nodiadau asymptotig yn disgrifio ymddygiad cyfyngol ffwythiannau, gan gynnig llaw-fer ar gyfer cymhlethdod. Y tri phrif nodiant yw:
Mae nodiant O Mawr yn diffinio'r amser neu'r gofod mwyaf y bydd algorithm yn ei gymryd. Er enghraifft:
-
O(1)
Amser cyson (e.e., cyrchu elfen arae trwy fynegai).
-
O(n)
Amser llinol (e.e., ailadrodd trwy restr).
-
O(n)
Amser cwadratig (e.e., dolenni wedi'u nythu mewn trefn swigod).
Big O yw'r metrig a ddefnyddir amlaf, gan ei fod yn gwarantu nenfydau perfformiad.
Mae Omega yn disgrifio'r amser lleiaf sydd ei angen. Er enghraifft:
- Mae chwiliad llinol wedi
(1)
os mai'r targed yw'r elfen gyntaf.
Er ei fod yn optimistaidd, mae dadansoddiad achos gorau yn llai addysgiadol ar gyfer cynllunio achos gwaethaf.
Mae Theta yn cyfuno Big O ac Omega, gan gynrychioli'r ymddygiad asymptotig union. Os yw achosion gorau a gwaethaf algorithm yr un peth:
-
(n log n)
yn berthnasol i uno mathau o senarios cyfartalog a gwaethaf posibl.
Mae'r nodiadau hyn yn tynnu sylw at gysonion a thermau o orchymyn is, gan ganolbwyntio ar gyfraddau twf. Er enghraifft, 2n + 3n + 4 symleiddio i O(n) oherwydd bod y term cwadratig yn dominyddu ar gyfer rhai mawr n .
Mae deall dosbarthiadau cymhlethdod yn helpu i gategoreiddio algorithmau yn ôl graddadwyedd. Dyma hierarchaeth o'r mwyaf effeithlon i'r lleiaf effeithlon:
Mae amser gweithredu neu gof yn aros yr un fath fel
n
yn tyfu.
-
Enghraifft
: Mynediad at werth tabl hash trwy allwedd.
Mae amser rhedeg yn tyfu'n logarithmig gyda
n
.
-
Enghraifft
Mae chwiliad deuaidd yn haneru'r gofod mewnbwn bob iteriad.
Mae amser rhedeg yn graddio'n gymesur â
n
.
-
Enghraifft
Chwilio llinol drwy restr heb ei didoli.
Cyffredin mewn algorithmau rhannu a gorchfygu.
-
Enghraifft
Cyfuno trefn a threfnu pentwr.
Mae iteriadau nythu yn arwain at dwf ffrwydrol.
-
Enghraifft
Trefnu swigod a threfnu dethol.
Mae amser rhedeg yn dyblu gyda phob mewnbwn ychwanegol.
-
Enghraifft
Cyfrifiad Fibonacci dychweliadol heb gofio.
Algorithmau sy'n seiliedig ar bermutiad.
-
Enghraifft
Datrys problem y gwerthwr teithiol drwy rym brwd.
Y gwahaniaeth rhwng O(n log n) a O(n) yn dod yn llwm am n = 10 : gallai'r cyntaf weithredu mewn milieiliadau, tra gallai'r olaf gymryd dyddiau.
Mae algorithmau'n perfformio'n wahanol yn seiliedig ar gyfluniadau mewnbwn. Mae dadansoddi pob achos yn sicrhau cadernid:
Gallai optimeiddiwr ymholiadau cronfa ddata ddewis rhwng ymuno hash ( O(n + m) ) ac ymuno dolen nythu ( O(nm) ) yn seiliedig ar ddosbarthiad data. Mae dadansoddiad o'r achos gwaethaf yn hanfodol ar gyfer systemau sy'n hanfodol i ddiogelwch (e.e., meddalwedd awyrenneg), lle mae anrhagweladwyedd yn annerbyniol.
Gellir datrys yr un broblem gan ddefnyddio algorithmau gwahanol. Er enghraifft, gellir datrys y broblem o chwilio am werth targed mewn rhestr o werthoedd gan ddefnyddio gwahanol algorithmau, megis chwiliad llinol, chwiliad deuaidd, neu chwiliad tabl hash.
Mae'r tabl isod yn cymharu cymhlethdodau amser a gofod yr algorithmau hyn ar gyfer chwilio am werth targed mewn rhestr o n gwerthoedd.
Mae'r dewis o algorithm yn dibynnu ar faint y broblem, nodweddion mewnbwn, ac adnoddau sydd ar gael. Er enghraifft, os yw'r rhestr yn fach ac heb ei didoli, chwiliad llinol yw'r dewis gorau o bosibl. Os yw'r rhestr yn fawr ac wedi'i threfnu, chwiliad deuaidd yw'r dewis gorau o bosibl. Os yw'r rhestr yn fawr a heb ei didoli, chwiliad tabl hash yw'r dewis gorau o bosibl.
Mae dadansoddiad amorteiddiedig yn cyfartaleddu amser dros ddilyniant o weithrediadau.
-
Enghraifft
Mae araeau deinamig yn dyblu capasiti pan fyddant yn llawn. Tra bod un sengl
gwthio
gallai'r llawdriniaeth gymryd
O(n)
amser, mae'r gost wedi'i hamorteiddio yn parhau
O(1)
.
Algorithmau fel
Monte Carlo
a
Las Vegas
defnyddio hap a damwain er mwyn effeithlonrwydd.
-
Enghraifft
Mae gan brawf cyntefigedd Miller-Rabin warantau tebygolrwydd ond mae'n gyflymach na dulliau penderfynedig.
Mae rhai problemau (e.e., boddhad Booleaidd) yn NP-gyflawn , sy'n golygu nad oes unrhyw ateb polynomial-amser hysbys yn bodoli. Mae profi cyflawnrwydd NP trwy ostyngiadau yn helpu i ddosbarthu caledwch cyfrifiadurol.
An O(n) Gallai algorithm clwstrio ddod yn dagfa ar gyfer setiau data enfawr, gan ysgogi symudiadau i ddulliau brasamcanu fel coed kd ( O(n log n) ).
Mae systemau allwedd gyhoeddus yn dibynnu ar galedwch O(2) problemau (e.e., ffactorio cyfanrifau) i wrthsefyll ymosodiadau.
Mae peiriannau rendro amser real yn blaenoriaethu O(1) algorithmau ar gyfer efelychiadau ffiseg i gynnal 60+ FPS.
Mae cyfaddawdau'n bwysig:
-
Amser yn erbyn Gofod
Defnyddiwch fapiau hash (
O(1)
chwiliadau) ar gost cof.
-
Symlrwydd yn erbyn Optimeiddiad
Trefnu mewnosod (
O(n)
) efallai y byddai'n well ar gyfer setiau data bach, bron wedi'u didoli.
Ar gyfer algorithmau dychweliadol, mae cysylltiadau dychweliadol yn modelu amser rhedeg. Er enghraifft, mae uno yn trefnu ailadrodd:
[ T(n) = 2 T(n/2) + O(n) ] yn datrys i
O(n log n)
drwy'r
Theorem Meistr
.
Mae profion empirig yn ategu dadansoddiad damcaniaethol. Mae offer proffilio (e.e., Valgrind, perf) yn datgelu tagfeydd yn y byd go iawn.
python
def swm_llinol(arr):
cyfanswm = 0
ar gyfer rhif yn arr:
cyfanswm += nifer
cyfanswm dychwelyd
swm_cwadratig_def(arr):
cyfanswm = 0
i mi mewn trefniant:
ar gyfer j mewn trefniant:
cyfanswm += i * j
cyfanswm dychwelyd
Tra O(n) yn tynnu cysonion i ffwrdd, a 100n gallai'r algorithm fod yn arafach nag a 0.01n algorithm ar gyfer ymarferol n .
An O(n log n) gallai'r algorithm fod yn tanberfformio O(n) ar gyfer n = 10 oherwydd costau uwchben.
Swyddogaeth Fibonacci wedi'i chofio ( O(n) gofod) gallai chwalu ar fewnbynnau mawr, yn wahanol i fersiwn iterus ( O(1) gofod).
BST hunan-gydbwysol ( O(log n) chwilio) yn fwy diogel na BST rheolaidd ( O(n) achos gwaethaf) ar gyfer data annibynadwy.
Dadansoddi cymhlethdod algorithmau yw'r cwmpawd sy'n tywys datblygwyr trwy dirwedd eang effeithlonrwydd cyfrifiadurol. I fyfyrwyr MTSC7196, mae meistroli'r ddisgyblaeth hon yn pontio gwybodaeth ddamcaniaethol ac arbenigedd ymarferol. Drwy ddadansoddi gofynion amser a gofod, cymharu ffiniau asymptotig, a llywio cyfaddawdau yn y byd go iawn, gall datblygwyr lunio systemau sy'n graddio'n rasol ac yn perfformio'n ddibynadwy.
Mewn oes a ddiffinnir gan arloesedd sy'n seiliedig ar ddata, y gallu i wahaniaethu rhwng O(n log n) a O(n) Nid dim ond academaidd yw'r ateb, mae'n orchymyn strategol. Wrth i chi symud ymlaen trwy'ch astudiaethau, cofiwch: nid yw dadansoddi cymhlethdod yn ymwneud â rhifau a symbolau yn unig. Mae'n ymwneud â deall curiad calon cyfrifiadura ei hun.
Er 2019, sefydlwyd Meet U Emwaith yn Guangzhou, China, sylfaen gweithgynhyrchu gemwaith. Rydym yn fenter gemwaith yn integreiddio dylunio, cynhyrchu a gwerthu.
+86-19924726359/+86-13431083798
Llawr 13, Gorllewin Tŵr Gome Smart City, Rhif. 33 Juxin Street, Ardal Haizhu, Guangzhou, China.