Dritt kollox, hekk, kumplessità komputazzjoni. Just daqsxejn ta 'twissija qabel we adsa wisq far-- dan ser probabbilment tkun fost l-affarijiet aktar matematika heavy nitkellmu dwar fil CS50. Nisperaw li mhux se jkun wisq kbira u aħna ser nippruvaw u niggwidawk permezz tal-proċess, iżda biss daqsxejn ta 'twissija leali. Hemm ftit tal-matematika involuti hawnhekk. Kull dritt, hekk sabiex użu tar-riżorsi komputazzjonali tagħna fil-world-- reali huwa tassew importanti li wieħed jifhem algoritmi u kif huma jipproċessaw data. Jekk għandna verament algoritmu effiċjenti, aħna jistgħu jimminimizzaw l-ammont ta 'riżorsi għandna disponibbli biex jittrattaw dan. Jekk għandna algoritmu li se jieħu ħafna xogħol għall-proċess verament sett kbir ta 'data, huwa se jeħtieġu aktar u aktar riżorsi, li huwa flus, RAM, dak kollu li tip ta 'għalf. Allura, tkun tista 'tanalizza l algoritmu tuża dan is-sett għodda, bażikament, jitlob lill-question-- kif ma din l-iskala algoritmu kif aħna tarmi data aktar u aktar fuq dan? Fil CS50, l-ammont ta 'data nkunu ħidma ma huwa pjuttost żgħir. Ġeneralment, il-programmi tagħna ser jiddekorri fit-tieni jew less-- probabbilment ħafna inqas speċjalment kmieni fuq. Imma naħseb dwar kumpannija li jittratta ma 'mijiet ta' miljuni ta 'klijenti. U jeħtieġ li jipproċessaw li d-data tal-klijent. Billi n-numru ta 'klijenti li jkollhom gets akbar u akbar, li għaddej biex bżonn aktar u aktar riżorsi. Kemm aktar riżorsi? Ukoll, li jiddependi fuq kif aħna tanalizza l-algoritmu, jużaw l-għodod f'dan toolbox. Meta nitkellmu dwar il-kumplessità tal l algorithm-- li xi kultant tkun taf tismagħha imsejħa ħin kumplessità jew spazju kumplessità imma aħna qed biss jmorru sejħa complexity-- aħna qed ġeneralment jitkellem dwar l-agħar xenarju. Minħabba l-pile assoluta agħar ta ' data li nistgħu jkunu jitfg lejn dan, kif dan algoritmu se jipproċessaw jew tittratta dik id-data? Aħna ġeneralment sejħa tal-agħar każ runtime ta 'algoriżmu big-O. Allura algoriżmu jista 'jingħad li run fil O ta 'n jew O ta' n kwadrat. U aktar dwar dak dawk jfissru fit-tieni. Kultant, għalkemm, nagħmlu kura dwar l aħjar xenarju possibbli. Jekk id-data huwa kollox ridna li jkun u kien assolutament perfetta u konna tibgħat din perfetta sett ta 'data permezz algoritmu tagħna. Kif ikun jidher jimmaniġġjaw f'dik is-sitwazzjoni? Aħna kultant jirreferu għal dak li big-Omega, hekk b'kuntrast ma big-O, għandna big-Omega. Big-Omega għall-aħjar xenarju possibbli. Big-O għall-agħar xenarju. Ġeneralment, meta nitkellmu dwar il-kumplessità ta 'algoriżmu, aħna qed jitkellem dwar il- agħar xenarju. Sabiex iżommu dan f'moħħhom. U f'din il-klassi, aħna qed tmur ġeneralment li jħallu l-analiżi rigoruża aside. Hemm xjenzi u l-oqsma iddedikat għal dan it-tip ta 'għalf. Meta nitkellmu dwar ir-raġunament permezz ta 'algoritmi, li aħna ser nagħmlu biċċa-by-biċċa għal ħafna algoritmi nitkellmu dwar fil-klassi. Aħna verament biss jitkellem dwar raġunament permezz ta 'dan ma' sens komun, mhux mal formuli, jew provi, jew xi ħaġa bħal dik. Għalhekk tinkwetax, Aħna mhux se tkun dawran għal ġol klassi matematika big. So I qal we care about kumplessità minħabba li tqajjem il-mistoqsija, kif do algoritmi tagħna jimmaniġġjaw akbar u settijiet ta 'data kbar jintefgħu fil minnhom. Ukoll, dak li huwa sett ta 'data? What did I jfisser meta I qal li? Dan ifisser kwalunkwe jagħmilhom l-aktar sens kuntest, li tkun onest. Jekk għandna algoritmu, il Proċessi Strings-- aħna qed probabbilment jitkellem dwar id-daqs tas-sekwenza. Dik hija d-data set-- id-daqs, in-numru ta 'karattri li jiffurmaw il-sekwenza. Jekk aħna qed jitkellem dwar algoritmu li l-proċessi fajls, nistgħu jkun jitkellem dwar kif ħafna kilobytes jinkludu dan il-fajl. U dak l-sett tad-dejta. Jekk aħna qed jitkellem dwar algoritmu li mankijiet arrays b'mod aktar ġenerali, bħal algoritmi issortjar jew tiftix algoritmi, aħna qed probabbilment jitkellem dwar in-numru ta 'elementi li jinkludu firxa. Issa, nistgħu jkejjel algorithm-- b'mod partikolari, meta ngħid li nistgħu ikejlu algoritmu, I tfisser nistgħu miżura kif ħafna riżorsi li tieħu up. Jekk dawk ir-riżorsi huma, kemm bytes ta RAM-- jew megabytes RAM hija tuża. Jew kemm ħin li tieħu biex imexxu. U nistgħu sejħa dan ikejlu, b'mod arbitrarju, f tar n. Fejn n huwa n-numru ta ' elementi fis-sett tad-dejta. U f 'n huwa kemm somethings. Kemm unitajiet ta 'riżorsi ma jirrikjedi li jipproċessaw dik id-data. Issa, aħna fil-fatt ma 'kura dwar dak f 'n huwa eżattament. Fil-fatt, aħna rari ħafna will-- ċertament se qatt f'dan I class-- adsa fis xi verament fil-fond analiżi ta 'dak li f' n huwa. Aħna biss ser jitkellmu dwar dak f ta n huwa ta 'madwar jew dak li għandha tendenza li. U t-tendenza ta 'algoriżmu huwa dettata minn terminu tagħha ordni ogħla. U nistgħu naraw dak I tfisser li billi tieħu ħarsa lejn eżempju aktar konkreta. Mela ejja ngħidu li għandna tliet algoritmi differenti. L-ewwel wieħed minnhom jieħu n kubiku, xi unitajiet ta 'riżorsi biex jipproċessaw sett ta 'dejta ta' daqs n. Għandna tieni algoritmu li jieħu n kubiku flimkien ma 'riżorsi n kwadri biex jipproċessaw sett ta 'dejta ta' daqs n. U aħna għandna terz algoritmu li tmur in-- li jieħu n 8N minus kubiku kwadrat miżjuda b'20 n unitajiet ta 'riżorsi li tipproċessa algoritmu bl stabbiliti mid-daqs n data. Issa darb'oħra, aħna verament ma jkunux sejrin li jsibu rwieħhom dan il-livell ta 'dettall. Ninsab verament biss għandhom dawn il-up hawn bħala eżempju ta 'punt li jien ser tkun tagħmel fit-tieni, li hija li aħna biss verament kura dwar it-tendenza ta 'affarijiet bħala l-settijiet ta 'data tikber. Mela jekk is-sett tad-data huwa żgħir, hemm attwalment differenza pretty big f'dawn algoritmi. It-tielet algoritmu hemm jieħu 13-il darba aktar, 13-il darba l-ammont ta 'riżorsi biex imexxu relattiv għall-ewwel waħda. Jekk sett tad-dejta tagħna huwa daqs 10, li hija akbar, iżda mhux neċessarjament enormi, nistgħu naraw li hemm fil-fatt daqsxejn ta 'differenza. It-tielet algoritmu isir aktar effiċjenti. Huwa dwar attwalment 40% - jew 60% aktar effiċjenti. Huwa jieħu 40% tal-ammont ta 'ħin. Hija tista 'run-- tkun tista' tieħu 400 unità ta 'riżorsi biex jipproċessaw sett ta 'dejta ta' daqs 10. Billi l-ewwel algoritmu, għall-kuntrarju, jieħu 1,000 unità ta 'riżorsi biex jipproċessaw sett ta 'dejta ta' daqs 10. Iżda tfittex dak li jiġri bħala numri tagħna jiksbu saħansitra akbar. Issa, id-differenza bejn dawn algoritmi jibdew isiru ftit inqas apparenti. U l-fatt li hemm -ordni aktar baxxa terms-- jew minflok, termini ma exponents-- aktar baxx jibdew isiru irrilevanti. Jekk sett ta 'dejta hija ta' daqs 1000 u l-ewwel algoritmu jibda fl biljun passi. U t-tieni algoritmu runs fil biljun u miljun passi. U t-tielet algoritmu runs fi ftit jitmeżmżu ta biljun passi. Huwa pretty ħafna biljun passi. Dawk it-termini ordni aktar baxxa tibda biex isiru verament irrilevanti. U biss li verament martell dar il point-- jekk id-data mdaħħla tkun ta 'daqs ta' million-- kollha pretty ħafna tlieta minn dawn jieħu quintillion-- wieħed jekk matematika tiegħi huwa passi correct-- li jipproċessaw data mdaħħla ta 'daqs miljun. Li l-lott ta 'passi. U l-fatt li wieħed minnhom jista jieħu ftit 100,000, jew koppja 100 miljun, anki jekk inqas meta aħna qed jitkellem dwar numru li big-- huwa tip ta 'irrilevanti. Huma kollha għandhom tendenza li jieħdu madwar kubiku n, u hekk aħna fil-fatt tirreferi kollha ta 'dawn algoritmi bħala li qegħdin fuq l-ordni ta 'n kubiku jew big-O tal kubiku n. Hawnhekk hawn lista ta 'xi wħud mill-aktar klassijiet komuni kumplessità komputazzjoni li aħna ser tiltaqa fil algoritmi, ġeneralment. U wkoll speċifikament fil CS50. Dawn huma ordnati minn ġeneralment aktar mgħaġġla fil-quċċata, li ġeneralment iżgħar rata fil-qiegħ. Allura algoritmi ħin kostanti tendenza li jkun l-iktar mgħaġġla, irrispettivament tad-daqs tal- input tad-data inti tgħaddi fil. Huma dejjem jieħdu operazzjoni waħda jew unità waħda ta 'riżorsi biex jittrattaw. Jista 'jkun 2, dan jista' jkun jkun ta '3, jista' jkun 4. Imma hija numru kostanti. Hija ma jvarjax. Algoritmi ħin logaritmika huma ftit aħjar. U eżempju tassew tajjeb ta ' algoritmu żmien logaritmiku inti ħadthom żgur tidher minn issa huwa l- dmugħ apparti tal-ktieb tat-telefon biex isibu Mike Smith fil-ktieb tat-telefon. Aħna maqtugħin-problema min-nofs. U hekk kif n gets akbar u akbar u larger-- fil-fatt, kull darba li inti doppju n, hija tieħu biss pass aktar. Allura dak ħafna aħjar minn, ngħidu aħna, il-ħin lineari. Liema hija jekk inti doppja n, huwa jieħu doppju tal-għadd ta 'passi. Jekk inti triple n, hija tieħu triplu l-għadd ta 'passi. Pass wieħed għal kull unità. Imbagħad l-affarijiet jiksbu ftit more-- ftit inqas kbir minn hemm. Ikollok ħin rhythmic lineari, xi kultant imsejħa log ħin lineari jew biss n log n. U aħna ser eżempju ta 'algoriżmu li runs fil n log n, li għadu aħjar minn time-- n kwadratiċi kwadrat. Jew il-ħin polynomial, n tnejn kwalunkwe numru akbar minn tnejn. Jew il-ħin esponenzjali, li huwa saħansitra worse-- C għall-n. Allura xi numru kostanti jiżdied għal il-qawwa tad-daqs tal-input. Mela jekk hemm 1,000-- jekk il input tad-data hija ta 'daqs 1000, hija kienet ser tieħu C għall-qawwa 1000. Huwa ħafna agħar minn żmien polinomjali. Ħin fattorjali hija saħansitra agħar. U fil-fatt, hemm verament jeżistu algoritmi ħin infinita, bħal, hekk imsejħa sort-- stupid li xogħolhom huwa li saltwarjament shuffle firxa u mbagħad tikkontrolla biex tara kemm jekk huwa magħżula. U jekk mhuwiex, każwalment shuffle l-array mill-ġdid u tikkontrolla biex tara jekk huwa magħżula. U kif inti tista 'probabbilment imagine-- tista 'timmaġina sitwazzjoni fejn fil-agħar każ, li se fatt qatt ma tibda bil-firxa. Din l-algorithm imur għal dejjem. U għalhekk li jkun algoritmu ħin infinita. Nisperaw li int mhux se jkun miktub kwalunkwe ħin fattorjali jew infinita algoritmi fil CS50. Allura, ejja tagħti ftit aktar ħarsa konkreta lejn uħud sempliċi klassijiet kumplessità komputazzjoni. Allura għandna example-- jew żewġ eżempji here-- ta 'algoritmi ħin kostanti, li dejjem jieħdu operazzjoni waħda fl-agħar każ. Allura l-ewwel example-- għandna funzjoni sejjaħ 4 għalik, liema jieħu firxa ta 'daqs 1000. Imma mbagħad apparentement ma fil-fatt tfittex fil it-- ma verament kura x'hemm ġewwa ta 'dan, ta' dak array. Dejjem jirritorna erbgħa. Allura, din l-algorithm, minkejja l-fatt li jieħu 1,000 elementi ma tagħmel xejn magħhom. Jirritorna erbgħa. Huwa dejjem pass wieħed. Fil-fatt, żid 2 nums-- li Rajna qabel bħala well-- biss proċessi żewġ numri interi. Mhuwiex pass wieħed. Huwa fil-fatt passi koppja. Ikollok, ikollok b, inti żidhom flimkien, u inti output r-riżultati. Allura huwa 84 passi. Imma hija dejjem kostanti, irrispettivament ta 'jew b. Inti għandek tikseb, nikseb b, żid flimkien, il-produzzjoni ir-riżultat. Allura li l-algoritmu żmien kostanti. Hawn eżempju ta ' algorithm-- ħin lineari algoritmu li gets-- li jieħu pass addizzjonali wieħed, possibbilment, bħala input tiegħek tikber b'1. Allura, ejja ngħidu aħna qed infittxu in-numru 5 ġewwa ta 'firxa. Inti jista 'jkollok sitwazzjoni fejn inti tista 'ssib pjuttost kmieni. Iżda int tista 'wkoll ikollha f'sitwazzjoni fejn jista 'jkun l-aħħar element tal-firxa. Fil-firxa ta 'daqs 5, jekk aħna qed tfittex għan-numru 5. Huwa se jieħu 5 passi. U fil-fatt, jimmaġina li hemm mhux 5 kullimkien f'dan array. Aħna xorta attwalment ikollhom ħarsa lejn kull element wieħed ta 'l-array sabiex jiġi determinat jekk 5. hemm. Allura fil-agħar każ, li huwa li l-element huwa aħħar fil-firxa jew ma jeżistix għal kollox. Għad għandna nħarsu lejn l-elementi kollha n. U hekk dan algoritmu tmur fil-ħin lineari. Inti tista 'tikkonferma li minn estrapolazzjoni ftit billi qal, jekk kellna firxa 6-element u aħna kienu qed ifittxu l-numru 5, jista 'jieħu 6 passi. Jekk għandna firxa 7-element u aħna qed tfittex għan-numru 5. Jista 'jieħu 7 passi. Kif aħna żid wieħed element aktar tagħna firxa, hija tieħu pass aktar. Li l-algoritmu lineari fl-agħar każ. Koppja mistoqsijiet malajr għalik. X'hemm-runtime-- x'hemm l-agħar każ 'runtime ta 'dan snippet partikolari ta' kodiċi? So I jkollhom loop 4 hawn li timxi minn j ugwali 0, it-triq kollha sa m. U dak li jien jaraw hawnhekk, huwa li l- korp tal-linja jibda fil-ħin kostanti. Hekk billi tuża t-terminoloġija li konna diġà tkellem about-- dak ikun il-agħar każ runtime ta 'dan algoritmu? Tieħu t-tieni. Il-parti ta 'ġewwa tal-linja tmur fil-ħin kostanti. U l-parti ta 'barra tal- loop se jimxu ħinijiet m. Allura x'inhu l-agħar każ runtime hawn? Ridt raden big-O ta 'm? Youd tkun id-dritt. Kif dwar xulxin? Din id-darba għandna loop ġewwa ta 'loop. Għandna linja ta 'barra li tmur minn żero għal p. U għandna loop ġewwa li timxi minn żero għal p, u ġewwa minn dan, I istat li l-korp l- loop runs fil-ħin kostanti. Allura x'inhu l-agħar każ runtime ta 'dan snippet partikolari ta' kodiċi? Ukoll, għal darb'oħra, għandna loop barra li timxi żminijiet p. U kull iterazzjoni time-- ta 'dak loop, pjuttost. Għandna linja ta 'ġewwa li timxi ukoll ħinijiet p. U allura ġewwa minn dan, hemm il- snippet ftit time-- kostanti hemmhekk. Mela jekk għandna loop barra li runs drabi p ġewwa tagħhom ikun loop ġewwa li runs p times-- dak li hu l-agħar każ 'runtime ta 'dan snippet ta' kodiċi? Ridt raden big-O ta 'p kwadrat? Jien Doug Lloyd. Dan huwa CS50.