KEVIN SCHMID: Xi kultant, meta bini ta ' programm, inti tista 'tixtieq li jutilizza struttura tad-data magħrufa bħala dizzjunarju. A keys mapep dizzjunarju, li huma normalment kordi, għall-valuri, ints, Chars, pointer għal xi oġġett, xi rridu. Huwa biss bħal dizzjunarji ordinarji kliem li Mappa permezz ta 'definizzjonijiet. Dizzjunarji tagħtina l- abbiltà li jaħżen informazzjoni assoċjat ma 'xi ħaġa u tfittex it up aktar tard. Allura kif nistgħu attwalment timplimenta dizzjunarju fi, ngħidu aħna, il-kodiċi C li nistgħu użu f'wieħed mill-programmi tagħna? Ukoll, hemm ħafna ta 'modi li nistgħu timplimenta dizzjunarju. Għal waħda, nistgħu jużaw firxa li aħna daqs ġdid dinamikament jew aħna tista 'tuża lista marbuta, tabella hash jew siġra binarju. Imma tkun xi tkun nagħżlu, għandna tkun konxja ta 'l-effiċjenza u prestazzjoni tal-implimentazzjoni. Għandna naħsbu dwar l-algoritmu użat li daħħal u jfittxu up oġġetti fis struttura tad-data tagħna. Għal issa, ejja nassumu li aħna jridu jużaw kordi bħala keys. Ejja nitkellmu dwar possibilità waħda, struttura data tissejjaħ trie. Allura hawnhekk rappreżentazzjoni viżiva ta 'trie. Peress li l-istampa jissuġġerixxi, a trie huwa struttura data siġra ma lymph marbuta flimkien. Naraw li hemm b'mod ċar għerq node ma 'xi links li jestendi għall- punti strateġiċi oħrajn. Imma x'tagħmel kull node jikkonsisti? Jekk nassumu li aħna qed jaħżnu keys b'karattri alfabetiċi biss, u aħna ma jimpurtahom dwar kapitalizzazzjoni, Heres definizzjoni ta 'node li biżżejjed. Oġġett li tip huwa Istituzzjonjijiet node għandu żewġ partijiet imsejħa data u tfal. Imxejna ħallew il-parti tad-data bħala kumment jiġu sostitwiti minn komponent dikjarazzjoni meta node Istituzzjonjijiet huwa inkorporati fi programm C. Il-parti tad-data ta 'node jista' jkun Valur Boolean jindika jekk mhux l-node jirrappreżenta t-tlestija ta 'ċavetta dizzjunarju jew jista' jkun string jirrappreżenta d-definizzjoni ta 'kelma fid-dizzjunarju. Aħna ser jużaw wiċċ smiley biex jindikaw meta d-data hija preżenti fi node. Hemm 26-elementi fil tagħna tfal array, indiċi wieħed kull karattru alfabetiku. Ser naraw l-importanza ta 'dan dalwaqt. Ejja tikseb ħarsa aktar mill-qrib ta 'l-node għerq fil dijagramma tagħna, li m'għandha l-ebda data assoċjat miegħu, kif indikat mill- assenza tal-wiċċ smiley fil- porzjon data. Il-vleġeġ li jestendu mill-partijiet ta ' it-tfal array jirrappreżentaw non-node pointers għal punti strateġiċi oħrajn. Per eżempju, il-vleġġa testendi minn it-tieni element tat-tfal jirrappreżenta l-ittra B fi ewlenin dizzjunarju. U fid-dijagramma akbar aħna tikketta bi B. Innota li fid-dijagramma akbar, meta aħna jiġbed pointer biex node ieħor, Ma jimpurtax fejn l-arrowhead jissodisfa dik node oħra. Trie dizzjunarju kampjun tagħna fiha żewġ kelmiet, li u zoom. Ejja jimxu permezz ta 'eżempju ta' tfittex up data għal ċavetta. Jissoponi ridna li tfittex l- valur li jikkorrispondi għall-banju ċavetta. Aħna ser tibda ħarsa tagħna up fil-node għerq. Imbagħad aħna ser tagħti l-ewwel ittra ta 'tagħna ewlenin, B, u ssib il-korrispondenti post fit-tfal firxa tagħna. Avviż li hemm eżattament 26 spots fil-firxa, waħda għal kull ittra ta ' l-alfabett. U aħna ser ikollhom l-tikek jirrappreżentaw il- ittri tal-alfabett fl-ordni. Aħna ser tħares lejn it-tieni indiċi imbagħad, indiċi waħda, għal B. B'mod ġenerali, jekk aħna għandhom xi alfabetiku karattru C we tista 'tiddetermina l-post korrispondenti fil-firxa tfal li jużaw kalkolu bħal dan. Nistgħu użaw tfal akbar array jekk ridna li joffru ħarsa up ta ' ċwievet ma 'firxa usa' ta 'karattri, bħall-kollu Sett il-karattru ASCII. F'dan il-każ, il-pointer fit-tfal firxa tagħna fuq indiċi wieħed ma jkunx null. Allura aħna ser tkompli tfittex up-banju ċavetta. Jekk aħna qatt jiltaqgħu a pointer null fil-post xieraq fiċ-tfal array filwaqt li aħna traversat-lymph, allura aħna ser ngħid li aħna ma setgħetx issib xi ħaġa għal dak ewlieni. Issa, aħna ser tagħti t-tieni ittra ta ' ewlenin tagħna, A, u jkomplu wara pointers b'dan il-mod sakemm aħna jaslu fit-tmiem ta 'ċavetta tagħna. Jekk aħna jilħqu t-tmiem taċ-ċavetta mingħajr ma tolqot xi sqaqien mejta, pointers nulla, kif inhu l-każ hawnhekk, allura aħna biss għandhom jiċċekkjaw ħaġ'oħra. Huwa dan ewlenin attwalment fid-dizzjunarju? Jekk iva, għandna issib valur, ukoll ta ' smiley icon wiċċ fid-dijagramma tagħna fejn truf l-kelma. Jekk hemm xi ħaġa oħra maħżuna id-data, allura aħna tista 'tibagħtu lura. Per eżempju, iż-żoo ċavetta ma tkunx fil- dizzjunarju, anke jekk aħna jista 'jkollhom laħqu t-tmiem ta 'dan ewlenin mingħajr qatt laqtu pointer null, filwaqt li aħna jtenni permezz tal-trie. Jekk aħna ppruvaw biex tfittex l-banju ewlenin, il- tieni indiċi array aħħar node, il- li tikkorrispondi għall-ittra H, kieku organizzaw pointer null. Allura banju mhijiex fid-dizzjunarju. U għalhekk trie hija unika billi l-keys huma qatt maħżuna b'mod espliċitu fil- l-istruttura tad-data. Allura kif nistgħu daħħal xi ħaġa fi trie? Ejja daħħal il-ċavetta zoo fis trie tagħna. Ftakar li wiċċ smiley fuq node jista jikkorrispondu kodiċi li sempliċi Valur Boolean biex jindikaw li zoo huwa fid-dizzjunarju jew jista ' jikkorrispondu għal aktar informazzjoni li għandna jixtiequ jassoċjaw ma 'l-zoo ewlenin, bħall-definizzjoni tal- kelma jew xi ħaġa oħra. F'xi metodi, il-proċess biex tiddaħħal xi ħaġa ġo trie huwa simili għal tfittex up xi ħaġa fil trie. Aħna ser tibda bil-node għerq mill-ġdid, pointers li ġejjin li jikkorrispondu għal l-ittri ta 'ċavetta tagħna. Fortunatament, konna kapaċi biex isegwu pointers it-triq kollha sakemm lħaqna l-aħħar taċ-ċavetta. Peress żoo huwa prefiss tal-kelma zoom, li huwa membru tal- dizzjunarju, aħna ma bżonn li jalloka xi punti strateġiċi ġodda. Nistgħu timmodifika l-node biex tindika li il-passaġġ ta 'karattri li jwasslu għal dan jirrappreżenta ewlieni fl dizzjunarju tagħna. Issa, ejja tipprova ddaħħal il- BATH ewlieni fil-trie. Aħna ser tibda fil-node għerq u jsegwu pointers għal darb'oħra. Iżda f'din is-sitwazzjoni, aħna hit mejta jintemm qabel aħna kapaċi jiksbu l- tmiem taċ-ċavetta. Issa, aħna ser bżonn jallokaw ftit ġdida lymph se jkollhom bżonn jallokaw waħda ġdida node għal kull jifdal ittra ta 'ċavetta tagħna. F'dan il-każ, aħna biss bżonn talloka node ġdid. Imbagħad aħna ser bżonn biex jagħmlu l-indiċi H referenza dan node ġdid. Għal darb'oħra, nistgħu timmodifika l-node biex jindikaw li l-passaġġ ta 'karattri li jwassal għal dan jirrappreżenta ewlieni fl-dizzjunarju tagħna. Ejja raġuni dwar il-asintotiku kumplessità tal-proċeduri tagħna għal dawn żewġ operazzjonijiet. Aħna Avviż li fiż-żewġ każijiet l-għadd ta 'passi algoritmu tagħna ħa ġie proporzjonali għall-għadd ta ' ittri fil-keyword. Dak id-dritt. Meta inti tixtieq tfittex up kelma fil- trie inti biss jeħtieġ li jtenni permezz l-ittri wieħed wieħed sakemm inti jew jilħqu t-tmiem tal-kelma jew hit tmiem mejta fil-trie. U meta inti tixtieq li daħħal ewlieni par fi trie valur bl-użu proċedura iddiskutejna, l-agħar każ se jkollhom inti jalloka node ġdid għal kull ittra. U aħna ser tassumi li l-allokazzjoni hija operazzjoni ta 'żmien kostanti. Mela jekk nassumu li t-tul muftieħ huwa imdawwar kostanti fiss, kemm inserzjoni u jfittxu up huma kostanti operazzjonijiet ħin għal trie. Jekk aħna ma tagħmel din l-assunzjoni li it-tul muftieħ huwa imdawwar fiss kostanti, allura jiddaħal u jfittxu up, fl-agħar każ, huma lineari fil- tul taċ-ċavetta. Avviż li l-numru ta 'oġġetti maħżuna fil-trie ma jaffettwax il-ħarsa up jew il-ħin inserzjoni. Huwa impatt biss mill- tul taċ-ċavetta. B'kuntrast, żżid entrati għal, per eżempju, tabella hash tendenza li tagħmel futur ħarsa up kajman. Filwaqt li dan jista 'ħoss attraenti fl-ewwel, aħna għandu jżomm f'moħħu li kumplessità asintotiku favorevoli ma jfisser li fil-prattika d-data istruttura hija neċessarjament eżenti minn kritika. Irridu wkoll jikkunsidraw li taħżen kelma fil trie għandna bżonn, fl-agħar każ, numru ta 'nodes proporzjonali it-tul tal-kelma nnifisha. Jipprova għandhom tendenza li jużaw ħafna spazju. Dak b'kuntrast ma 'tabella hash, fejn għandna bżonn biss wieħed node ġdid biex jaħżnu xi par valur ewlieni. Issa, għal darb'oħra fit-teorija, spazju kbir konsum ma tidhirx bħal big jittrattaw, speċjalment minħabba li moderna kompjuters għandhom gigabytes u gigabytes ta 'memorja. Iżda jirriżulta li aħna xorta jkollhom ninkwetaw dwar użu tal-memorja u organizzazzjoni għall-fini ta ' prestazzjoni, peress kompjuters moderni għandhom mekkaniżmi fis-seħħ skond il- hood biex iħaffu l-aċċess memorja. Iżda dawn il-mekkaniżmi xogħol aħjar meta aċċessi memorja isiru kompatti reġjuni jew żoni. U l-lymph ta 'trie jista jirrisjedu kullimkien f'dak borġ. Iżda dawn huma kompromessi li għandna nanalizzaw. Ftakar li, meta jagħżlu data struttura għal ċertu xogħol, aħna għandhom jaħsbu dwar liema tipi ta ' operazzjonijiet l-istruttura tad-data jeħtieġ li appoġġ u kemm il-prestazzjoni ta 'kull wieħed minn dawk kwistjonijiet operazzjonijiet lilna. Dawn l-operazzjonijiet jistgħu anki jestendu lil hinn minn sempliċiment bażiku ħarsa up u inserzjoni. Jissoponi ridna li timplimenta tip ta 'awto-sħiħ funzjonalità, ħafna bħall-search engine Google ma. Jiġifieri, jirritorna l-ċwievet u potenzjalment valuri li jkollu prefiss partikolari. A trie huwa unikament utli għal din l-operazzjoni. Huwa faċli li jtenni permezz il-trie għal kull karattru ta ' l-prefiss. Eżatt bħal tfittex up operazzjoni, nistgħu isegwu pointers karattru minn karattru. Imbagħad, meta aħna jaslu fit-tmiem ta 'l- prefiss, nistgħu jtenni permezz tal- porzjon li jifdal ta 'l-istruttura tad-data peress li kwalunkwe mill-keys lil hinn dan il-punt għandhom il-prefiss. Huwa wkoll faċli li tikseb din il-lista f'ordni alfabetiku peress li l- elementi tal-firxa tfal huma ordnati alfabetikament. Hekk nisperaw inti ser tikkunsidra għoti tipprova jipprova. Jien Kevin Schmid, u dan huwa CS50. Ah, dan huwa l-bidu tat-tnaqqis. Jien sorry. Jiddispjacini. Jiddispjacini. Jiddispjacini. Strike erbgħa. Jien out. Jiddispjacini. Jiddispjacini. Jiddispjacini. Sorry biex issir l-persuna li irid jeditjaw din tmur crazy. Jiddispjacini. Jiddispjacini. Jiddispjacini. Jiddispjacini. SPEAKER 1: Prosit. Li sar verament tajjeb.