[Powered by Google Translate] You ħadthom probabbilment jinstemgħu nies jitkellmu dwar l-algoritmu mgħaġġel u effiċjenti
għall-eżekuzzjoni kompitu partikolari tiegħek,
imma dak eżattament jfisser għal algoritmu li tkun rapida u effiċjenti?
Ukoll, huwa ma jitkellem dwar kejl fil-ħin reali,
bħal f'sekondi jew minuti.
Dan huwa minħabba ħardwer tal-kompjuter
u softwer jvarjaw b'mod drastiku.
Programm My jista 'jmur aktar kajman minn tiegħek,
għaliex jien running fuq kompjuter anzjani,
jew minħabba I jiġri li tkun playing video game online
fl-istess ħin, li huwa hogging l-memorja tiegħi,
jew I jista 'tkun qed taħdem programm tiegħi permezz ta' software differenti
li tikkomunika mas-magna differenti f'livell baxx.
Huwa simili tqabbel it-tuffieħ u larinġ.
Sempliċiment għax il-kompjuter bil-mod tiegħi jieħu aktar
minn tiegħek biex tagħti lura tweġiba
ma jfissirx li inti għandek l-algoritmu aktar effiċjenti.
>> Allura, peress li ma nistgħux direttament jqabblu l-runtimes tal-programmi
f'sekondi jew minuti,
kif nistgħu iqabblu 2 algoritmi differenti
irrispettivament mill-hardware tagħhom jew l-ambjent tas-softwer?
Biex jinħoloq mod aktar uniformi ta 'kejl effiċjenza algorithmic,
xjenzjati tal-kompjuter u matematiċi fasslu
kunċetti għall-kejl tal-kumplessità asintotiku ta 'programm
u notazzjoni imsejjaħ "Ohnotation Big"
għad-deskrizzjoni dan.
Id-definizzjoni formali hija li f funzjoni (x)
timxi fuq l-ordni ta 'g (x)
jekk jeżisti xi valur (x), x ₀ u
xi kostanti, C, li għaliha
f (x) huwa inqas minn jew ugwali għal
li g ħinijiet kostanti (x)
għal kulħadd x akbar minn x ₀.
>> Imma ma jkun jibża bogħod mid-definizzjoni formali.
Xi jfisser dan fil-fatt tfisser fil inqas f'termini teoretiċi?
Ukoll, huwa bażikament mod ta 'analiżi
kif fast runtime ta 'programm tikber asimptotikalment.
Dan huwa, bħala l-daqs ta 'inputs tiegħek żidiet lejn infinità,
jiġifieri, int issortjar firxa ta 'daqs 1000 meta mqabbla mal-firxa ta' daqs 10.
Kif il-runtime tal-programm tiegħek jikbru?
Per eżempju, immaġina għadd tan-numru ta 'karattri
fil string-aktar sempliċi mod
bil-mixi permezz tal-sekwenza sħiħa
ittra-by-ittra u żżid 1 sa kontro għal kull karattru.
Dan algoritmu huwa qal li jimxu fil-ħin lineari
fir-rigward tan-numru ta 'karattri,
"N" fil-sekwenza.
Fil-qosor, hija tmur fil O (n).
Għaliex dan?
Ukoll, bl-użu dan l-approċċ, il-ħin meħtieġ
travers-sekwenza sħiħa
huwa proporzjonali għan-numru ta 'karattri.
Għadd tan-numru ta 'karattri fi string 20-karattri
huwa ser jieħu darbtejn sakemm li tieħu
li jgħoddu l-karattri fil string 10-karattru,
għaliex inti għandek tfittex fil-karattri
u kull karattru tieħu l-istess ammont ta 'żmien li nħarsu lejn.
Kif inti żżid l-għadd ta 'karattri,
l-runtime se jiżdied b'mod lineari mat-tul input.
>> Issa, jimmaġina jekk inti tiddeċiedi dak iż-żmien lineari,
O (n), biss ma kienx mgħaġġel biżżejjed għalik?
Forsi int ħażna kordi enormi,
u inti ma tistax taffordja l-ħin żejjed li se tieħu
travers kollha ta 'karattri tagħhom jgħoddu wieħed mill-wieħed.
Għalhekk, inti tiddeċiedi li tipprova xi ħaġa differenti.
X'jiġri jekk inti jiġri li diġà jaħżen in-numru ta 'karattri
fil-sekwenza, jiġifieri, fil-varjabbli imsejjaħ "len,"
kmieni fil-programm,
qabel ma inti anki maħżuna l-karattru ħafna ewwel string tiegħek?
Imbagħad, kull youd għandek tagħmel issa biex issir taf l-tul string,
huwa jiċċekkjaw liema l-valur tal-varjabbli hi.
Inti ma nħarsu lejn l-sekwenza nnifisha fil-livelli kollha,
u aċċess għall-valur ta 'varjabbli bħal len hija kkunsidrata
operazzjoni asimptotikalment Kostanti tal-ħin,
jew O (1).
Għaliex dan? Ukoll, ftakar dak kumplessità asintotiku mezzi.
Kif il-bidla runtime id-daqs
inputs tal tiegħek tikber?
>> Tgħid li inti kienu qegħdin jippruvaw jiksbu l-għadd ta 'karattri fi string akbar.
Ukoll, ma jimpurtax kemm hu kbir inti tagħmel l-sekwenza,
anki miljuni karattri fit-tul,
kull youd tagħmel biex isibu tul il-sekwenza ma 'dan l-approċċ,
huwa li jaqra l-valur tal-len varjabbli,
li inti diġà saru.
It-tul input, jiġifieri, it-tul tas-sekwenza qed jippruvaw isibu,
ma jaffettwax livelli kollha kif fast program tiegħek runs.
Din il-parti tal-programm tiegħek imur ugwalment mgħaġġel fuq string one-karattru
u string elf karattru,
u hu għalhekk li dan il-programm ikun magħruf bħala running fil-ħin kostanti
fir-rigward tad-daqs input.
>> Naturalment, hemm żvantaġġ.
Inti tqatta ispazju memorja extra fuq il-kompjuter tiegħek
ħażna tal-varjabbli
u l-ħin żejjed li tieħu inti
li jagħmlu l-ħażna attwali tal-varjabbli,
imma l-punt għadu stands,
jiskopru kemm string tiegħek kienet
ma jiddependix mit-tul tas-sekwenza fil-livelli kollha.
Għalhekk, hija tmur fil O (1) jew il-ħin kostanti.
Dan ċertament ma jfissirx li jkollhom
dan il-kodiċi tiegħek runs fl-1 pass,
iżda l-ebda kwistjoni kif ħafna passi li huwa,
jekk dan ma jbiddilx id-daqs ta 'l-inputs,
huwa għadu asimptotikalment kostanti li aħna jirrappreżentaw bħala O (1).
>> Kif tista 'probabbilment raden,
hemm diversi runtimes kbar ħafna O biex jitkejlu algoritmi ma.
O (n) ² algoritmi huma asimptotikalment aktar kajman milli O (n) algoritmi.
Dan huwa, bħala n-numru ta 'elementi (n) tikber,
eventwalment O (n) ² algoritmi se tieħu aktar żmien
minn O (n) algoritmi jiddekorri.
Dan ma jfissirx O (n) algoritmi dejjem jimxu aktar mgħaġġel
minn O (n) ² algoritmi, anke fl-istess ambjent,
fuq l-istess ħardwer.
Forsi għal daqsijiet input żgħar,
lO (n) ² algoriżmu jista 'attwalment taħdem aktar malajr,
iżda, eventwalment, id-daqs input żidiet
lejn infinità, il-O (n) runtime ² algoritmu ta
eventwalment se eklissi l runtime tal-O (n) algoritmu.
Eżatt bħal kull operazzjoni matematika kwadratiċi
eventwalment se jispiċċaw biex jaqbżu kwalunkwe funzjoni lineari,
ebda kwistjoni kemm ta 'ras tibda l-funzjoni lineari jibda off ma.
Jekk int taħdem ma 'ammonti kbar ta' data,
algoritmi li jimxu fil O (n) ² żmien jista 'verament jispiċċaw lajma program tiegħek,
iżda għal daqsijiet input żgħar,
inti probabilment mhux se anki Avviż.
>> Ieħor kumplessità asintotiku hija,
ħin logaritmika, O (log n).
Eżempju ta 'algoriżmu li timxi dan malajr
huwa l-algoritmu klassika tfittxija binarja,
għal konstatazzjoni ta 'element fil-lista diġà magħżula ta' elementi.
>> Jekk ma tkunx taf liema tfittxija binarja ma,
I ser jispjegaw dan għalik verament malajr.
Ejja ngħidu li inti qed tfittex l-numru 3
f'dan firxa ta 'numri interi.
Hija tħares lejn l-element nofs tal-firxa
u jitlob, "Huwa l-element Irrid akbar minn, ugwali għal, jew inqas minn dan?"
Jekk huwa ugwali, imbagħad kbira. Sibtha l-element, u qed isir.
Jekk huwa akbar, allura inti taf l-element
għandu jkun fil-lemin tal-firxa,
u inti tista 'biss tħares lejn li fil-futur,
u jekk huwa iżgħar, allura inti taf għandu jkun fil-linja xellugija.
Dan il-proċess huwa imbagħad ripetut mal-firxa iżgħar daqs
sakemm l-element korrett jinstab.
>> Dan algoritmu qawwija qatgħat-daqs l-array fil nofs ma 'kull operazzjoni.
Allura, biex isibu element fil-firxa magħżula ta 'daqs 8,
l-aktar (log ₂ 8),
jew 3 ta 'dawn l-operazzjonijiet,
verifika tal-element tan-nofs, imbagħad qtugħ il-firxa fil nofs se jkunu meħtieġa,
billi firxa ta 'daqs 16 jieħu (log ₂ 16),
jew 4 operazzjonijiet.
Dak biss 1 tħaddim aktar għal firxa irduppjat-daqs.
Irduppjar-daqs tal-array
iżid il-runtime billi biss 1 blokki ta 'dan il-kodiċi.
Għal darb'oħra, l-iċċekkjar l-element nofs tal-lista, imbagħad qsim.
Għalhekk, huwa qal li joperaw fil-ħin logaritmika,
O (log n).
Imma stenna, inti tgħidli,
ma dan jiddependi fuq fejn fil-lista l-element li qed tfittex huwa?
X'jiġri jekk l-ewwel element inti tħares lejn jiġri li jkun il-wieħed dritt?
Imbagħad, hija tieħu biss 1-operazzjoni,
ebda kwistjoni kemm hu kbir il-lista hija.
>> Ukoll, hu għalhekk li x-xjenzjati tal-kompjuter għandhom termini aktar
għall-kumplessità asintotika li jirriflettu l-aħjar każ
u l-agħar każ prestazzjonijiet ta 'algoritmu.
Aktar suppost, il-limiti ta 'fuq u t'isfel
fuq il-runtime.
Fil-każ aħjar għal tfittxija binarja, l-element tagħna huwa
hemm dritt fin-nofs,
u ġġibu fil-ħin kostanti,
ebda kwistjoni kemm hu kbir il-bqija ta 'l-array huwa.
Is-simbolu użat għal dan hija Ω.
Għalhekk, dan algoritmu huwa qal li jimxu fil Ω (1).
Fil-każ aħjar, isib l-element malajr,
ebda kwistjoni kemm hu kbir il-firxa hija,
iżda fl-agħar każ,
għandu jwettaq (log n) il-kontrolli maqsuma
tal-firxa biex isibu l-element dritt.
Limiti agħar każ ta 'fuq huma msemmija bl-big "O" li inti diġà taf.
Għalhekk, huwa O (log n), iżda Ω (1).
>> A tfittxija lineari, b'kuntrast,
fejn inti timxi permezz ta 'kull element tal-firxa
biex isibu l-waħda tixtieq,
huwa fl-aħjar Ω (1).
Għal darb'oħra, l-ewwel element li trid.
Għalhekk, ma jimpurtax kemm hu kbir il-firxa hija.
Fl-agħar każ, huwa l-aħħar element fil-firxa.
Allura, inti għandek timxi permezz elementi kollha n fil-firxa li jsibuha,
bħal jekk inti kienu qed ifittxu għal 3.
Għalhekk, hija tmur fil O (n) iż-żmien
għaliex dan huwa proporzjonali għan-numru ta 'elementi fil-firxa.
>> Wieħed simbolu aktar użata hija Θ.
Dan jista 'jintuża biex jiddeskrivi algoritmi fejn l-każijiet aħjar u l-agħar
huma l-istess.
Dan huwa l-każ fil-algoritmi string-tul tkellimna dwar preċedenti.
Dan huwa, jekk aħna jaħżnu varjabbli qabel
aħna jaħżnu l-sekwenza u l-aċċess aktar tard fil-ħin kostanti.
Ma jimpurtax f'liema numru
aħna qed ħażna f'dik varjabbli, aħna ser ikollhom biex tħares lejn din.
Il-każ l-aħjar huwa, inħarsu lejn din
u ssib it-tul tas-sekwenza.
Allura Ω (1) jew aħjar każ ħin kostanti.
L-agħar każ hija,
irridu nħarsu lejn din u ssib it-tul tas-sekwenza.
Allura, O (1) jew il-ħin kostanti fil-agħar każ.
Għalhekk, peress li l-każ l-aħjar u l-agħar każijiet huma l-istess,
dan jista 'jingħad li jimxu fil Θ (1) iż-żmien.
>> Fil-qosor, għandna modi tajba biex raġuni dwar l-effiċjenza kodiċijiet
mingħajr ma jkunu jafu xejn dwar il-ħin tad-dinja reali li jieħdu biex jaħdmu,
li huwa affettwat minn ħafna fatturi esterni,
inkluż hardware differenti, software,
jew l-ispeċifiċitajiet tal-kodiċi tiegħek.
Ukoll, tippermetti magħna biex raġuni sew dwar dak li se jiġri
meta d-daqs taż-żidiet inputs.
>> Jekk int taħdem fl-O (n) ² algoritmu,
jew agħar, O (2 ⁿ) algoritmu,
wieħed mit-tipi li qed jikbru malajr,
inti ser verament tibda l-avviż l-istaġnar
meta tibda taħdem ma ammonti akbar ta 'data.
>> Dak kumplessità asintotiku. Grazzi.