1 00:00:00,000 --> 00:00:00,030 2 00:00:00,030 --> 00:00:00,460 >> DAVID Malan: pob hawl. 3 00:00:00,460 --> 00:00:01,094 Rydym yn ôl. 4 00:00:01,094 --> 00:00:04,260 Felly, yn y segment hwn ar raglennu beth Yr wyf yn meddwl y bydden ni'n ei wneud yn gymysgedd o bethau. 5 00:00:04,260 --> 00:00:06,340 Un, yn gwneud ychydig bach o rywbeth dwylo-ar, 6 00:00:06,340 --> 00:00:08,690 er ei ddefnyddio yn fwy chwareus environment-- rhaglennu 7 00:00:08,690 --> 00:00:11,620 un sy'n dangosol o yn union y mathau o syniadau 8 00:00:11,620 --> 00:00:14,220 rydym wedi bod yn siarad am, ond ychydig yn fwy ffurfiol. 9 00:00:14,220 --> 00:00:18,200 Dau, yn edrych ar rai o'r y ffyrdd mwy technegol 10 00:00:18,200 --> 00:00:21,520 y byddai rhaglennydd mewn gwirionedd yn datrys problemau fel y broblem chwilio 11 00:00:21,520 --> 00:00:24,530 ein bod yn edrych ar blaen ac hefyd yn fwy sylfaenol 12 00:00:24,530 --> 00:00:26,020 problem diddorol o ddatrys. 13 00:00:26,020 --> 00:00:28,840 >> Rydym yn unig cymryd yn ganiataol o gael mynd bod y llyfr ffôn ei ddidoli, 14 00:00:28,840 --> 00:00:31,980 ond ei ben ei hun mewn gwirionedd fath o problem caled gyda llawer o wahanol ffyrdd 15 00:00:31,980 --> 00:00:32,479 i'w datrys. 16 00:00:32,479 --> 00:00:34,366 Felly byddwn yn defnyddio'r rhain fel dosbarth o broblemau 17 00:00:34,366 --> 00:00:36,740 cynrychiolydd o bethau y mae y gellid ei datrys yn gyffredinol. 18 00:00:36,740 --> 00:00:38,980 Ac yna byddwn yn siarad am yn eithaf manwl beth 19 00:00:38,980 --> 00:00:42,360 Gelwir data structures-- ffyrdd ffansi fel rhestrau cysylltiedig 20 00:00:42,360 --> 00:00:46,290 a thablau hash a choed sy'n byddai rhaglennydd mewn gwirionedd 21 00:00:46,290 --> 00:00:48,890 defnyddio ac yn gyffredinol yn defnyddio ar y bwrdd gwyn i beintio 22 00:00:48,890 --> 00:00:51,840 darlun o'r hyn mae ef neu hi rhagweld ar gyfer gweithredu 23 00:00:51,840 --> 00:00:52,980 rhyw darn o feddalwedd. 24 00:00:52,980 --> 00:00:55,130 >> Felly gadewch i ni wneud yr ymarferol gyfran gyntaf. 25 00:00:55,130 --> 00:01:00,090 Felly, dim ond gael eich dwylo budr gyda amgylchedd a elwir scratch.mit.edu. 26 00:01:00,090 --> 00:01:02,636 Mae hwn yn offeryn a ddefnyddiwn yn ein dosbarth israddedig. 27 00:01:02,636 --> 00:01:04,510 Hyd yn oed er 'i' gynllunio am 12 ac i fyny oedrannau, 28 00:01:04,510 --> 00:01:07,570 rydym yn ei ddefnyddio ar gyfer yr hyd rhan o hynny gryn dipyn 29 00:01:07,570 --> 00:01:10,020 gan ei fod yn neis, hwyl ffordd graffigol o ddysgu 30 00:01:10,020 --> 00:01:12,160 ychydig rhywbeth am raglenni. 31 00:01:12,160 --> 00:01:17,600 Felly ewch at y URL, lle byddwch yn Dylai gweld tudalen eithaf fel hyn, 32 00:01:17,600 --> 00:01:23,330 a mynd yn ei flaen a chliciwch Ymunwch Scratch ar dde uchaf 33 00:01:23,330 --> 00:01:28,300 a dewis enw defnyddiwr a cyfrinair ac yn y pendraw yn cael eich hun 34 00:01:28,300 --> 00:01:29,970 yn scratch.mit.edu account--. 35 00:01:29,970 --> 00:01:32,165 36 00:01:32,165 --> 00:01:34,665 Yr wyf yn meddwl y byddwn i'n defnyddio hyn fel cyfle cyntaf i ddangos hyn. 37 00:01:34,665 --> 00:01:39,120 Mae cwestiwn yn dod i fyny yn ystod yr egwyl am yr hyn y cod mewn gwirionedd yn edrych fel. 38 00:01:39,120 --> 00:01:41,315 Ac rydym yn siarad yn ystod yr egwyl am C, 39 00:01:41,315 --> 00:01:45,060 mewn particular-- yn enwedig yn lefel is mewn iaith hŷn. 40 00:01:45,060 --> 00:01:47,750 Ac yr wyf yn unig oedd yn gyflym Google yn chwilio i ddod o hyd i cod C 41 00:01:47,750 --> 00:01:51,574 ar gyfer chwilio deuaidd, mae'r algorithm yr ydym defnyddio i chwilio y llyfr ffôn yn gynharach. 42 00:01:51,574 --> 00:01:54,240 Mae'r enghraifft benodol, wrth gwrs, nid yw'n chwilio llyfr ffôn. 43 00:01:54,240 --> 00:01:57,840 'I jyst yn chwilio criw cyfan o rhifau yn gof y cyfrifiadur. 44 00:01:57,840 --> 00:02:01,000 Ond os hoffech i ychydig gael gweledol synnwyr o'r hyn mae rhaglenni gwirioneddol 45 00:02:01,000 --> 00:02:05,370 iaith yn edrych fel, mae'n edrych yn rhywbeth bach fel hyn. 46 00:02:05,370 --> 00:02:09,759 Felly mae'n tua 20-a mwy, 30 neu felly linellau o god, 47 00:02:09,759 --> 00:02:12,640 ond y sgwrs rydym yn yn ei gael dros egwyl 48 00:02:12,640 --> 00:02:16,000 yn ymwneud â sut y mae hyn mewn gwirionedd cael morphed i mewn i zeros a rhai 49 00:02:16,000 --> 00:02:19,200 ac os nid ydych yn gallu mynd yn ôl hynny prosesu ac yn mynd o seroau a rhai 50 00:02:19,200 --> 00:02:20,210 Nôl i cod. 51 00:02:20,210 --> 00:02:22,620 >> Yn anffodus, mae'r broses mor trawsnewidiol 52 00:02:22,620 --> 00:02:24,890 ei fod yn llawer haws dweud na gwneud. 53 00:02:24,890 --> 00:02:29,400 Yr wyf yn mynd yn ei flaen ac yn troi mewn gwirionedd y rhaglen honno, Binary Chwilio, 54 00:02:29,400 --> 00:02:32,700 i mewn i zeros a rhai trwy gyfrwng rhaglen o'r enw y Cynullydd fy mod 55 00:02:32,700 --> 00:02:34,400 digwydd i gael fan hyn yn iawn ar fy Mac. 56 00:02:34,400 --> 00:02:37,850 Ac os ydych yn edrych ar y sgrîn yma, gan ganolbwyntio'n benodol 57 00:02:37,850 --> 00:02:43,520 ar y chwe golofnau canol yn unig, byddwch yn gweld dim ond sero a rhai. 58 00:02:43,520 --> 00:02:48,290 A'r rheini yw'r sero a rhai sy'n cyfansoddi yn union hynny rhaglen chwilio. 59 00:02:48,290 --> 00:02:53,720 >> Ac felly mae pob darn o bum ddarnau, pob beit o sero a rhai yma, 60 00:02:53,720 --> 00:02:57,310 yn cynrychioli rhai cyfarwyddyd fel arfer y tu mewn cyfrifiadur. 61 00:02:57,310 --> 00:03:00,730 Ac yn wir, os ydych chi wedi clywed y slogan marchnata "Intel tu mewn" - hynny, 62 00:03:00,730 --> 00:03:04,610 wrth gwrs, yn unig yn golygu bod gennych Intel CPU neu ymennydd y tu mewn i'r cyfrifiadur. 63 00:03:04,610 --> 00:03:08,000 A beth mae hynny'n ei olygu i fod yn CPU yw eich bod yn cael set cyfarwyddyd, 64 00:03:08,000 --> 00:03:08,840 felly, i siarad. 65 00:03:08,840 --> 00:03:11,620 >> Mae pob CPU yn y byd, mae llawer o eu gwneud gan Intel y dyddiau hyn, 66 00:03:11,620 --> 00:03:13,690 yn deall yn gyfyngedig nifer o gyfarwyddiadau. 67 00:03:13,690 --> 00:03:18,690 A chyfarwyddiadau hynny yn lefel mor isel fel ychwanegu'r rhain ddau rif at ei gilydd, 68 00:03:18,690 --> 00:03:22,560 lluoswch y ddau rif at ei gilydd, yn symud y darn hwn o ddata oddi yma 69 00:03:22,560 --> 00:03:27,340 i fan hyn yn y cof, ac eithrio hwn gwybodaeth oddi yma i yma yn y cof, 70 00:03:27,340 --> 00:03:32,200 ac felly forth-- felly iawn, iawn -Lefel isel, manylion bron electronig. 71 00:03:32,200 --> 00:03:34,780 Ond gyda'r rhai mathemategol gweithrediadau ynghyd 72 00:03:34,780 --> 00:03:37,410 â'r hyn yr ydym trafodwyd yn gynharach, cynrychiolaeth data 73 00:03:37,410 --> 00:03:40,450 fel zeros a rhai, gall byddwch yn cronni popeth 74 00:03:40,450 --> 00:03:44,180 y gall cyfrifiadur ei wneud heddiw, boed mae'n testunol, graffigol, cerddorol, 75 00:03:44,180 --> 00:03:45,580 neu fel arall. 76 00:03:45,580 --> 00:03:49,450 >> Felly, mae hyn yn hawdd iawn i gael ar goll yn y chwyn o gyflym. 77 00:03:49,450 --> 00:03:52,150 Ac mae llawer o heriau cystrawennol 78 00:03:52,150 --> 00:03:56,630 lle os ydych yn gwneud y symlaf, stupidest o typos dim un o'r rhaglen 79 00:03:56,630 --> 00:03:57,860 bydd yn gweithio o gwbl. 80 00:03:57,860 --> 00:04:00,366 Ac felly yn hytrach na defnyddio iaith fel C y bore yma, 81 00:04:00,366 --> 00:04:02,240 Yr wyf yn meddwl y byddai'n mwy o hwyl i'w wneud mewn gwirionedd 82 00:04:02,240 --> 00:04:04,840 rhywbeth mwy gweledol, a oedd yn tra gynlluniwyd ar gyfer plant 83 00:04:04,840 --> 00:04:08,079 mewn gwirionedd yn amlygiad perffaith o raglennu gwirioneddol 84 00:04:08,079 --> 00:04:10,370 language-- unig fydd yn digwydd i defnyddio lluniau yn lle testun 85 00:04:10,370 --> 00:04:11,710 i gynrychioli syniadau hynny. 86 00:04:11,710 --> 00:04:15,470 >> Felly, unwaith y byddwch yn wir yn cael cyfrif ar scratch.mit.edu, 87 00:04:15,470 --> 00:04:21,070 cliciwch y botwm Create ar dop chwith y safle. 88 00:04:21,070 --> 00:04:24,620 A dylech weld amgylchedd fel yr un rwy'n ar fin ei weld ar fy sgrîn 89 00:04:24,620 --> 00:04:26,310 fan hyn. 90 00:04:26,310 --> 00:04:29,350 A byddwn yn treulio dim ond ychydig ychydig o amser yn chwarae yma. 91 00:04:29,350 --> 00:04:34,080 Gadewch i ni weld os na allwn ni i gyd datrys rhai problemau gyda'i gilydd yn y ffordd ganlynol. 92 00:04:34,080 --> 00:04:39,420 >> Felly beth byddwch yn gweld o fewn y environment-- ac mewn gwirionedd dim ond gadael 93 00:04:39,420 --> 00:04:40,050 mi oedi. 94 00:04:40,050 --> 00:04:42,680 A oes unrhyw un ddim yma? 95 00:04:42,680 --> 00:04:45,070 Dim yma? 96 00:04:45,070 --> 00:04:45,800 IAWN. 97 00:04:45,800 --> 00:04:49,030 Felly, gadewch i mi nodi ychydig nodweddion yr amgylchedd hwn. 98 00:04:49,030 --> 00:04:55,024 >> Felly, ar gornel chwith uchaf y sgrin, rydym yn cael cam Scratch, felly i siarad. 99 00:04:55,024 --> 00:04:57,440 Scratch nid yn unig yn yr enw o hyn iaith rhaglennu; 100 00:04:57,440 --> 00:05:00,356 mae hefyd yn enw'r gath sy'n byddwch yn gweld yn ddiofyn yno mewn oren. 101 00:05:00,356 --> 00:05:02,160 Mae'n ar lwyfan, felly yn debyg iawn ddisgrifiais 102 00:05:02,160 --> 00:05:05,770 y crwban yn gynharach fel bod mewn amgylchedd bwrdd gwyn hirsgwar. 103 00:05:05,770 --> 00:05:09,800 byd hwn cath wedi'i gyfyngu yn gyfan gwbl at y petryal i fyny top yno. 104 00:05:09,800 --> 00:05:12,210 >> Yn y cyfamser, ar y dde ochr yma, mae'n 105 00:05:12,210 --> 00:05:15,610 dim ond ardal sgriptiau, a llechen wag os mynnwch. 106 00:05:15,610 --> 00:05:18,590 Dyma lle rydym yn mynd i ysgrifennu ein rhaglenni mewn dim ond hyn o bryd. 107 00:05:18,590 --> 00:05:22,935 Ac mae'r blociau adeiladu sy'n rhaid i ni defnyddio i ysgrifennu hyn program-- y pos 108 00:05:22,935 --> 00:05:25,310 darnau, os ydych will-- yn y rhai iawn yma yn y canol, 109 00:05:25,310 --> 00:05:27,500 ac maen nhw'n categoreiddio gan functionality. 110 00:05:27,500 --> 00:05:31,000 Felly, er enghraifft, dw i'n mynd i fynd yn ei flaen a dangos o leiaf un o'r rhain. 111 00:05:31,000 --> 00:05:33,690 Rydw i'n mynd i fynd yn ei flaen a chliciwch y categori Rheoli fyny top. 112 00:05:33,690 --> 00:05:35,720 >> Felly mae'r rhain yn y categorïau i fyny top. 113 00:05:35,720 --> 00:05:39,410 Rydw i'n mynd i glicio ar y categori Rheoli. 114 00:05:39,410 --> 00:05:44,020 Yn hytrach, yr wyf i'n mynd i glicio ar y Digwyddiadau categori, yr un i fyny cyntaf top. 115 00:05:44,020 --> 00:05:47,790 Ac os hoffech chi ddilyn ar hyd hyd yn oed fel yr ydym yn gwneud hyn, rydych yn eithaf croeso i. 116 00:05:47,790 --> 00:05:52,180 Rydw i'n mynd i glicio a llusgo hwn un cyntaf, "pan baner werdd glicio." 117 00:05:52,180 --> 00:05:58,410 Ac yna dwi'n mynd i ollwng 'i jyst yn fras ar dop fy llechi gwag. 118 00:05:58,410 --> 00:06:01,450 >> A beth sy'n neis am Scratch yw bod y darn pos, pan 119 00:06:01,450 --> 00:06:04,560 cyd-gloi gyda pos arall darnau, yn mynd i'w wneud yn llythrennol 120 00:06:04,560 --> 00:06:06,460 pa darnau pos rhai yn dweud ei wneud. 121 00:06:06,460 --> 00:06:09,710 Felly, er enghraifft, Scratch yn iawn yn awr ar ganol ei fyd. 122 00:06:09,710 --> 00:06:14,660 Rydw i'n mynd i fynd yn ei flaen a dewis yn awr, gadewch i ni ddweud, y categori Motion, 123 00:06:14,660 --> 00:06:18,000 os hoffech i wneud y same-- categori Motion. 124 00:06:18,000 --> 00:06:20,430 Ac yn awr yn sylwi gen i yn ei gyfanrwydd criw o darnau pos yma 125 00:06:20,430 --> 00:06:23,370 bod, unwaith eto, math o wneud yr hyn y maent yn ei ddweud. 126 00:06:23,370 --> 00:06:28,110 Ac yr wyf i'n mynd i fynd yn ei flaen a llusgo a gollwng y bloc symud i'r dde dros yma. 127 00:06:28,110 --> 00:06:31,860 >> Ac yn sylwi bod cyn gynted ag y byddwch yn ei gael yn agos at waelod y "faner werdd 128 00:06:31,860 --> 00:06:34,580 clicio botwm ", rhybudd sut llinell wen yn ymddangos, 129 00:06:34,580 --> 00:06:36,950 fel pe ei fod bron magnetig, mae eisiau i fynd yno. 130 00:06:36,950 --> 00:06:43,070 Dim ond gadael i fynd, a bydd yn snap gyda'i gilydd a bydd y siapiau yn cyd-fynd. 131 00:06:43,070 --> 00:06:46,620 Ac yn awr y gallwch efallai bron ddyfalu ble rydym yn mynd â hyn. 132 00:06:46,620 --> 00:06:51,570 >> Os edrychwch chi ar y cam Scratch dros yma ac yn edrych i ben ohono, 133 00:06:51,570 --> 00:06:55,142 byddwch yn gweld golau coch, yn rhoi'r gorau i arwyddion, a baner werdd. 134 00:06:55,142 --> 00:06:57,100 Ac yr wyf i'n mynd i fynd yn ei flaen a gwylio fy screen-- 135 00:06:57,100 --> 00:06:58,460 am ddim ond eiliad, pe gallech. 136 00:06:58,460 --> 00:07:01,960 Rydw i'n mynd i glicio ar y baner werdd ar hyn o bryd, 137 00:07:01,960 --> 00:07:07,850 a symudodd yr hyn sy'n ymddangos i fod yn 10 cam neu 10 picsel, 10 dotiau, ar y sgrin. 138 00:07:07,850 --> 00:07:13,390 >> Ac fel nad yw gyffrous, ond gadewch i mi gynnig 139 00:07:13,390 --> 00:07:17,440 heb hyd yn oed yn dysgu hyn, dim ond gan ddefnyddio'r hun eich osod intuition-- eich hun 140 00:07:17,440 --> 00:07:22,560 fi yn cynnig eich bod yn ffigwr sut i gwneud taith gerdded Scratch dde oddi ar y llwyfan. 141 00:07:22,560 --> 00:07:28,700 Wedi iddo wneud lle ar gyfer yr ochr dde y sgrin, yr holl ffordd i'r dde. 142 00:07:28,700 --> 00:07:32,200 Gadewch i mi roi o bryd i chi neu felly i ymgodymu â hynny. 143 00:07:32,200 --> 00:07:37,681 Efallai y byddwch am i gymryd golwg mewn categorïau eraill o flociau. 144 00:07:37,681 --> 00:07:38,180 Iawn. 145 00:07:38,180 --> 00:07:41,290 Felly, dim ond i ailadrodd, pan fydd gennym y faner werdd glicio yma 146 00:07:41,290 --> 00:07:44,850 a symud 10 o gamau y mae'r Dim ond cyfarwyddyd, bob tro rwy'n 147 00:07:44,850 --> 00:07:46,720 cliciwch y faner werdd, beth sy'n digwydd? 148 00:07:46,720 --> 00:07:50,070 Wel, mae hynny'n rhedeg fy rhaglen. 149 00:07:50,070 --> 00:07:52,450 Felly gallwn i wneud hyn efallai 10 gwaith llaw, 150 00:07:52,450 --> 00:07:55,130 ond mae hyn yn teimlo ychydig yn bit hackish, fel petai, 151 00:07:55,130 --> 00:07:57,480 lle Dydw i ddim wir yn ddatrys y broblem. 152 00:07:57,480 --> 00:08:00,530 Im 'jyst yn ceisio eto ac eto ac eto ac eto 153 00:08:00,530 --> 00:08:03,180 nes i mi fath o ddamweiniol cyflawni'r gyfarwyddeb 154 00:08:03,180 --> 00:08:05,560 fy mod wedi bwriadu ei gyflawni yn gynt. 155 00:08:05,560 --> 00:08:08,200 >> Ond rydym yn gwybod o'n pseudocode yn gynharach fod yna 156 00:08:08,200 --> 00:08:11,870 syniad hwn mewn rhaglennu o dolennu, gwneud rhywbeth eto ac eto. 157 00:08:11,870 --> 00:08:14,888 Ac felly yr wyf yn gweld bod criw o chi cyrraedd ar gyfer darn pa pos? 158 00:08:14,888 --> 00:08:17,870 159 00:08:17,870 --> 00:08:18,730 Ailadrodd tan. 160 00:08:18,730 --> 00:08:21,400 Felly gallem wneud rhywbeth hoffi ailadrodd tan. 161 00:08:21,400 --> 00:08:23,760 A beth wnaethoch chi ailadrodd tan yn union? 162 00:08:23,760 --> 00:08:27,720 163 00:08:27,720 --> 00:08:28,540 >> IAWN. 164 00:08:28,540 --> 00:08:31,974 A gadewch i mi fynd gyda un sy'n braidd yn symlach i ychydig funudau'n. 165 00:08:31,974 --> 00:08:33,140 Gadewch i mi fynd yn ei flaen ac yn gwneud hyn. 166 00:08:33,140 --> 00:08:35,559 Sylwch fod, fel y gall fod gennych Darganfuwyd dan Reolaeth, 167 00:08:35,559 --> 00:08:38,409 mae hwn bloc ailadrodd, a oedd yn nid yw'n edrych fel ei fod yn y mawr. 168 00:08:38,409 --> 00:08:41,039 Does dim llawer o le yn rhwng y ddau llinellau melyn. 169 00:08:41,039 --> 00:08:43,539 Ond fel y gallai rhai ohonoch sylwi, os ydych yn llusgo a gollwng, 170 00:08:43,539 --> 00:08:45,150 sylwi sut mae'n tyfu i lenwi'r siâp. 171 00:08:45,150 --> 00:08:46,274 >> A allwch chi hyd yn oed yn gwasgu mwy. 172 00:08:46,274 --> 00:08:48,670 Bydd yn jyst cadw yn tyfu os chi llusgo a hofran drosto. 173 00:08:48,670 --> 00:08:51,110 Ac nid wyf yn gwybod beth sy'n gorau yma, felly gadewch 174 00:08:51,110 --> 00:08:54,760 mi o leiaf ailadrodd bum gwaith, ar gyfer enghraifft, ac yna ewch yn ôl i'r llwyfan 175 00:08:54,760 --> 00:08:56,720 a chliciwch ar y faner werdd. 176 00:08:56,720 --> 00:08:59,110 Ac yn awr yn sylwi nid mae'n eithaf yno. 177 00:08:59,110 --> 00:09:02,400 >> Nawr mae rhai ohonoch arfaethedig, fel y Victoria yn unig oedd, ailadrodd 10 gwaith. 178 00:09:02,400 --> 00:09:05,140 A bod yn gyffredinol yn ei wneud gael iddo yr holl ffordd, 179 00:09:05,140 --> 00:09:10,510 ond na fyddai yna fwy cadarn ffordd na fympwyol figuring 180 00:09:10,510 --> 00:09:12,640 faint o symudiadau i wneud? 181 00:09:12,640 --> 00:09:17,680 Beth allai fod yn faen gwell na ailadrodd 10 gwaith fod? 182 00:09:17,680 --> 00:09:20,380 >> Yeah, felly beth am wneud rhywbeth am byth? 183 00:09:20,380 --> 00:09:24,390 Ac yn awr gadewch i mi symud y darn pos y tu mewn yno a chael gwared ar yr un yma. 184 00:09:24,390 --> 00:09:28,300 Nawr yn sylwi ni waeth ble Scratch yn dechrau, mae'n mynd at ymyl. 185 00:09:28,300 --> 00:09:30,700 Ac diolch byth MIT, sy'n gwneud Scratch, dim ond 186 00:09:30,700 --> 00:09:33,190 yn gwneud yn siwr nad oedd erioed yn diflannu yn gyfan gwbl. 187 00:09:33,190 --> 00:09:35,360 Gallwch bob amser chrafangia ei gynffon. 188 00:09:35,360 --> 00:09:37,680 >> Ac yn union reddfol, pam ei fod yn cadw i symud? 189 00:09:37,680 --> 00:09:38,892 Beth sy'n mynd ymlaen fan hyn? 190 00:09:38,892 --> 00:09:41,440 191 00:09:41,440 --> 00:09:43,824 Roedd yn ymddangos i wedi dod i ben, ond Yna, os wyf yn codi a llusgo 192 00:09:43,824 --> 00:09:45,240 mae'n cadw am fynd draw yno. 193 00:09:45,240 --> 00:09:46,123 Pam hynny? 194 00:09:46,123 --> 00:09:51,610 195 00:09:51,610 --> 00:09:54,360 Yn wir, mae cyfrifiadur yn llythrennol mynd i wneud yr hyn yr ydych yn dweud iddo ei wneud. 196 00:09:54,360 --> 00:09:58,380 Felly, os ydych yn dweud ei fod yn gynharach gwneud y yn dilyn peth am byth, yn symud 10 cam, 197 00:09:58,380 --> 00:10:01,860 mae'n mynd i ddal ati ac yn mynd nes i mi gyrraedd yr arwydd stopio coch 198 00:10:01,860 --> 00:10:04,620 ac i atal y rhaglen yn gyfan gwbl. 199 00:10:04,620 --> 00:10:06,610 >> Felly hyd yn oed os nad ydych yn gwneud gwneud hyn, gallai sut yr wyf yn 200 00:10:06,610 --> 00:10:09,510 gwneud symud Scratch gyflymach ar draws y sgrîn? 201 00:10:09,510 --> 00:10:12,060 202 00:10:12,060 --> 00:10:13,280 Mwy o gamau, dde? 203 00:10:13,280 --> 00:10:15,710 Felly yn hytrach na gwneud 10 ar y tro, beth am yr ydym yn 204 00:10:15,710 --> 00:10:20,100 mynd yn ei flaen ac yn ei newid canlynol-- beth fyddech chi'n propose-- 50? 205 00:10:20,100 --> 00:10:24,410 Felly, yn awr rwy'n mynd i glicio ar y gwyrdd baner, ac yn wir, mae'n mynd yn gyflym iawn. 206 00:10:24,410 --> 00:10:27,180 >> Ac mae hyn, wrth gwrs, yn unig amlygiad o animeiddio. 207 00:10:27,180 --> 00:10:28,060 Beth yw animeiddio? 208 00:10:28,060 --> 00:10:33,090 'I' jyst yn dangos i chi y mae dynol criw cyfan o ddelweddau o hyd mewn gwirionedd, 209 00:10:33,090 --> 00:10:34,160 iawn, iawn yn gyflym. 210 00:10:34,160 --> 00:10:36,500 Ac felly os ydym yn unig yn dweud ef i symud mwy o gamau, 211 00:10:36,500 --> 00:10:39,750 rydym yn jyst yn cael yr effaith fydd i newid lle y mae ar y sgrin 212 00:10:39,750 --> 00:10:42,900 holl gyflymach fesul uned o amser. 213 00:10:42,900 --> 00:10:46,454 >> Nawr bod y sialens nesaf a gynigiais oedd cael ef bownsio oddi ar yr ymyl. 214 00:10:46,454 --> 00:10:49,120 Ac heb wybod beth pos darnau exist-- oherwydd mae'n iawn 215 00:10:49,120 --> 00:10:53,030 os nad ydych yn cyrraedd y cam o'r challenge-- beth 216 00:10:53,030 --> 00:10:54,280 ydych chi eisiau ei wneud yn reddfol? 217 00:10:54,280 --> 00:10:58,030 Sut fyddai gennym ef adlam yn ôl a allan, rhwng y chwith a'r dde? 218 00:10:58,030 --> 00:11:02,630 219 00:11:02,630 --> 00:11:03,810 >> Yeah. 220 00:11:03,810 --> 00:11:05,680 Felly mae angen rhyw fath cyflwr, ac yr ydym 221 00:11:05,680 --> 00:11:09,710 fel pe baent wedi conditionals, felly i siarad, o dan y categori Rheoli. 222 00:11:09,710 --> 00:11:14,110 Pa un o'r blociau hyn ydym ni yn ôl pob tebyg eisiau? 223 00:11:14,110 --> 00:11:15,200 Yeah, efallai "os, yna." 224 00:11:15,200 --> 00:11:18,780 Felly sylwi bod ymhlith y blociau melyn gennym yma, mae hyn yn "os" 225 00:11:18,780 --> 00:11:23,920 neu'r hyn yn ", arall os" bloc a fydd yn ein galluogi i wneud penderfyniad i wneud hyn 226 00:11:23,920 --> 00:11:25,000 neu i wneud hynny. 227 00:11:25,000 --> 00:11:27,380 A gallwch hyd yn oed yn nythu yn eu i wneud pethau lluosog. 228 00:11:27,380 --> 00:11:34,910 Neu os nad ydych wedi mynd yma eto, fynd yn ei flaen i'r categori Synhwyro 229 00:11:34,910 --> 00:11:39,612 ac-- gadewch i ni weld os yw'n yma. 230 00:11:39,612 --> 00:11:43,050 231 00:11:43,050 --> 00:11:52,050 >> Felly beth bloc a allai fod yn ddefnyddiol yma i ganfod os ei fod oddi ar y llwyfan? 232 00:11:52,050 --> 00:11:56,740 Yeah, yn sylwi bod rhai o'r blociau hyn Gellir parametrized, fel petai. 233 00:11:56,740 --> 00:12:00,706 Gellir eu fath o addasu, nid yn wahanol i HTML ddoe gyda nodweddion, 234 00:12:00,706 --> 00:12:03,330 lle mae rhinweddau hynny math o addasu ymddygiad tag. 235 00:12:03,330 --> 00:12:08,880 Yn yr un modd yma, gallaf chrafangia cyffwrdd hwn bloc a newid a gofyn y cwestiwn, 236 00:12:08,880 --> 00:12:11,500 a ydych yn cyffwrdd y llygoden pwyntydd fel y cyrchwr 237 00:12:11,500 --> 00:12:13,250 neu a ydych yn cyffwrdd yr ymyl? 238 00:12:13,250 --> 00:12:15,210 >> Felly, gadewch i mi fynd i mewn ac yn gwneud hyn. 239 00:12:15,210 --> 00:12:18,130 Rydw i'n mynd i chwyddo allan am funud. 240 00:12:18,130 --> 00:12:21,320 Gadewch i mi chrafangia darn hwn bos yma, y ​​pos darn hwn, 241 00:12:21,320 --> 00:12:24,570 ac rwy'n mynd i sborion nhw i fyny am ychydig funudau'n. 242 00:12:24,570 --> 00:12:27,620 Rydw i'n mynd i symud hyn, newid hyn i ymyl cyffwrdd, 243 00:12:27,620 --> 00:12:38,590 ac rwy'n mynd i'r cynnig wneud hyn. 244 00:12:38,590 --> 00:12:40,490 Felly dyma rai cynhwysion. 245 00:12:40,490 --> 00:12:42,570 Rwy'n credu fy mod wedi cael popeth rwyf eisiau. 246 00:12:42,570 --> 00:12:47,710 >> A fyddai rhywun yn hoffi cynnig sut yr wyf yn gallu cysylltu y rhain efallai top i'r gwaelod 247 00:12:47,710 --> 00:12:52,020 er mwyn datrys y broblem o gael symud Scratch dde i'r chwith i'r dde i 248 00:12:52,020 --> 00:12:57,020 chwith i'r dde i'r chwith, pob amser yn bownsio oddi ar y wal? 249 00:12:57,020 --> 00:12:58,050 Beth ydw i am ei wneud? 250 00:12:58,050 --> 00:13:01,097 Pa bloc ddylwn i gysylltu â "Baner pan werdd clicio gyntaf"? 251 00:13:01,097 --> 00:13:04,060 252 00:13:04,060 --> 00:13:06,200 >> Iawn, felly gadewch i ni ddechrau gyda'r "am byth." 253 00:13:06,200 --> 00:13:07,170 Beth sy'n digwydd y tu mewn nesaf? 254 00:13:07,170 --> 00:13:10,290 Rhywun arall. 255 00:13:10,290 --> 00:13:11,850 OK, symud grisiau. 256 00:13:11,850 --> 00:13:12,350 Iawn. 257 00:13:12,350 --> 00:13:14,470 Wedyn beth? 258 00:13:14,470 --> 00:13:15,120 Felly, yna mae'r os. 259 00:13:15,120 --> 00:13:17,720 Ac yn sylwi, hyd yn oed er ei fod yn edrych sandwiched gyda'i gilydd yn dynn, 260 00:13:17,720 --> 00:13:19,500 bydd yn jyst yn tyfu i'w llenwi. 261 00:13:19,500 --> 00:13:21,500 Bydd yn unig neidio mewn lle rwy'n ei eisiau. 262 00:13:21,500 --> 00:13:25,920 >> A beth y gallaf oedi rhwng y os a ar y pryd? 263 00:13:25,920 --> 00:13:27,180 Mwy na thebyg "os cyffwrdd ymyl." 264 00:13:27,180 --> 00:13:31,800 A rhybudd, unwaith eto, mae'n rhy fawr ar ei gyfer, ond bydd yn tyfu i lenwi. 265 00:13:31,800 --> 00:13:35,002 Ac yna trowch 15 gradd? 266 00:13:35,002 --> 00:13:35,710 Faint o raddau? 267 00:13:35,710 --> 00:13:38,800 268 00:13:38,800 --> 00:13:41,196 Yeah, felly bydd 180 troelli mi yr holl ffordd o gwmpas. 269 00:13:41,196 --> 00:13:42,570 Felly gadewch i ni weld os cefais hawl hon. 270 00:13:42,570 --> 00:13:43,930 Gadewch i mi chwyddo allan. 271 00:13:43,930 --> 00:13:45,130 >> Gadewch i mi lusgo Scratch i fyny. 272 00:13:45,130 --> 00:13:50,030 Felly mae'n ychydig gwyrgam awr, ond mae hynny'n iawn. 273 00:13:50,030 --> 00:13:52,231 Sut y gallaf ailosod ef yn hawdd? 274 00:13:52,231 --> 00:13:59,879 275 00:13:59,879 --> 00:14:01,045 Rydw i'n mynd i twyllo ychydig. 276 00:14:01,045 --> 00:14:04,074 277 00:14:04,074 --> 00:14:05,990 Felly dwi'n ychwanegu un arall bloc, dim ond i fod yn glir. 278 00:14:05,990 --> 00:14:08,424 Rwyf am iddo bwyntio 90 gradd ar y dde at ball, 279 00:14:08,424 --> 00:14:10,840 felly Im 'jyst yn mynd i ddweud wrtho i wneud hynny programmatically. 280 00:14:10,840 --> 00:14:11,632 A dyma ni yn mynd. 281 00:14:11,632 --> 00:14:14,740 282 00:14:14,740 --> 00:14:15,740 Rydym yn ymddangos i wedi gwneud hynny. 283 00:14:15,740 --> 00:14:19,980 Mae'n ychydig yn rhyfedd, gan fod mae'n cerdded wyneb i waered. 284 00:14:19,980 --> 00:14:21,250 Gadewch i ni alw y nam. 285 00:14:21,250 --> 00:14:22,120 Mae hynny'n gamgymeriad. 286 00:14:22,120 --> 00:14:27,320 Mae nam yn gamgymeriad mewn rhaglen, mae gwall rhesymegol fy mod i, y dynol, a wnaed. 287 00:14:27,320 --> 00:14:28,985 Pam mae e'n mynd ben i waered? 288 00:14:28,985 --> 00:14:33,560 289 00:14:33,560 --> 00:14:35,250 Oedd MIT sgriw i fyny neu wnes i? 290 00:14:35,250 --> 00:14:38,840 291 00:14:38,840 --> 00:14:42,550 >> Yeah, yr wyf yn golygu, nid yw'n MIT fai. Maent yn rhoi i mi ddarn pos 292 00:14:42,550 --> 00:14:44,970 sy'n dweud troi rhyw nifer o raddau. 293 00:14:44,970 --> 00:14:47,672 Ac ar awgrym Fictoria, Im 'yn troi 180 gradd, 294 00:14:47,672 --> 00:14:48,880 sef y greddf cywir. 295 00:14:48,880 --> 00:14:53,700 Ond troi 180 gradd yn llythrennol golygu troi 180 gradd, 296 00:14:53,700 --> 00:14:55,860 ac nid yw hynny'n wir yn beth ydw i eisiau, mae'n debyg. 297 00:14:55,860 --> 00:14:58,026 Gan fod o leiaf ei fod yn byd dau-ddimensiwn hwn, 298 00:14:58,026 --> 00:15:00,740 felly troi yn mynd mewn gwirionedd i troi ef wyneb i waered. 299 00:15:00,740 --> 00:15:04,030 >> Rwyf yn ôl pob tebyg am ei defnyddio pa bloc yn lle hynny, ar sail yr hyn a welwch yma? 300 00:15:04,030 --> 00:15:11,890 301 00:15:11,890 --> 00:15:14,790 Sut y gallem atgyweiria hon? 302 00:15:14,790 --> 00:15:18,380 Yeah, felly gallem dynnu sylw yn y cyfeiriad arall. 303 00:15:18,380 --> 00:15:22,300 Ac mewn gwirionedd hyd yn oed dyna ddim yn mynd i fod yn ddigon, 304 00:15:22,300 --> 00:15:26,410 oherwydd ein bod dim ond cod caled i bwyntio chwith neu i'r dde. 305 00:15:26,410 --> 00:15:27,920 >> Rydych yn gwybod beth y gallem ei wneud? 306 00:15:27,920 --> 00:15:30,160 Mae'n edrych fel bod gennym cyfleustra bloc yma. 307 00:15:30,160 --> 00:15:32,987 Os byddaf yn chwyddo i mewn, gweler rhywbeth yr ydym yn hoffi yma? 308 00:15:32,987 --> 00:15:36,120 309 00:15:36,120 --> 00:15:40,020 Felly mae'n edrych fel MIT Mae gan echdynnu a adeiladwyd i mewn yma. 310 00:15:40,020 --> 00:15:45,440 Mae'r bloc yn ymddangos i fod yn gyfwerth y mae blociau eraill, lluosog? 311 00:15:45,440 --> 00:15:49,510 >> Mae hyn yn un bloc yn ymddangos i fod yn gyfwerth i'r hwn triawd cyfan o flociau 312 00:15:49,510 --> 00:15:50,880 sydd gennym yma. 313 00:15:50,880 --> 00:15:54,670 Felly, mae'n troi allan y gallaf symleiddio fy rhaglen drwy gael gwared ar hynny i gyd 314 00:15:54,670 --> 00:15:58,270 a dim ond rhoi hyn yn fan hyn. 315 00:15:58,270 --> 00:16:01,620 Ac yn awr ei fod yn dal i fod ychydig yn buggy, ac mae hynny'n iawn am y tro. 316 00:16:01,620 --> 00:16:03,370 Byddwn yn gadael hynny fod. 317 00:16:03,370 --> 00:16:06,000 Ond mae fy rhaglen hyd yn oed symlach, ac mae hyn, hefyd, 318 00:16:06,000 --> 00:16:09,060 fyddai cynrychiolydd o gôl mewn programming-- 319 00:16:09,060 --> 00:16:13,430 yw gwneud eich cod yn ddelfrydol fel syml, yn gryno ag y bo modd, 320 00:16:13,430 --> 00:16:15,650 tra'n parhau i fod mor ddarllenadwy â phosibl. 321 00:16:15,650 --> 00:16:20,310 Nid ydych am ei gwneud yn mor gryno ei bod yn anodd ei ddeall. 322 00:16:20,310 --> 00:16:22,826 >> Ond sylwi fy mod i wedi disodli tri bloc gydag un, 323 00:16:22,826 --> 00:16:24,200 ac mae hynny'n gellid dadlau yn beth da. 324 00:16:24,200 --> 00:16:27,280 Rydw i wedi dynnu ymaith y syniad o wirio p'un a ydych yn 325 00:16:27,280 --> 00:16:29,120 ar ymyl gydag un bloc yn unig. 326 00:16:29,120 --> 00:16:31,520 Nawr gallwn gael hwyl gyda hyn, mewn gwirionedd. 327 00:16:31,520 --> 00:16:35,790 Nid yw hyn yn ychwanegu cymaint gwerth deallusol ond gwerth chwareus. 328 00:16:35,790 --> 00:16:39,730 Rydw i'n mynd i fynd yn ei flaen ac yn mynnu sain hwn yma. 329 00:16:39,730 --> 00:16:42,900 330 00:16:42,900 --> 00:16:46,420 Felly, gadewch i mi fynd yn ei flaen, a gadewch i mi atal y rhaglen am eiliad. 331 00:16:46,420 --> 00:16:52,070 Rydw i'n mynd i gofnodi y canlynol, caniatáu mynediad i fy meicroffon. 332 00:16:52,070 --> 00:16:53,181 >> Yma rydym yn mynd. 333 00:16:53,181 --> 00:16:53,680 Ouch. 334 00:16:53,680 --> 00:16:58,710 335 00:16:58,710 --> 00:17:01,140 Gadewch i ni geisio hyn eto. 336 00:17:01,140 --> 00:17:02,279 Yma rydym yn mynd. 337 00:17:02,279 --> 00:17:03,570 OK, yr wyf yn cofnodi y peth anghywir. 338 00:17:03,570 --> 00:17:04,580 Yma rydym yn mynd. 339 00:17:04,580 --> 00:17:05,080 Ouch. 340 00:17:05,080 --> 00:17:07,910 341 00:17:07,910 --> 00:17:08,800 Ouch. 342 00:17:08,800 --> 00:17:09,300 Iawn. 343 00:17:09,300 --> 00:17:10,791 Nawr mae angen i mi gael gwared ar hynny. 344 00:17:10,791 --> 00:17:11,290 Iawn. 345 00:17:11,290 --> 00:17:13,950 >> Felly, yn awr mae gen i cofnodi dim ond "ouch." 346 00:17:13,950 --> 00:17:18,040 Felly nawr rwy'n mynd i fynd ymlaen ac yn galw hyn yn "ouch." 347 00:17:18,040 --> 00:17:20,270 Rydw i'n mynd i fynd yn ôl i fy sgriptiau, ac yn awr 348 00:17:20,270 --> 00:17:25,460 rhybudd mae bloc hwn sy'n cael ei alw chwarae sain "meow" neu chwarae sain "ouch." 349 00:17:25,460 --> 00:17:28,920 Rydw i'n mynd i lusgo hyn, a lle ddylwn i roi hyn i greu effaith doniol? 350 00:17:28,920 --> 00:17:31,740 351 00:17:31,740 --> 00:17:37,860 Yeah, felly erbyn hyn mae'n fath o buggy, oherwydd erbyn hyn mae hyn block-- 352 00:17:37,860 --> 00:17:42,050 sylwi sut mae hyn yn "os ar ymyl, bownsio "yn fath o hunan-gynhwysol. 353 00:17:42,050 --> 00:17:43,704 Felly mae angen i mi atgyweiria hon. 354 00:17:43,704 --> 00:17:44,870 Gadewch i mi fynd yn ei flaen ac yn gwneud hyn. 355 00:17:44,870 --> 00:17:48,630 Gadewch i mi gael gwared o hyn ac yn mynd yn ôl i'n gwreiddiol, yn fwy bwriadol 356 00:17:48,630 --> 00:17:49,870 functionality. 357 00:17:49,870 --> 00:18:01,080 Felly "os cyffwrdd ymyl, yna" Rwyf am i droi, fel Victoria arfaethedig, 358 00:18:01,080 --> 00:18:02,480 180 gradd. 359 00:18:02,480 --> 00:18:05,497 Ac ydw i am chwarae y sain "ouch" yno? 360 00:18:05,497 --> 00:18:11,800 361 00:18:11,800 --> 00:18:15,580 >> Yeah, yn sylwi ei fod yn y tu allan y bloc hwnnw melyn. 362 00:18:15,580 --> 00:18:17,680 Felly, mae hyn, hefyd, fyddai yn bug, ond rwyf wedi sylwi arno. 363 00:18:17,680 --> 00:18:21,290 Felly, yr wyf i'n mynd i lusgo i fyny yma, a rhybudd awron 'i' y tu mewn i'r "os." 364 00:18:21,290 --> 00:18:24,250 Felly, y "os" yw math hwn o fel anharddu'r braich tebyg 365 00:18:24,250 --> 00:18:26,260 mai dim ond yn mynd i gwneud yr hyn sydd y tu mewn iddo. 366 00:18:26,260 --> 00:18:30,216 Felly, yn awr os wyf yn chwyddo allan ar y risg o annoying-- 367 00:18:30,216 --> 00:18:32,860 368 00:18:32,860 --> 00:18:36,470 >> CYFRIFIADUR: Ouch, ouch, ouch. 369 00:18:36,470 --> 00:18:39,910 >> DAVID Malan: Ac mae'n Bydd dim ond yn mynd ymlaen am byth. 370 00:18:39,910 --> 00:18:44,160 Nawr dim ond i gyflymu pethau yma, gadewch i mi fynd yn ei flaen ac yn agor i fyny, 371 00:18:44,160 --> 00:18:50,460 gadewch i say-- i adael i mi fynd i rai o fy stwff eu hunain rhag y dosbarth. 372 00:18:50,460 --> 00:18:53,000 373 00:18:53,000 --> 00:19:00,220 A gadewch i mi agor i fyny, gadewch i ni ddweud, mae hyn yn un a wnaed gan un o'n cymrodyr addysgu 374 00:19:00,220 --> 00:19:01,500 cwpl o flynyddoedd yn ôl. 375 00:19:01,500 --> 00:19:04,732 Felly efallai y bydd rhai ohonoch yn cofio y gêm hon o fu, 376 00:19:04,732 --> 00:19:05,940 ac mewn gwirionedd mae'n rhyfeddol. 377 00:19:05,940 --> 00:19:08,190 Hyd yn oed er ein bod wedi gwneud y symlaf o raglenni ar hyn o bryd, 378 00:19:08,190 --> 00:19:09,980 gadewch i ni ystyried beth mae hyn yn mewn gwirionedd yn edrych fel. 379 00:19:09,980 --> 00:19:10,650 Gadewch i mi daro chwarae. 380 00:19:10,650 --> 00:19:14,210 381 00:19:14,210 --> 00:19:18,980 >> Felly, yn y gêm hon, mae gennym llyffant, a defnyddio'r saeth keys-- 382 00:19:18,980 --> 00:19:23,340 mae'n cymryd camau mwy nag yr oeddwn remember-- Mae gen i reolaeth dros broga hwn. 383 00:19:23,340 --> 00:19:29,630 A'r nod yw cael ar draws y prysur ffordd heb rhedeg i mewn i'r ceir. 384 00:19:29,630 --> 00:19:34,735 A gadewch i ni see-- os byddaf yn mynd i fyny yma, yr wyf yn rhaid i chi aros am log i sgrolio drwy. 385 00:19:34,735 --> 00:19:38,130 386 00:19:38,130 --> 00:19:39,274 Mae hyn yn teimlo fel a bug. 387 00:19:39,274 --> 00:19:42,240 388 00:19:42,240 --> 00:19:43,495 Mae hwn yn fath o nam. 389 00:19:43,495 --> 00:19:45,980 390 00:19:45,980 --> 00:19:46,480 Iawn. 391 00:19:46,480 --> 00:19:51,550 Dwi ar hyn yma, yno, ac yna eich bod yn cadw 392 00:19:51,550 --> 00:19:54,100 mynd hyd nes y byddwch yn cael yr holl y brogaod i'r padiau lili. 393 00:19:54,100 --> 00:19:55,920 Nawr gallai hyn edrych oed yn fwy cymhleth, 394 00:19:55,920 --> 00:19:57,840 ond gadewch i ni geisio torri mae hyn i lawr yn feddyliol 395 00:19:57,840 --> 00:20:00,040 ac ar lafar i mewn i'w flociau gydran. 396 00:20:00,040 --> 00:20:03,910 Felly mae'n debyg pos darn nad ydym wedi gweld eto 397 00:20:03,910 --> 00:20:07,440 ond mae hynny'n ymateb i keystrokes, i bethau yr wyf yn taro ar y bysellfwrdd. 398 00:20:07,440 --> 00:20:11,660 >> Felly mae'n debyg rhyw fath o bloc sy'n dweud, os allweddol hafal i fyny, 399 00:20:11,660 --> 00:20:15,965 yna gwneud rhywbeth gyda Scratch-- efallai ei symud 10 cam y modd hwn. 400 00:20:15,965 --> 00:20:20,240 Os allwedd i lawr yn cael ei wasgu, yn symud 10 cam y modd hwn, neu allwedd chwith, yn symud 10 cam 401 00:20:20,240 --> 00:20:21,710 y modd hwn, 10 gamau hynny. 402 00:20:21,710 --> 00:20:23,644 Rydw i wedi troi yn glir y gath i mewn i broga. 403 00:20:23,644 --> 00:20:26,060 Felly dyna yn union ble mae'r gwisgoedd, fel galwadau Scratch iddo- ni 404 00:20:26,060 --> 00:20:28,440 dim ond mewnforio llun y broga. 405 00:20:28,440 --> 00:20:29,570 >> Ond beth arall sy'n digwydd? 406 00:20:29,570 --> 00:20:32,794 Pa llinellau eraill o god, pa darnau pos arall 407 00:20:32,794 --> 00:20:35,460 wnaeth Blake, ein cyd-addysgu, defnyddio yn y rhaglen hon, mae'n debyg? 408 00:20:35,460 --> 00:20:38,320 409 00:20:38,320 --> 00:20:42,730 Beth sy'n gwneud popeth move-- pa rhaglennu adeiladu? 410 00:20:42,730 --> 00:20:44,950 >> Motion, sure-- felly mae'r symud bloc, yn sicr. 411 00:20:44,950 --> 00:20:49,330 A beth sy'n bod bloc symud tu mewn, yn fwyaf tebygol? 412 00:20:49,330 --> 00:20:52,850 Yeah, rhyw fath o ddolen, efallai am byth bloc, efallai ailadrodd block-- 413 00:20:52,850 --> 00:20:54,070 ailadrodd tan bloc. 414 00:20:54,070 --> 00:20:57,330 A dyna beth sy'n gwneud y boncyffion a y padiau lili a phopeth arall yn symud 415 00:20:57,330 --> 00:20:57,990 yn ôl ac ymlaen. 416 00:20:57,990 --> 00:21:00,270 dim ond ei fod yn digwydd ddiddiwedd. 417 00:21:00,270 --> 00:21:03,180 >> Pam mae rhai o'r ceir symud yn gyflymach na'r lleill? 418 00:21:03,180 --> 00:21:06,607 Beth sy'n wahanol am y rhaglenni hynny? 419 00:21:06,607 --> 00:21:09,690 Yeah, yn ôl pob tebyg rhai ohonynt yn cymryd mwy o gamau ar unwaith ac mae rhai ohonynt 420 00:21:09,690 --> 00:21:10,690 llai o gamau ar unwaith. 421 00:21:10,690 --> 00:21:14,670 A'r effaith weledol yn gyflym yn erbyn araf. 422 00:21:14,670 --> 00:21:16,030 >> Beth ydych chi'n meddwl ddigwyddodd? 423 00:21:16,030 --> 00:21:19,700 Pan gefais fy broga yr holl ffordd ar draws y stryd a'r afon 424 00:21:19,700 --> 00:21:23,560 ar y pad lili, rhywbeth Digwyddodd nodedig. 425 00:21:23,560 --> 00:21:26,540 Beth ddigwyddodd cyn gynted ag y gwnes i hynny? 426 00:21:26,540 --> 00:21:27,210 Mae'n stopio. 427 00:21:27,210 --> 00:21:29,680 rhoi'r gorau i hynny broga, ac Ges i ail broga. 428 00:21:29,680 --> 00:21:33,155 Felly beth lluniad fod yn ddefnyddir yno, pa nodwedd? 429 00:21:33,155 --> 00:21:36,020 430 00:21:36,020 --> 00:21:38,660 >> Yeah, felly mae rhyw fath o "Os" cyflwr i fyny yno, hefyd. 431 00:21:38,660 --> 00:21:41,909 Ac mae'n troi out-- ni welsom this-- ond mae blociau eraill yn yno y 432 00:21:41,909 --> 00:21:45,300 gallu dweud, os ydych yn cyffwrdd beth arall ar y sgrin, 433 00:21:45,300 --> 00:21:47,720 os ydych yn cyffwrdd y pad lili, "yna." 434 00:21:47,720 --> 00:21:50,810 Ac yna dyna pryd yr ydym yn gwneud yr ail broga yn ymddangos. 435 00:21:50,810 --> 00:21:54,969 Felly, hyd yn oed er y gêm hon yn bendant dyddiedig iawn, hyd yn oed er ar yr olwg gyntaf 436 00:21:54,969 --> 00:21:58,010 mae cymaint yn mynd Blake on-- a nid oedd yn chwip hyn i fyny mewn dau funud, 437 00:21:58,010 --> 00:22:00,390 mae'n debyg cymerodd ef sawl oriau i greu'r gêm hon 438 00:22:00,390 --> 00:22:03,850 yn seiliedig ar ei gof neu fideos o fersiwn yesteryear ohoni. 439 00:22:03,850 --> 00:22:07,940 Ond pob un o'r pethau bychain hyn mynd ar y sgrîn ei ben ei hun 440 00:22:07,940 --> 00:22:11,550 berwi i lawr at y rhain yn syml iawn symudiadau neu ddatganiadau constructs-- 441 00:22:11,550 --> 00:22:15,519 fel yr ydym wedi trafod, dolenni a amodau, a dyna am y peth. 442 00:22:15,519 --> 00:22:17,060 Mae ychydig o nodweddion ffansi eraill. 443 00:22:17,060 --> 00:22:19,130 Mae rhai ohonynt yn unig esthetig neu acwstig, 444 00:22:19,130 --> 00:22:20,964 fel y synau Fi jyst chwarae gyda. 445 00:22:20,964 --> 00:22:23,380 Ond ar gyfer y rhan fwyaf, yr ydych gennym yn yr iaith hon, Scratch, 446 00:22:23,380 --> 00:22:25,350 pob un o'r sylfaenol blociau adeiladu eich bod 447 00:22:25,350 --> 00:22:29,280 gael yn C, Java, JavaScript, PHP, Ruby, Python, 448 00:22:29,280 --> 00:22:32,960 ac unrhyw nifer o ieithoedd eraill. 449 00:22:32,960 --> 00:22:36,720 Unrhyw gwestiynau am Scratch? 450 00:22:36,720 --> 00:22:37,220 Iawn. 451 00:22:37,220 --> 00:22:40,303 Felly, ni fyddwn yn deifio yn ddyfnach i Scratch, er eich bod yn croesawu y penwythnos hwn, 452 00:22:40,303 --> 00:22:42,860 yn enwedig os oes gennych blant neu nithoedd a neiaint ac o'r fath, 453 00:22:42,860 --> 00:22:44,220 i'w cyflwyno i Scratch. 454 00:22:44,220 --> 00:22:47,960 Mae'n mewn gwirionedd yn chwareus rhyfeddol amgylchedd gyda, fel ei awduron yn dweud, 455 00:22:47,960 --> 00:22:49,120 nenfydau uchel iawn. 456 00:22:49,120 --> 00:22:51,670 Hyd yn oed er ein bod yn dechrau gyda Manylion iawn lefel isel, 457 00:22:51,670 --> 00:22:54,890 gallwch chi wir yn ei wneud cryn dipyn ag ef, ac mae hyn yn bosibl 458 00:22:54,890 --> 00:22:57,360 arddangosiad o hynny yn union. 459 00:22:57,360 --> 00:23:02,920 >> Ond gadewch i ni yn awr yn newid i rai mwy problemau soffistigedig, os gwnewch, 460 00:23:02,920 --> 00:23:05,870 a elwir yn "chwilio" ac "Didoli," yn fwy cyffredinol. 461 00:23:05,870 --> 00:23:09,500 Cawsom llyfr ffôn hwn earlier-- dyma un arall yn unig ar gyfer discussion-- 462 00:23:09,500 --> 00:23:13,460 ein bod yn gallu chwilio yn fwy effeithlon oherwydd 463 00:23:13,460 --> 00:23:15,270 o dybiaeth arwyddocaol. 464 00:23:15,270 --> 00:23:17,655 A dim ond i fod yn glir, beth dybiaeth oedd fy mod yn gwneud 465 00:23:17,655 --> 00:23:19,280 wrth chwilio trwy llyfr ffôn yma? 466 00:23:19,280 --> 00:23:23,342 467 00:23:23,342 --> 00:23:25,300 Dyna oedd Mike Smith yn y llyfr ffôn, er fy mod yn 468 00:23:25,300 --> 00:23:27,410 Byddai yn gallu trin y senario heb ef 469 00:23:27,410 --> 00:23:30,720 yna os Fi jyst stopio cyn pryd. 470 00:23:30,720 --> 00:23:31,806 Mae'r llyfr yn nhrefn yr wyddor. 471 00:23:31,806 --> 00:23:33,930 A dyna yn hael iawn dybiaeth, gan fod 472 00:23:33,930 --> 00:23:36,580 golygu someone-- Rwy'n garedig o dorri cornel, 473 00:23:36,580 --> 00:23:40,580 fel yr wyf yn gyflymach oherwydd bod rhywun arall yn gwneud llawer o waith caled i mi. 474 00:23:40,580 --> 00:23:43,120 >> Ond beth os y ffôn llyfr yn cael eu heb eu didoli? 475 00:23:43,120 --> 00:23:47,050 Efallai Verizon got ddiog, dim ond taflu enwau a rhifau pawb i mewn 'na 476 00:23:47,050 --> 00:23:50,120 efallai yn y drefn y maent yn cofrestru ar gyfer y gwasanaeth ffôn. 477 00:23:50,120 --> 00:23:54,570 A faint o amser mae'n ei gymryd i mi i ddod o hyd i rywun fel Mike Smith? 478 00:23:54,570 --> 00:23:58,160 1,000 ffôn dudalen book-- faint o tudalennau oes rhaid i mi edrych drwy? 479 00:23:58,160 --> 00:23:58,905 >> Pob un ohonynt. 480 00:23:58,905 --> 00:24:00,030 Rydych yn fath o allan o lwc. 481 00:24:00,030 --> 00:24:03,420 Mae'n rhaid i chi llythrennol i edrych ar bob dudalen os y llyfr ffôn yn unig 482 00:24:03,420 --> 00:24:04,450 didoli hap. 483 00:24:04,450 --> 00:24:06,910 Efallai y byddwch yn cael lwcus a dod o hyd Mike ar y dudalen gyntaf iawn, oherwydd ei fod 484 00:24:06,910 --> 00:24:08,826 oedd y cwsmer yn gyntaf i archebu gwasanaeth ffôn. 485 00:24:08,826 --> 00:24:10,760 Ond gallai fod wedi bod yn yr olaf, hefyd. 486 00:24:10,760 --> 00:24:12,500 >> Felly, nid trefn ar hap yn dda. 487 00:24:12,500 --> 00:24:16,750 Felly, mae'n debyg rhaid i ni ddatrys y llyfr ffôn neu yn y data didoli cyffredinol 488 00:24:16,750 --> 00:24:18,520 yr ydym wedi ei roi. 489 00:24:18,520 --> 00:24:19,440 Sut allwn ni wneud hynny? 490 00:24:19,440 --> 00:24:21,360 >> Wel, gadewch i mi jyst roi cynnig ar enghraifft syml yma. 491 00:24:21,360 --> 00:24:24,290 Gadewch i mi fynd yn ei flaen ac yn taflu yn ychydig rhifau ar y bwrdd. 492 00:24:24,290 --> 00:24:35,480 Tybiwch y niferoedd sydd gennym yw, gadewch i ni ddweud, pedwar, dau, un, a thri. 493 00:24:35,480 --> 00:24:38,390 Ac, Ben, didoli rhifau hyn i ni. 494 00:24:38,390 --> 00:24:39,017 >> Iawn. 495 00:24:39,017 --> 00:24:39,850 Sut wnaethoch chi hynny? 496 00:24:39,850 --> 00:24:42,731 497 00:24:42,731 --> 00:24:43,230 Iawn. 498 00:24:43,230 --> 00:24:44,710 Felly dechreuwch gyda'r lleiaf gwerth a'r uchaf, 499 00:24:44,710 --> 00:24:46,084 ac mae hynny'n wir yn greddf da. 500 00:24:46,084 --> 00:24:48,080 Ac yn sylweddoli ein bod yn pobl yn mewn gwirionedd yn eithaf 501 00:24:48,080 --> 00:24:49,913 yn dda am ddatrys problemau fel hyn, o leiaf 502 00:24:49,913 --> 00:24:51,810 pan fydd y data yn gymharol fach. 503 00:24:51,810 --> 00:24:54,860 Cyn gynted ag y byddwch yn dechrau i gael gannoedd o rifau, mae miloedd o rifau, 504 00:24:54,860 --> 00:24:58,440 miliynau o rifau, Ben yn ôl pob tebyg Ni allai ei wneud yn eithaf hynny yn gyflym, 505 00:24:58,440 --> 00:25:00,620 gan dybio bod yna bylchau yn y niferoedd. 506 00:25:00,620 --> 00:25:03,450 Pretty hawdd cyfrif at filiwn fel arall, dim ond cymryd llawer o amser. 507 00:25:03,450 --> 00:25:07,150 >> Felly mae'r algorithm mae'n swnio fel Ben a ddefnyddir yn unig nawr 508 00:25:07,150 --> 00:25:08,930 Roedd chwilio am y nifer lleiaf. 509 00:25:08,930 --> 00:25:12,900 Felly hyd yn oed er y gall rydym pobl eu cymryd mewn llawer o wybodaeth ar eu golwg, 510 00:25:12,900 --> 00:25:14,830 cyfrifiadur mewn gwirionedd ychydig yn fwy cyfyngedig. 511 00:25:14,830 --> 00:25:17,560 Gall y cyfrifiadur yn unig edrych ar un beit ar y tro 512 00:25:17,560 --> 00:25:20,770 neu efallai bedwar bytes mewn adeg-- y dyddiau hyn efallai 8 bytes mewn adeg-- 513 00:25:20,770 --> 00:25:24,450 ond nifer fach iawn o bytes ar adeg benodol. 514 00:25:24,450 --> 00:25:28,480 >> Felly o ystyried ein bod mewn gwirionedd pedwar gwerth wahân Yma-- 515 00:25:28,480 --> 00:25:32,440 ac y gallwch feddwl Ben fel rhai blinders ar pe bai'n cyfrifiadur fath 516 00:25:32,440 --> 00:25:36,450 nad yw'n gallu gweld unrhyw beth arall nag un rhif ar y adeg-- 517 00:25:36,450 --> 00:25:39,720 felly rydym yn gyffredinol bydd yn cymryd yn ganiataol, fel yn Saesneg, byddwn yn darllen o'r dde i'r chwith. 518 00:25:39,720 --> 00:25:42,870 Felly, y rhif cyntaf Ben yn ôl pob tebyg yn edrych yn yn bedair ac yna yn gyflym iawn 519 00:25:42,870 --> 00:25:44,770 sylweddoli bod 'na eithaf mawr number-- gadewch i mi gadw edrych. 520 00:25:44,770 --> 00:25:45,357 >> Mae dau. 521 00:25:45,357 --> 00:25:45,940 Arhoswch funud. 522 00:25:45,940 --> 00:25:47,070 Mae dau yn llai na phedwar. 523 00:25:47,070 --> 00:25:47,986 Rydw i'n mynd i gofio. 524 00:25:47,986 --> 00:25:49,070 Two yw'r lleiaf yn awr. 525 00:25:49,070 --> 00:25:50,417 Nawr one-- hynny hyd yn oed yn well. 526 00:25:50,417 --> 00:25:51,250 Dyna hyd yn oed yn llai. 527 00:25:51,250 --> 00:25:54,000 Rydw i'n mynd i anghofio am ddau a dim ond cofio un nawr. 528 00:25:54,000 --> 00:25:56,550 >> A gallai efe roi'r gorau i chwilio? 529 00:25:56,550 --> 00:25:58,360 Wel, gallai seiliedig ar y wybodaeth hon, 530 00:25:58,360 --> 00:26:00,477 ond byddai'n well i mi chwilio gweddill y rhestr. 531 00:26:00,477 --> 00:26:02,060 Oherwydd beth os sero oedd yn y rhestr? 532 00:26:02,060 --> 00:26:03,643 Beth os yn negyddol un yn y rhestr? 533 00:26:03,643 --> 00:26:07,720 Dim ond yn gwybod bod ei ateb yn gywir os ei fod yn drwyadl 534 00:26:07,720 --> 00:26:08,729 gwirio'r rhestr gyfan. 535 00:26:08,729 --> 00:26:10,020 Felly, rydym yn edrych ar weddill y. 536 00:26:10,020 --> 00:26:11,394 Three-- bod yn wastraff amser. 537 00:26:11,394 --> 00:26:13,540 Got anlwcus, ond yr oeddwn yn dal yn gywir i wneud hynny. 538 00:26:13,540 --> 00:26:17,857 Ac felly yn awr ei fod yn ôl pob tebyg dewis y nifer lleiaf 539 00:26:17,857 --> 00:26:20,440 a dim ond yn ei roi ar y dechrau y rhestr, fel y byddaf yn ei wneud yma. 540 00:26:20,440 --> 00:26:23,480 Nawr beth wnaethoch chi ei wneud nesaf, er bod nad oeddech yn meddwl am y peth bron 541 00:26:23,480 --> 00:26:25,962 i'r graddau hyn? 542 00:26:25,962 --> 00:26:27,670 Ailadroddwch y broses, felly rhyw fath o ddolen. 543 00:26:27,670 --> 00:26:28,920 Mae 'na syniad cyfarwydd. 544 00:26:28,920 --> 00:26:30,860 Felly dyma yw pedwar. 545 00:26:30,860 --> 00:26:32,110 Dyna y lleiaf ar hyn o bryd. 546 00:26:32,110 --> 00:26:33,220 Dyna yn ymgeisydd. 547 00:26:33,220 --> 00:26:33,900 Ddim yn anymore. 548 00:26:33,900 --> 00:26:34,770 Nawr rwyf wedi gweld dau. 549 00:26:34,770 --> 00:26:36,630 Dyna'r elfen lleiaf nesaf. 550 00:26:36,630 --> 00:26:40,800 Three-- nad yw hynny'n llai, felly Bellach, gall Ben tyn allan y ddau. 551 00:26:40,800 --> 00:26:44,510 >> Ac yn awr rydym yn ailadrodd y broses, ac wrth gwrs tri yn cael ei dynnu allan nesaf. 552 00:26:44,510 --> 00:26:45,420 Ailadroddwch y broses. 553 00:26:45,420 --> 00:26:46,990 Mae pedwar yn cael ei dynnu allan. 554 00:26:46,990 --> 00:26:50,140 Ac yn awr rydym yn allan o rifau, felly mae'n rhaid i'r rhestr yn cael ei datrys. 555 00:26:50,140 --> 00:26:51,960 >> Ac yn wir, mae hwn yn algorithm ffurfiol. 556 00:26:51,960 --> 00:26:56,610 Mae gwyddonydd cyfrifiadurol byddai yn galw hyn yn "fath dethol," 557 00:26:56,610 --> 00:27:00,880 Y syniad oedd math yn Rhestrwch iteratively-- eto 558 00:27:00,880 --> 00:27:03,807 a dewis eto ac eto y nifer lleiaf. 559 00:27:03,807 --> 00:27:06,140 A beth sy'n neis am ei fod yn 'i' jyst mor darn athrylithgar. 560 00:27:06,140 --> 00:27:07,470 Mae mor syml. 561 00:27:07,470 --> 00:27:11,100 A gallwch ailadrodd yr un llawdriniaeth eto ac eto. 562 00:27:11,100 --> 00:27:12,150 Mae'n syml. 563 00:27:12,150 --> 00:27:17,170 >> Yn yr achos hwn roedd yn gyflym, ond pa mor hir mae'n ei mewn gwirionedd yn cymryd? 564 00:27:17,170 --> 00:27:19,880 Gadewch i ni ei gwneud yn ymddangos a teimlo ychydig yn fwy diflas. 565 00:27:19,880 --> 00:27:24,150 Felly un, dau, tri, pedwar, pump chwech, saith, wyth, naw, 10, 11, 12, 13, 14, 566 00:27:24,150 --> 00:27:26,160 15, 16-- rhif mympwyol. 567 00:27:26,160 --> 00:27:28,780 Fi jyst eisiau mwy hwn amser na dim ond y pedwar. 568 00:27:28,780 --> 00:27:30,780 Felly os gen i yn ei gyfanrwydd criw o rifau now-- ei 569 00:27:30,780 --> 00:27:32,420 Nid yw hyd yn oed yn ots yr hyn y maent yw-- yn gadael i 570 00:27:32,420 --> 00:27:34,380 yn meddwl am beth mae hyn algorithm mewn gwirionedd yn debyg. 571 00:27:34,380 --> 00:27:35,857 >> Tybiwch mae niferoedd yno. 572 00:27:35,857 --> 00:27:38,190 Unwaith eto, nid oes ots beth y maent, ond maen nhw'n hap. 573 00:27:38,190 --> 00:27:39,679 Rwyf yn gwneud cais algorithm Ben. 574 00:27:39,679 --> 00:27:41,220 Mae angen i mi ddewis y nifer lleiaf. 575 00:27:41,220 --> 00:27:41,761 Beth ydw i'n gwneud? 576 00:27:41,761 --> 00:27:44,240 Ac yr wyf i'n mynd i yn gorfforol yn ei wneud y tro hwn i weithredu arno. 577 00:27:44,240 --> 00:27:46,099 Wrth edrych, edrych, edrych, edrych, edrych. 578 00:27:46,099 --> 00:27:48,140 Dim ond erbyn i mi gyrraedd diwedd y rhestr yn gallu 579 00:27:48,140 --> 00:27:51,230 Rwy'n sylweddoli y lleiaf Rhif oedd dau y tro hwn. 580 00:27:51,230 --> 00:27:52,720 Nid yw un sydd yn y rhestr. 581 00:27:52,720 --> 00:27:54,400 Felly, yr wyf yn rhoi i lawr dau. 582 00:27:54,400 --> 00:27:55,590 >> Beth ddylwn i ei wneud nesaf? 583 00:27:55,590 --> 00:27:58,600 Wrth edrych, edrych, edrych, yn edrych. 584 00:27:58,600 --> 00:28:02,250 Nawr rwy'n dod o hyd i'r rhif saith, gan fod mae bylchau yn y numbers-- hyn 585 00:28:02,250 --> 00:28:03,300 ond dim ond mympwyol. 586 00:28:03,300 --> 00:28:03,800 Iawn. 587 00:28:03,800 --> 00:28:06,030 Felly, yn awr y gallaf roi i lawr saith. 588 00:28:06,030 --> 00:28:08,860 Wrth edrych yn edrych, yn edrych. 589 00:28:08,860 --> 00:28:11,030 >> Nawr rwy'n tybio, o gwrs, bod Ben nid yw'n 590 00:28:11,030 --> 00:28:14,780 cael RAM ychwanegol, yn ychwanegol cof, oherwydd, wrth gwrs, 591 00:28:14,780 --> 00:28:16,080 Rwy'n edrych ar yr un rhif. 592 00:28:16,080 --> 00:28:18,246 Siawns Gallwn fod wedi cofio pob un o'r niferoedd hynny, 593 00:28:18,246 --> 00:28:19,930 ac mae hynny'n hollol wir. 594 00:28:19,930 --> 00:28:22,610 Ond os Ben cofio pob o'r rhifau mae'n ei weld, 595 00:28:22,610 --> 00:28:24,430 nad yw wedi gwneud mewn gwirionedd cynnydd sylfaenol 596 00:28:24,430 --> 00:28:26,170 oherwydd ei fod eisoes y gallu i chwilio 597 00:28:26,170 --> 00:28:27,540 drwy'r rhifau ar y bwrdd. 598 00:28:27,540 --> 00:28:29,373 Cofio pob un o'r Nid yw niferoedd yn helpu, 599 00:28:29,373 --> 00:28:32,490 oherwydd ei fod yn gallu dal fel cyfrifiadur ond yn edrych ar, rydym wedi dweud, un rhif 600 00:28:32,490 --> 00:28:33,080 ar y tro. 601 00:28:33,080 --> 00:28:35,760 Felly does dim math o twyllo yno y gallwch trosoledd. 602 00:28:35,760 --> 00:28:39,170 >> Felly mewn gwirionedd, gan fy mod yn cadw chwilio y rhestr, 603 00:28:39,170 --> 00:28:44,200 Mae'n rhaid i mi yn llythrennol i jyst cadw i fynd yn ôl ac ymlaen drwyddo, plicio allan 604 00:28:44,200 --> 00:28:45,710 y nifer lleiaf nesaf. 605 00:28:45,710 --> 00:28:48,810 Ac fel y gallwch chi fath o awgrymu o fy symudiadau gwirion, 606 00:28:48,810 --> 00:28:50,860 mae hyn yn mynd yn iawn 'n faith yn gyflym iawn, 607 00:28:50,860 --> 00:28:54,850 ac yr wyf yn ymddangos i fod yn mynd yn ôl ac allan, yn ôl ac ymlaen gryn dipyn. 608 00:28:54,850 --> 00:29:03,220 Nawr i fod yn deg, nid oes rhaid i mi fynd yn eithaf fel, yn dda, gadewch i ni see-- i fod yn deg, 609 00:29:03,220 --> 00:29:06,310 Nid oes rhaid i mi gerdded yn eithaf cymaint o gamau bob tro. 610 00:29:06,310 --> 00:29:09,200 Oherwydd, wrth gwrs, gan fy mod dewiswch rhifau o'r rhestr, 611 00:29:09,200 --> 00:29:11,860 y rhestr sydd ar ôl yn mynd yn fyrrach. 612 00:29:11,860 --> 00:29:14,240 >> Ac felly gadewch i ni feddwl am faint o gamau rwy'n mewn gwirionedd 613 00:29:14,240 --> 00:29:16,010 traipsing drwy bob tro. 614 00:29:16,010 --> 00:29:18,950 Yn y sefyllfa cyntaf cawsom rhifau 16, 615 00:29:18,950 --> 00:29:22,210 ac felly maximally-- gadewch i jyst gwneud hyn am discussion-- 616 00:29:22,210 --> 00:29:25,640 Roedd rhaid i mi edrych drwy 16 rhifau i ddod o hyd i'r lleiaf. 617 00:29:25,640 --> 00:29:28,420 Ond ar ôl i mi dynnu allan y nifer lleiaf, sut 618 00:29:28,420 --> 00:29:30,590 yn hir y rhestr sydd ar ôl, wrth gwrs? 619 00:29:30,590 --> 00:29:31,420 Dim ond 15. 620 00:29:31,420 --> 00:29:34,670 yn gwneud hynny faint o rifau Ben neu gen i i edrych trwy'r ail dro o gwmpas? 621 00:29:34,670 --> 00:29:36,832 15, dim ond i fynd a dod o hyd i'r lleiaf. 622 00:29:36,832 --> 00:29:39,540 Ond yn awr, wrth gwrs, mae'r rhestr yn, hefyd, yn llai nag yr oedd o'r blaen. 623 00:29:39,540 --> 00:29:42,540 Felly faint o gamau y gwnaeth i mi rhaid iddynt gymryd y tro nesaf? 624 00:29:42,540 --> 00:29:49,970 14 ac yna 13 ac yna 12, yn ogystal â dot, dot, dot, hyd nes fy mod i'n gadael gyda dim ond un. 625 00:29:49,970 --> 00:29:53,146 Felly nawr byddai gwyddonydd cyfrifiadurol gofyn, yn dda, beth mae hynny'n gyd yn gyfartal? 626 00:29:53,146 --> 00:29:55,770 Mae'n mewn gwirionedd yn hafal rhywfaint concrid Rhif y gallem yn sicr 627 00:29:55,770 --> 00:30:00,490 gwneud rhifyddol, ond rydym eisiau siarad am effeithlonrwydd o algorithmau 628 00:30:00,490 --> 00:30:04,940 ychydig yn fwy formulaically, yn annibynnol o ba mor hir yw'r rhestr yn. 629 00:30:04,940 --> 00:30:06,240 >> Ac felly eich bod yn gwybod beth? 630 00:30:06,240 --> 00:30:09,860 Mae hyn yn 16 oed, ond fel y dywedais o'r blaen, gadewch i ni ffoniwch maint y broblem 631 00:30:09,860 --> 00:30:10,970 n, lle mae n rhywfaint o rif. 632 00:30:10,970 --> 00:30:13,220 Efallai ei fod yn 16 oed, efallai ei bod yn tri, efallai ei fod yn miliwn. 633 00:30:13,220 --> 00:30:13,761 Nid wyf yn gwybod. 634 00:30:13,761 --> 00:30:14,390 Nid wyf yn poeni. 635 00:30:14,390 --> 00:30:16,520 Beth Fi 'n sylweddol eisiau yw fformiwla sy'n gallaf 636 00:30:16,520 --> 00:30:19,420 defnyddio i gymharu algorithm hwn erbyn algorithmau eraill 637 00:30:19,420 --> 00:30:22,350 y gallai rhywun yn hawlio yn well neu'n waeth. 638 00:30:22,350 --> 00:30:25,430 >> Felly, mae'n troi allan, ac yr wyf yn unig gwybod hyn o ysgol radd, 639 00:30:25,430 --> 00:30:34,790 bod hyn mewn gwirionedd yn gweithio allan at yr un beth â n dros n plws un dros ddwy. 640 00:30:34,790 --> 00:30:40,020 Ac mae hyn yn digwydd i cyfartal, o gwrs, n sgwario ynghyd n dros ddwy. 641 00:30:40,020 --> 00:30:43,250 Felly, os oeddwn i eisiau fformiwla am faint o gamau 642 00:30:43,250 --> 00:30:46,330 yn cymryd rhan mewn edrych ar yr holl o'r niferoedd hynny dro ar ôl tro 643 00:30:46,330 --> 00:30:52,681 ac eto ac eto, byddwn yn dweud mae'n sgwâr n plws n dros ddwy. 644 00:30:52,681 --> 00:30:53,430 Ond eich bod yn gwybod beth? 645 00:30:53,430 --> 00:30:54,500 Mae hyn yn unig yn edrych yn anniben. 646 00:30:54,500 --> 00:30:56,470 Fi jyst 'n sylweddol eisiau ymdeimlad cyffredinol o bethau. 647 00:30:56,470 --> 00:30:58,810 Ac efallai y byddwch yn cofio o ysgol uwchradd fod yna 648 00:30:58,810 --> 00:31:00,660 yw'r syniad o dymor radd uchaf. 649 00:31:00,660 --> 00:31:05,300 Pa rai o'r termau hyn, mae'r n sgwâr, mae'r n, neu'r hanner, 650 00:31:05,300 --> 00:31:07,550 cael yr effaith fwyaf dros amser? 651 00:31:07,550 --> 00:31:11,920 Mae'r n fwy yn cael, sy'n o'r materion hyn fwyaf? 652 00:31:11,920 --> 00:31:15,560 >> Mewn geiriau eraill, os wyf yn plwg mewn miliwn, n sgwario 653 00:31:15,560 --> 00:31:17,900 yn mynd i fod yn fwyaf tebygol y ffactor dra-arglwyddiaethu, 654 00:31:17,900 --> 00:31:21,670 oherwydd bod miliwn o weithiau ei hun yn llawer mwy 655 00:31:21,670 --> 00:31:23,682 nag ynghyd ag un miliwn ychwanegol. 656 00:31:23,682 --> 00:31:24,390 Felly, rydych yn gwybod beth? 657 00:31:24,390 --> 00:31:27,305 Mae hon yn darn mor fawr Rhif os ydych yn sgwario'r rhif. 658 00:31:27,305 --> 00:31:28,430 Nid yw hyn yn wirioneddol bwysig. 659 00:31:28,430 --> 00:31:30,596 Rydym yn unig yn groes mynd y allan ac anghofio am y peth. 660 00:31:30,596 --> 00:31:34,250 Ac felly byddai gwyddonydd cyfrifiadurol yn dweud bod effeithlonrwydd y algorithm hwn 661 00:31:34,250 --> 00:31:37,850 ar y drefn n squared-- Yr wyf yn golygu wirioneddol brasamcan. 662 00:31:37,850 --> 00:31:40,810 Mae'n cael ei sgwâr fath o fras n. 663 00:31:40,810 --> 00:31:44,130 Dros amser, y mwyaf ac yn fwy n cael, mae hyn yn 664 00:31:44,130 --> 00:31:47,610 yn amcangyfrif da ar gyfer yr hyn y mae'r effeithlonrwydd neu ddiffyg effeithlonrwydd 665 00:31:47,610 --> 00:31:49,400 o algorithm hwn mewn gwirionedd. 666 00:31:49,400 --> 00:31:52,040 Ac yr wyf yn deillio hynny, wrth gwrs, o mewn gwirionedd yn gwneud y mathemateg. 667 00:31:52,040 --> 00:31:54,040 Ond yn awr Im 'jyst yn chwifio fy nwylo, oherwydd yr wyf yn jyst 668 00:31:54,040 --> 00:31:55,790 eisiau ymdeimlad cyffredinol o algorithm hwn. 669 00:31:55,790 --> 00:31:58,850 >> Felly gan ddefnyddio'r un rhesymeg, yn y cyfamser, gadewch i ni ystyried algorithm arall 670 00:31:58,850 --> 00:32:01,162 rydym eisoes yn edrych at-- chwiliad llinol. 671 00:32:01,162 --> 00:32:02,870 Pan oeddwn yn chwilio ar gyfer yr book-- ffôn 672 00:32:02,870 --> 00:32:05,980 Nid yw didoli iddo, chwilio drwy'r book-- ffôn 673 00:32:05,980 --> 00:32:09,197 rydym yn cadw dweud ei fod yn 1,000 gamau, neu 500 o risiau. 674 00:32:09,197 --> 00:32:10,280 Ond gadewch i ni gyffredinoli hynny. 675 00:32:10,280 --> 00:32:12,860 Os oes n dudalennau yn y llyfr ffôn, beth 676 00:32:12,860 --> 00:32:17,250 yr amser yn rhedeg neu'r effeithlonrwydd chwiliad llinol? 677 00:32:17,250 --> 00:32:19,750 Mae'n ar y drefn o faint o gamau i ddod o hyd i 678 00:32:19,750 --> 00:32:24,210 Mike Smith gan ddefnyddio chwiliad llinol, mae'r algorithm cyntaf, neu hyd yn oed yr ail? 679 00:32:24,210 --> 00:32:27,240 680 00:32:27,240 --> 00:32:31,710 >> Yn yr achos gwaethaf, Mike ar ddiwedd y llyfr. 681 00:32:31,710 --> 00:32:35,590 Felly, os y llyfr ffôn Mae 1,000 o dudalennau, dywedasom y tro diwethaf, yn yr achos gwaethaf, 682 00:32:35,590 --> 00:32:38,380 gallai gymryd yn fras pa mor mae llawer o dudalennau i ddod o hyd i Mike? 683 00:32:38,380 --> 00:32:38,990 Fel 1,000. 684 00:32:38,990 --> 00:32:39,830 Mae'n uchaf yn rhwymo. 685 00:32:39,830 --> 00:32:41,790 Mae'n sefyllfa waethaf posibl. 686 00:32:41,790 --> 00:32:44,410 Ond unwaith eto, rydym yn symud i ffwrdd o rifau fel 1,000 awr. 687 00:32:44,410 --> 00:32:45,730 'I' jyst n. 688 00:32:45,730 --> 00:32:47,470 >> Felly beth yw'r casgliad rhesymegol? 689 00:32:47,470 --> 00:32:50,210 Dod o hyd i Mike yn ffôn llyfr sydd â thudalennau n 690 00:32:50,210 --> 00:32:55,280 Gallai cymryd, yn yr achos gwaethaf iawn, faint o gamau ar y drefn n? 691 00:32:55,280 --> 00:32:58,110 Ac yn wir cyfrifiadur Byddai gwyddonydd yn dweud 692 00:32:58,110 --> 00:33:02,340 bod yr amser yn rhedeg, neu perfformiad neu effeithlonrwydd 693 00:33:02,340 --> 00:33:07,470 neu aneffeithlonrwydd, o algorithm fel chwiliad llinol ar y drefn n. 694 00:33:07,470 --> 00:33:10,010 A gallwn gymhwyso'r un rhesymeg groesi rhywbeth allan 695 00:33:10,010 --> 00:33:13,170 fel yr wyf yn unig oedd i'r ail algorithm gawsom gyda y llyfr ffôn, 696 00:33:13,170 --> 00:33:16,040 lle rydym yn mynd dwy dudalen ar y tro. 697 00:33:16,040 --> 00:33:20,120 >> Felly gallai 1,000 dudalen llyfr ffôn mynd â ni 500 tro dudalen, yn ogystal ag un 698 00:33:20,120 --> 00:33:21,910 os byddwn yn dyblu ychydig yn ôl. 699 00:33:21,910 --> 00:33:26,590 Felly os bydd llyfr ffôn wedi dudalennau n, ond rydym yn ei wneud dwy dudalen ar y tro, 700 00:33:26,590 --> 00:33:28,900 dyna yn fras beth? 701 00:33:28,900 --> 00:33:33,190 N dros ddwy, felly dyna fel n dros ddwy. 702 00:33:33,190 --> 00:33:38,490 Ond yr wyf yn gwneud yr hawliad yn funud yn ôl nad n dros two-- 703 00:33:38,490 --> 00:33:41,060 dyna fath o yr un fath ag yn unig n. 704 00:33:41,060 --> 00:33:44,050 'I' jyst yn ffactor cyson, Byddai gwyddonwyr cyfrifiadurol yn dweud. 705 00:33:44,050 --> 00:33:45,970 Gadewch i ni dim ond yn canolbwyntio ar newidynnau, really-- 706 00:33:45,970 --> 00:33:47,780 newidynnau mwyaf yn yr hafaliad. 707 00:33:47,780 --> 00:33:52,530 >> Chwilio Felly llinol, boed gwneud un dudalen ar y tro neu ddwy dudalen ar y tro, 708 00:33:52,530 --> 00:33:54,810 yn fath o bôn yr un fath. 709 00:33:54,810 --> 00:33:56,880 Mae'n dal i fod ar y drefn o n. 710 00:33:56,880 --> 00:34:01,930 Ond yr wyf yn honni gyda fy llun yn gynharach nad oedd y trydydd algorithm oedd 711 00:34:01,930 --> 00:34:02,480 llinol. 712 00:34:02,480 --> 00:34:03,605 Nid oedd yn llinell syth. 713 00:34:03,605 --> 00:34:08,659 Yr oedd y llinell honno crwm, ac mae'r fformiwla algebraidd roedd beth? 714 00:34:08,659 --> 00:34:11,812 Log o n-- felly log sylfaen dau o n. 715 00:34:11,812 --> 00:34:14,520 Ac nid oes rhaid i ni fynd i ormod cymaint o fanylion ar logarithmau heddiw, 716 00:34:14,520 --> 00:34:17,394 ond ni fyddai rhan fwyaf o wyddonwyr cyfrifiadurol hyd yn oed yn dweud wrthych beth y sylfaen yw. 717 00:34:17,394 --> 00:34:20,639 Oherwydd ei fod i gyd yn unig Ffactorau gyson, fel petai, 718 00:34:20,639 --> 00:34:22,659 dim ond gwahaniaethau rhifol bach. 719 00:34:22,659 --> 00:34:31,179 Ac felly byddai hyn yn gyffredin iawn ffordd ar gyfer cyfrifiadur yn arbennig ffurfiol 720 00:34:31,179 --> 00:34:33,949 gwyddonwyr yn fwrdd neu rhaglenwyr ar fwrdd gwyn 721 00:34:33,949 --> 00:34:36,889 mewn gwirionedd ddadlau pa algorithm byddent yn defnyddio 722 00:34:36,889 --> 00:34:39,500 neu beth effeithlonrwydd o'u algorithm yw. 723 00:34:39,500 --> 00:34:42,960 >> Ac nid yw hyn o reidrwydd yn rhywbeth fyddwch yn trafod yn fanwl iawn, 724 00:34:42,960 --> 00:34:47,889 ond rhaglennydd da yw rhywun sydd â chefndir cadarn, ffurfiol. 725 00:34:47,889 --> 00:34:50,120 Mae'n gallu siarad â chi yn y math hwn o ffordd 726 00:34:50,120 --> 00:34:53,350 ac mewn gwirionedd yn gwneud dadleuon ansoddol fel 727 00:34:53,350 --> 00:34:56,870 pam un algorithm neu un darn o feddalwedd 728 00:34:56,870 --> 00:35:00,165 yn well mewn rhyw ffordd i un arall. 729 00:35:00,165 --> 00:35:02,540 Oherwydd fe allech chi yn sicr jyst hidla rhaglen un person 730 00:35:02,540 --> 00:35:04,980 a chyfrif y nifer o eiliadau mae'n ei gymryd i ddatrys rhai rhifau, 731 00:35:04,980 --> 00:35:06,710 a allwch chi redeg rhai rhaglen unigolyn arall 732 00:35:06,710 --> 00:35:08,418 a gyfrif y nifer o eiliadau mae'n ei gymryd. 733 00:35:08,418 --> 00:35:12,840 Ond mae hyn yn ffordd fwy cyffredinol bod y gallwch eu defnyddio i ddadansoddi algorithmau, 734 00:35:12,840 --> 00:35:15,520 os mynnwch, yn union ar papur neu dim ond ar lafar. 735 00:35:15,520 --> 00:35:18,430 Heb hyd yn oed yn rhedeg, heb hyd yn oed yn ceisio mewnbynnau sampl, 736 00:35:18,430 --> 00:35:20,180 gallwch resymu drwyddo. 737 00:35:20,180 --> 00:35:24,670 Ac felly gyda llogi datblygwr neu os cael iddo ef neu hi fath o ddadlau i chi 738 00:35:24,670 --> 00:35:28,460 pam eu algorithm, eu cyfrinach saws ar gyfer chwilio biliynau 739 00:35:28,460 --> 00:35:30,580 tudalennau gwe ar gyfer eich cwmni yn well, mae'r rhain yn 740 00:35:30,580 --> 00:35:33,302 yn y mathau o ddadleuon y maent yn yn ddelfrydol allu gwneud. 741 00:35:33,302 --> 00:35:35,010 Neu o leiaf y rhain yn y mathau o bethau 742 00:35:35,010 --> 00:35:40,211 a fyddai'n dod i fyny mewn trafodaeth, yn lleiaf mewn trafodaeth ffurfiol iawn. 743 00:35:40,211 --> 00:35:40,710 Iawn. 744 00:35:40,710 --> 00:35:44,400 Felly Ben arfaethedig rhywbeth Gelwir math dethol. 745 00:35:44,400 --> 00:35:48,200 Ond dw i'n mynd i gynnig bod yna ffyrdd eraill o wneud hyn, hefyd. 746 00:35:48,200 --> 00:35:50,400 Beth Doeddwn i ddim wir yn hoffi am algorithm Ben 747 00:35:50,400 --> 00:35:54,400 yw ei fod yn cadw cerdded, neu ar ôl i mi gerdded, yn ôl ac ymlaen 748 00:35:54,400 --> 00:35:56,930 ac yn ôl ac ymlaen ac yn ôl ac ymlaen. 749 00:35:56,930 --> 00:36:04,130 Beth os hytrach bawn yn gwneud rhywbeth fel rhifau hyn yma 750 00:36:04,130 --> 00:36:08,200 ac bawn yn jyst ymdrin â phob nifer yn ei dro gan fy mod yn ei roi iddo? 751 00:36:08,200 --> 00:36:10,780 >> Mewn geiriau eraill, dyma fy rhestr o rifau. 752 00:36:10,780 --> 00:36:12,944 Pedwar, un, tri, dau. 753 00:36:12,944 --> 00:36:14,360 Ac yr wyf i'n mynd i wneud y canlynol. 754 00:36:14,360 --> 00:36:17,230 Rydw i'n mynd i mewnosoder y rhifau lle maent yn perthyn yn hytrach 755 00:36:17,230 --> 00:36:18,980 na dewis un ohonynt ar y tro. 756 00:36:18,980 --> 00:36:20,820 Mewn geiriau eraill, dyma 'r rhif pedwar. 757 00:36:20,820 --> 00:36:22,430 >> Dyma fy rhestr wreiddiol. 758 00:36:22,430 --> 00:36:25,290 Ac yr wyf i'n mynd i gynnal hanfod yn rhestr newydd yma. 759 00:36:25,290 --> 00:36:26,710 Felly, mae hyn yn y rhestr hen. 760 00:36:26,710 --> 00:36:28,560 Mae hyn yn y rhestr newydd. 761 00:36:28,560 --> 00:36:30,220 Rwy'n gweld y rhif pedwar cyntaf. 762 00:36:30,220 --> 00:36:34,500 Fy rhestr newydd yn y lle cyntaf wag, felly mae'n trivially yn wir 763 00:36:34,500 --> 00:36:36,410 bod pedwar yn awr yn rhestr assorted. 764 00:36:36,410 --> 00:36:39,560 Im 'jyst yn cymryd y nifer dwi'n rhoi, a dwi'n ei roi yn fy rhestr newydd. 765 00:36:39,560 --> 00:36:41,460 >> A yw hyn yn rhestr newydd didoli? 766 00:36:41,460 --> 00:36:41,990 Yeah. 767 00:36:41,990 --> 00:36:45,090 Mae'n dwp oherwydd mae dim ond un elfen, ond mae'n datrys gwbl. 768 00:36:45,090 --> 00:36:46,390 Does dim byd allan o le. 769 00:36:46,390 --> 00:36:49,290 Mae'n fwy diddorol, algorithm hwn, pan fyddaf yn symud i'r cam nesaf. 770 00:36:49,290 --> 00:36:50,550 >> Nawr mae gen i un. 771 00:36:50,550 --> 00:36:55,430 Felly un, wrth gwrs, yn perthyn yn y dechrau neu ddiwedd y rhestr newydd? 772 00:36:55,430 --> 00:36:56,360 Y dechrau. 773 00:36:56,360 --> 00:36:58,530 Felly rhaid i mi wneud rhywfaint o waith yn awr. 774 00:36:58,530 --> 00:37:01,410 Rydw i wedi bod yn cymryd peth rhyddid gyda fy marciwr 775 00:37:01,410 --> 00:37:03,120 at jyst yn tynnu pethau lle yr wyf am iddynt, 776 00:37:03,120 --> 00:37:05,320 ond nid yw hynny'n wir yn gywir mewn cyfrifiadur. 777 00:37:05,320 --> 00:37:08,530 Mae cyfrifiadur, fel y gwyddom, mae gan RAM, neu ar hap Cof Mynediad, 778 00:37:08,530 --> 00:37:12,411 a dyna un beit a beit arall a beit arall. 779 00:37:12,411 --> 00:37:14,910 Ac os oes gennych gigabeit o RAM, mae gennych biliwn o bytes, 780 00:37:14,910 --> 00:37:16,680 ond maent yn gorfforol mewn un lleoliad. 781 00:37:16,680 --> 00:37:19,540 nid ydych yn gallu symud o gwmpas pethau trwy dynnu ar y bwrdd 782 00:37:19,540 --> 00:37:20,750 ble bynnag y mynnwch. 783 00:37:20,750 --> 00:37:24,090 Felly os yw fy rhestr newydd wedi pedwar lleoliad yn y cof, 784 00:37:24,090 --> 00:37:27,480 yn anffodus mae'r pedwar yn eisoes yn y lle anghywir. 785 00:37:27,480 --> 00:37:30,410 >> Felly, er mwyn mewnosoder y rhif un Ni all Fi jyst dynnu yma. 786 00:37:30,410 --> 00:37:31,901 Nid yw hyn lleoliad cof yn bodoli. 787 00:37:31,901 --> 00:37:35,150 Byddai hynny'n twyllo, ac yr wyf wedi bod twyllo ddarluniadol am ychydig funudau 788 00:37:35,150 --> 00:37:35,800 fan hyn. 789 00:37:35,800 --> 00:37:40,950 Felly mewn gwirionedd, os wyf am roi un yma, Mae'n rhaid i mi gopïo'r pedwar dros dro 790 00:37:40,950 --> 00:37:43,030 ac yna rhowch y un yno. 791 00:37:43,030 --> 00:37:45,500 >> Mae hynny'n iawn, dyna gywir, dyna dechnegol bosibl, 792 00:37:45,500 --> 00:37:48,410 ond yn sylweddoli hynny'n gwaith ychwanegol. 793 00:37:48,410 --> 00:37:50,460 Doeddwn i ddim jyst roi nifer yn eu lle. 794 00:37:50,460 --> 00:37:53,026 Roedd rhaid i mi symud yn gyntaf rhif, yna ei roi ar waith, 795 00:37:53,026 --> 00:37:54,650 felly yr wyf yn fath o dyblu fy faint o waith. 796 00:37:54,650 --> 00:37:55,660 Felly cadwch hynny mewn cof. 797 00:37:55,660 --> 00:37:57,120 >> Ond yr wyf yn awr i'n ei wneud gyda elfen hon. 798 00:37:57,120 --> 00:37:59,056 Nawr rwyf am i chrafangia 'r rhif tri. 799 00:37:59,056 --> 00:38:00,430 Lle, wrth gwrs, a yw'n perthyn? 800 00:38:00,430 --> 00:38:01,480 Yn y canol. 801 00:38:01,480 --> 00:38:03,650 Nid wyf yn gallu twyllo anymore a dim ond yn ei roi yno, 802 00:38:03,650 --> 00:38:06,770 oherwydd, unwaith eto, cof hon mewn lleoliadau corfforol. 803 00:38:06,770 --> 00:38:10,900 Felly rhaid i mi gopïo'r pedwar a rhowch y tri dros yma. 804 00:38:10,900 --> 00:38:11,550 Ddim yn beth mawr. 805 00:38:11,550 --> 00:38:14,610 Dim ond un cam ychwanegol again-- teimlo'n rhad iawn. 806 00:38:14,610 --> 00:38:16,445 >> Ond yn awr yr wyf yn symud ymlaen at y ddau. 807 00:38:16,445 --> 00:38:17,820 Mae'r ddau, wrth gwrs, yn perthyn yma. 808 00:38:17,820 --> 00:38:20,990 Nawr eich bod yn dechrau gweld sut gall y gwaith pentwr i fyny. 809 00:38:20,990 --> 00:38:23,520 Nawr beth sy'n rhaid i mi ei wneud? 810 00:38:23,520 --> 00:38:28,570 Yeah, rhaid i mi symud i'r pedwar, Mae'n rhaid i mi wedyn i gopïo'r tri, 811 00:38:28,570 --> 00:38:31,200 ac yn awr y gallaf mewnosoder y ddau. 812 00:38:31,200 --> 00:38:34,460 Ac mae'r dal gyda hyn algorithm, yn ddiddorol ddigon, 813 00:38:34,460 --> 00:38:41,050 yw y mae'n debyg mae gennym fwy eithafol achos lle mae'n gadewch i ni ddweud wyth, saith, 814 00:38:41,050 --> 00:38:45,150 chwech, pump, pedwar, tri, dau, un. 815 00:38:45,150 --> 00:38:49,450 Mae hyn, mewn sawl cyd-destun, y senario achos gwaethaf, 816 00:38:49,450 --> 00:38:51,570 oherwydd y peth darn yn llythrennol ôl. 817 00:38:51,570 --> 00:38:53,670 >> Nid yw'n wir yn effeithio ar algorithm Ben, 818 00:38:53,670 --> 00:38:55,940 oherwydd mewn detholiad Ben didoli mae'n mynd i gadw 819 00:38:55,940 --> 00:38:58,359 yn mynd yn ôl ac ymlaen drwy'r rhestr. 820 00:38:58,359 --> 00:39:01,150 Ac oherwydd ei fod yn edrych bob amser drwy'r rhestr sy'n weddill cyfan, 821 00:39:01,150 --> 00:39:02,858 does dim ots ble mae'r elfennau yw. 822 00:39:02,858 --> 00:39:05,630 Ond yn yr achos hwn gyda fy mewnosod approach-- gadewch i ni geisio hyn. 823 00:39:05,630 --> 00:39:08,616 >> Felly un, dau, tri, pedwar, pump, chwech, saith, wyth. 824 00:39:08,616 --> 00:39:11,630 Un, dau, tri, pedwar, pump, chwech, saith, wyth. 825 00:39:11,630 --> 00:39:14,320 Rydw i'n mynd i gymryd y wyth, a ble ydw i'n ei roi? 826 00:39:14,320 --> 00:39:17,260 Wel, ar ddechrau fy rhestr, gan fod hyn yn rhestr newydd yn cael ei datrys. 827 00:39:17,260 --> 00:39:18,760 Ac yr wyf yn ei groesi allan. 828 00:39:18,760 --> 00:39:20,551 >> Ble ydw i'n rhoi'r saith? 829 00:39:20,551 --> 00:39:21,050 Darn iddo. 830 00:39:21,050 --> 00:39:23,174 Mae angen iddo fynd yno, felly rhaid i mi wneud rhywfaint o gopïo. 831 00:39:23,174 --> 00:39:26,820 832 00:39:26,820 --> 00:39:28,480 Ac yn awr y saith mynd yma. 833 00:39:28,480 --> 00:39:29,860 Nawr rwy'n symud ymlaen at y chwech. 834 00:39:29,860 --> 00:39:30,980 Nawr mae hyd yn oed mwy o waith. 835 00:39:30,980 --> 00:39:32,570 >> Wyth wedi i fynd yma. 836 00:39:32,570 --> 00:39:33,920 Saith wedi i fynd yma. 837 00:39:33,920 --> 00:39:35,450 Nawr gall y chwe ewch yma. 838 00:39:35,450 --> 00:39:37,950 Nawr rwy'n chrafangia 'r pump. 839 00:39:37,950 --> 00:39:40,560 Nawr bod y wyth yn gorfod mynd yma, saith wedi i fynd yma, 840 00:39:40,560 --> 00:39:43,650 chwech wedi i fynd yma, a yn awr y pum ac ailadrodd. 841 00:39:43,650 --> 00:39:46,610 A dwi'n 'n bert lawer symud yn barhaus. 842 00:39:46,610 --> 00:39:52,950 >> Felly, ar y diwedd, algorithm-- hwn rydym annhymerus ' alw'n mewnosod sort-- gwirionedd 843 00:39:52,950 --> 00:39:55,020 Mae llawer o waith, hefyd. 844 00:39:55,020 --> 00:39:56,970 'I' jyst yn wahanol math o waith na Ben. 845 00:39:56,970 --> 00:40:00,090 Roedd gan waith Ben mi fynd yn ôl ac ymlaen drwy'r amser, 846 00:40:00,090 --> 00:40:03,510 dewis lleiaf y nesaf elfen eto ac eto. 847 00:40:03,510 --> 00:40:06,660 Felly roedd hwn math weledol iawn o waith. 848 00:40:06,660 --> 00:40:10,600 >> Mae'r algorithm arall, sydd yn dal correct-- bydd yn cael y swydd done-- 849 00:40:10,600 --> 00:40:12,800 jyst yn newid faint o waith. 850 00:40:12,800 --> 00:40:15,420 Mae'n edrych fel y dechrau eich bod yn arbed, oherwydd eich bod yn unig 851 00:40:15,420 --> 00:40:19,190 ymdrin â phob elfen ymlaen llaw heb gerdded yr holl 852 00:40:19,190 --> 00:40:20,930 y ffordd trwy'r rhestr fel Ben oedd. 853 00:40:20,930 --> 00:40:25,300 Ond y broblem yw, yn enwedig yn y achosion crazy lle mae'r cyfan yn ôl, 854 00:40:25,300 --> 00:40:27,830 eich bod yn unig fath o gohirio'r gwaith caled 855 00:40:27,830 --> 00:40:30,360 nes bod yn rhaid i chi drwsio eich camgymeriadau. 856 00:40:30,360 --> 00:40:33,919 >> Ac felly os gallwch ddychmygu hyn wyth a saith a chwech a phump 857 00:40:33,919 --> 00:40:36,710 ac yn ddiweddarach pedwar a thri a dau symud eu ffordd drwy'r rhestr, 858 00:40:36,710 --> 00:40:39,060 rydym wedi newydd newid y math o waith rydym yn ei wneud. 859 00:40:39,060 --> 00:40:42,340 Yn hytrach na gwneud hynny ar y gan ddechrau o fy iteriad, 860 00:40:42,340 --> 00:40:45,250 Im 'jyst yn gwneud hynny ar y ddiwedd pob ailadrodd. 861 00:40:45,250 --> 00:40:50,550 Felly, mae'n troi allan bod algorithm hwn, hefyd, a elwir yn gyffredinol yn fath fewnosod, 862 00:40:50,550 --> 00:40:52,190 hefyd ar y drefn n sgwâr. 863 00:40:52,190 --> 00:40:56,480 Mae'n mewn gwirionedd yn ddim gwell, ddim gwell o gwbl. 864 00:40:56,480 --> 00:41:00,810 >> Fodd bynnag, mae yna drydydd dull Byddwn yn annog i ni eu hystyried, 865 00:41:00,810 --> 00:41:02,970 sef hyn. 866 00:41:02,970 --> 00:41:07,850 Felly mae'n debyg fy rhestr, er symlrwydd unwaith eto, yn bedwar, un, tri, 867 00:41:07,850 --> 00:41:11,080 two-- dim ond pedwar rhif. 868 00:41:11,080 --> 00:41:13,300 Roedd gan Ben greddf da, greddf dynol da 869 00:41:13,300 --> 00:41:16,340 o'r blaen, a ddefnyddiwn i sefydlog y cyfan Rhestrwch eventually-- math fewnosod. 870 00:41:16,340 --> 00:41:18,020 Rwy'n ddenu'n â ni ar hyd. 871 00:41:18,020 --> 00:41:22,530 Ond gadewch i ni ystyried y ffordd symlaf at atgyweiria y rhestr hon. 872 00:41:22,530 --> 00:41:24,110 >> Nid yw'r rhestr hon yn cael ei datrys. 873 00:41:24,110 --> 00:41:26,130 Pam? 874 00:41:26,130 --> 00:41:31,920 Yn Saesneg, eglurwch pam nid yw'n datrys mewn gwirionedd. 875 00:41:31,920 --> 00:41:33,400 Beth nad yw'n ei olygu i'w didoli? 876 00:41:33,400 --> 00:41:34,220 >> MYFYRIWR: Nid yw'n dilyniannol. 877 00:41:34,220 --> 00:41:34,990 >> DAVID Malan: Ddim dilyniannol. 878 00:41:34,990 --> 00:41:35,822 Rhowch enghraifft i mi. 879 00:41:35,822 --> 00:41:37,180 >> MYFYRIWR: Rhowch nhw mewn trefn. 880 00:41:37,180 --> 00:41:37,440 >> DAVID Malan: OK. 881 00:41:37,440 --> 00:41:38,790 Rhowch enghraifft mwy penodol i mi. 882 00:41:38,790 --> 00:41:39,832 >> MYFYRIWR: trefn Esgynnol. 883 00:41:39,832 --> 00:41:41,206 DAVID Malan: Ddim esgynnol drefn. 884 00:41:41,206 --> 00:41:42,100 Bod yn fwy manwl gywir. 885 00:41:42,100 --> 00:41:45,190 Nid wyf yn gwybod beth yr ydych yn ei olygu wrth esgyn. 886 00:41:45,190 --> 00:41:47,150 Beth sy'n bod? 887 00:41:47,150 --> 00:41:49,930 >> MYFYRIWR: Y lleiaf o'r Nid yw niferoedd yn y gofod cyntaf. 888 00:41:49,930 --> 00:41:51,140 >> DAVID Malan: Rhif Lleiaf yn Nid yw yn y gofod cyntaf. 889 00:41:51,140 --> 00:41:52,120 Fod yn fwy penodol. 890 00:41:52,120 --> 00:41:55,000 Dwi'n dechrau i ddal ar. 891 00:41:55,000 --> 00:41:59,470 Rydym yn cyfrif, ond beth sydd allan o drefn yma? 892 00:41:59,470 --> 00:42:00,707 >> MYFYRIWR: dilyniant rhifiadol. 893 00:42:00,707 --> 00:42:02,040 DAVID Malan: dilyniant rhifiadol. 894 00:42:02,040 --> 00:42:04,248 math pawb o gadw mae'n Yma-- lefel uchel iawn. 895 00:42:04,248 --> 00:42:07,450 Dim ond yn llythrennol ddweud wrthyf beth sydd anghywir fel gallai pum-mlwydd-oed. 896 00:42:07,450 --> 00:42:08,310 >> MYFYRIWR: Plus un. 897 00:42:08,310 --> 00:42:08,750 >> DAVID Malan: Beth sy'n bod? 898 00:42:08,750 --> 00:42:09,610 >> MYFYRIWR: Plus un. 899 00:42:09,610 --> 00:42:11,235 >> DAVID Malan: Beth ydych chi'n ei olygu un a mwy? 900 00:42:11,235 --> 00:42:12,754 901 00:42:12,754 --> 00:42:14,170 Dyro i mi wahanol pum-mlwydd-oed. 902 00:42:14,170 --> 00:42:16,840 903 00:42:16,840 --> 00:42:18,330 Beth sy'n bod, mom? 904 00:42:18,330 --> 00:42:19,940 Beth sy'n bod, dad? 905 00:42:19,940 --> 00:42:22,808 Beth ydych chi'n ei olygu nad yw hyn yn datrys? 906 00:42:22,808 --> 00:42:24,370 >> MYFYRIWR: Dyw hi ddim yn y lle iawn. 907 00:42:24,370 --> 00:42:25,580 >> DAVID Malan: Beth nid yn y lle iawn? 908 00:42:25,580 --> 00:42:26,174 >> MYFYRIWR: Four. 909 00:42:26,174 --> 00:42:27,090 DAVID Malan: OK, yn dda. 910 00:42:27,090 --> 00:42:29,110 Felly, nid pedwar lle y dylai fod. 911 00:42:29,110 --> 00:42:30,590 Yn benodol, a yw hyn yn iawn? 912 00:42:30,590 --> 00:42:33,000 Pedair ac un, y cyntaf dau rif Rwy'n gweld. 913 00:42:33,000 --> 00:42:34,930 A yw hyn yn gywir? 914 00:42:34,930 --> 00:42:36,427 Na, maen nhw'n allan o drefn, dde? 915 00:42:36,427 --> 00:42:38,135 Yn wir, yn meddwl yn awr am gyfrifiadur, hefyd. 916 00:42:38,135 --> 00:42:40,824 Gall ond edrych ar efallai un, efallai dau beth ar once-- 917 00:42:40,824 --> 00:42:43,240 ac mewn gwirionedd dim ond un peth ar y tro, ond mae'n gallu o leiaf 918 00:42:43,240 --> 00:42:45,790 yn edrych ar un peth, yna mae'r peth nesaf i'r dde nesaf iddo. 919 00:42:45,790 --> 00:42:47,380 >> Felly mae hyn mewn trefn? 920 00:42:47,380 --> 00:42:48,032 Wrth gwrs ddim. 921 00:42:48,032 --> 00:42:48,740 Felly, rydych yn gwybod beth? 922 00:42:48,740 --> 00:42:51,020 Pam nad ydym yn cymryd baban camau atgyweirio y broblem hon 923 00:42:51,020 --> 00:42:53,410 yn hytrach na gwneud hyn ffansi algorithmau fel Ben, lle 924 00:42:53,410 --> 00:42:56,440 ei fod yn fath o osod iddo gan dolennu drwy'r rhestr 925 00:42:56,440 --> 00:42:59,670 yn hytrach na gwneud yr hyn a wneuthum, lle Fi jyst fath o mae'n sefydlog wrth i ni fynd? 926 00:42:59,670 --> 00:43:03,650 Gadewch i 'jyst yn llythrennol yn torri i lawr y syniad o drefn rifiadol order--, 927 00:43:03,650 --> 00:43:06,990 ei alw beth bynnag yr ydych want-- mewn cymariaethau pairwise hyn. 928 00:43:06,990 --> 00:43:07,590 >> Pedair ac un. 929 00:43:07,590 --> 00:43:09,970 A yw hyn yn y drefn gywir? 930 00:43:09,970 --> 00:43:11,310 Felly gadewch i ni atgyweiria bod. 931 00:43:11,310 --> 00:43:14,700 Un a phedwar, ac yna byddwn yn jyst adysgrifia hynny. 932 00:43:14,700 --> 00:43:15,560 Mae pob hawl, yn dda. 933 00:43:15,560 --> 00:43:17,022 Yr wyf yn sefydlog un a phedwar. 934 00:43:17,022 --> 00:43:18,320 Tri a dau? 935 00:43:18,320 --> 00:43:18,820 No. 936 00:43:18,820 --> 00:43:21,690 Gadewch fy ngeiriau cyfateb fy mysedd. 937 00:43:21,690 --> 00:43:23,695 Pedwar a thri? 938 00:43:23,695 --> 00:43:27,930 >> Dyw hi ddim yn mewn trefn, felly dwi'n mynd i wneud un, tri, pedwar, dau. 939 00:43:27,930 --> 00:43:28,680 Iawn. 940 00:43:28,680 --> 00:43:32,310 Nawr pedwar a dau? 941 00:43:32,310 --> 00:43:33,370 Mae angen i ni atgyweiria hon, hefyd. 942 00:43:33,370 --> 00:43:36,700 Felly un, tri, dau, pedwar. 943 00:43:36,700 --> 00:43:39,820 Felly mae'n cael ei datrys? 944 00:43:39,820 --> 00:43:43,170 Nac oes, ond a yw'n agosach at datrys? 945 00:43:43,170 --> 00:43:48,930 >> Mae'n, oherwydd ein sefydlog hwn camgymeriad, rydym yn sefydlog camgymeriad hwn, 946 00:43:48,930 --> 00:43:50,370 ac rydym yn sefydlog camgymeriad hwn. 947 00:43:50,370 --> 00:43:52,420 Felly, rydym yn sefydlog tri camgymeriadau gellir dadlau. 948 00:43:52,420 --> 00:43:58,100 Still nid yw'n wir yn edrych ddidoli, ond mae'n wrthrychol nes at ddidoli 949 00:43:58,100 --> 00:44:00,080 oherwydd ein bod yn sefydlog rhai o'r camgymeriadau hynny. 950 00:44:00,080 --> 00:44:02,047 >> Nawr beth ddylwn i ei wneud nesaf? 951 00:44:02,047 --> 00:44:03,630 Wyf yn fath o cyrraedd diwedd y rhestr. 952 00:44:03,630 --> 00:44:05,680 Rwyf yn ymddangos i wedi sefydlog holl gamgymeriadau, ond dim. 953 00:44:05,680 --> 00:44:08,510 Oherwydd yn yr achos, rhai rhifau allai fod wedi bubbled fyny yn nes 954 00:44:08,510 --> 00:44:10,410 i rifau eraill sy'n yn dal i fod allan o drefn. 955 00:44:10,410 --> 00:44:12,951 Felly gadewch i ni wneud hynny eto, a 'n annhymerus' dim ond yn ei wneud yn ei le y tro hwn. 956 00:44:12,951 --> 00:44:14,170 Un a thri? 957 00:44:14,170 --> 00:44:14,720 Mae'n iawn. 958 00:44:14,720 --> 00:44:16,070 Tri a dau? 959 00:44:16,070 --> 00:44:17,560 Wrth gwrs ddim, felly gadewch i ni newid hynny. 960 00:44:17,560 --> 00:44:19,160 Felly dau, tri. 961 00:44:19,160 --> 00:44:21,340 Tri a phedwar? 962 00:44:21,340 --> 00:44:24,370 Ac yn awr gadewch i ni dim ond yn arbennig o bedantig yma. 963 00:44:24,370 --> 00:44:26,350 A yw'n datrys? 964 00:44:26,350 --> 00:44:29,280 Rydych yn bodau dynol yn gwybod ei fod yn datrys. 965 00:44:29,280 --> 00:44:30,400 >> dylwn i geisio eto. 966 00:44:30,400 --> 00:44:31,900 Felly Olivia yn cynnig yr wyf yn ceisio eto. 967 00:44:31,900 --> 00:44:32,530 Pam? 968 00:44:32,530 --> 00:44:35,810 Oherwydd nad oes gan gyfrifiadur moethusrwydd ein llygaid dynol 969 00:44:35,810 --> 00:44:38,080 o ychydig glancing back-- OK, dwi'n ei wneud. 970 00:44:38,080 --> 00:44:41,610 Sut mae'r cyfrifiadur yn penderfynu bod y rhestr yn awr yn datrys? 971 00:44:41,610 --> 00:44:44,590 Fecanyddol. 972 00:44:44,590 --> 00:44:47,650 >> dylwn i fynd drwy'r unwaith eto, a dim ond os byddaf 973 00:44:47,650 --> 00:44:51,190 peidiwch â gwneud / dod o hyd i unrhyw gamgymeriadau y gallaf Yna, yn dod i'r casgliad fod y cyfrifiadur, yep, 974 00:44:51,190 --> 00:44:51,980 rydym yn dda i fynd. 975 00:44:51,980 --> 00:44:54,850 Felly un a dau, dau a tri, tri a phedwar. 976 00:44:54,850 --> 00:44:58,030 Nawr gallaf ddweud yn bendant mae hyn yn didoli, oherwydd yr wyf yn gwneud unrhyw newidiadau. 977 00:44:58,030 --> 00:45:01,940 Nawr, byddai'n bug a dim ond ynfyd os wyf i, y cyfrifiadur, 978 00:45:01,940 --> 00:45:05,640 Gofynnodd un cwestiynau hynny eto disgwyl atebion gwahanol. 979 00:45:05,640 --> 00:45:07,110 Os na ddigwydd. 980 00:45:07,110 --> 00:45:08,600 >> Ac felly yn awr y rhestr yn cael ei datrys. 981 00:45:08,600 --> 00:45:12,630 Yn anffodus, yn rhedeg amser algorithm hwn hefyd yn n sgwâr. 982 00:45:12,630 --> 00:45:13,130 Pam? 983 00:45:13,130 --> 00:45:19,520 Oherwydd bod gennych rifau n, ac yn y achos gwaethaf rhaid i chi symud rhifau n 984 00:45:19,520 --> 00:45:23,637 Amseroedd n gan fod yn rhaid i chi gadw i fynd yn ôl i wirio ac o bosibl atgyweiria 985 00:45:23,637 --> 00:45:24,220 rhifau hyn. 986 00:45:24,220 --> 00:45:26,280 A gallwn wneud mwy dadansoddiad ffurfiol, hefyd. 987 00:45:26,280 --> 00:45:29,530 >> Felly, mae hyn i gyd i ddweud ein bod wedi cymryd tri dull gwahanol, un 988 00:45:29,530 --> 00:45:32,210 ohonynt ar unwaith sythweledol oddi ar y ystlumod o Ben 989 00:45:32,210 --> 00:45:35,170 i fy mewnosod a awgrymwyd math i hwn 990 00:45:35,170 --> 00:45:38,540 lle rydych yn fath o golli golwg ar y goedwig ar gyfer y coed yn y lle cyntaf. 991 00:45:38,540 --> 00:45:41,760 Ond yna os ydych yn cymryd cam yn ôl, voila, rydym wedi sefydlog y syniad didoli. 992 00:45:41,760 --> 00:45:43,824 Felly, mae hyn yn, mentraf ddweud, lefel is o bosibl 993 00:45:43,824 --> 00:45:45,740 na rhai o'r rhai eraill algorithmau, ond gadewch i ni 994 00:45:45,740 --> 00:45:48,550 weld os na allwn dychmygu hyn drwy gyfrwng hwn. 995 00:45:48,550 --> 00:45:51,450 >> Felly, mae hyn yn rhai 'n glws meddalwedd bod rhywun 996 00:45:51,450 --> 00:45:56,110 Ysgrifennodd gan ddefnyddio bariau lliwgar sy'n mynd i wneud y canlynol i ni. 997 00:45:56,110 --> 00:45:57,736 Mae pob un o fariau hyn cynrychioli nifer. 998 00:45:57,736 --> 00:46:00,026 Talach y bar, y mwyaf nifer, llai o faint y bar, 999 00:46:00,026 --> 00:46:00,990 y lleiaf yw'r rhif. 1000 00:46:00,990 --> 00:46:05,880 Felly, yn ddelfrydol rydym am pyramid 'n glws lle mae'n dechrau fach ac yn cael mawr, 1001 00:46:05,880 --> 00:46:08,330 a fyddai'n golygu y bariau hyn yn cael eu didoli. 1002 00:46:08,330 --> 00:46:11,200 Felly, yr wyf i'n mynd i fynd yn ei flaen ac yn ei ddewis, er enghraifft, algorithm Ben 1003 00:46:11,200 --> 00:46:13,990 math dethol first--. 1004 00:46:13,990 --> 00:46:16,220 >> A sylwi ar yr hyn mae'n ei wneud. 1005 00:46:16,220 --> 00:46:18,670 Mae'r ffordd y maent wedi eu dewis i ddelweddu algorithm hwn 1006 00:46:18,670 --> 00:46:22,090 yw bod, yn union fel yr oeddwn yn cerdded trwy fy rhestr, 1007 00:46:22,090 --> 00:46:24,710 y rhaglen hon yn cerdded drwy ei restr o rifau, 1008 00:46:24,710 --> 00:46:28,160 gan amlygu mewn pinc mhob Rhif ei fod yn edrych arno. 1009 00:46:28,160 --> 00:46:32,360 A beth fin digwydd ar hyn o bryd? 1010 00:46:32,360 --> 00:46:35,154 >> Y nifer lleiaf sy'n I neu Ben dod o hyd yn sydyn 1011 00:46:35,154 --> 00:46:36,820 yn cael ei symud i gychwyn y rhestr. 1012 00:46:36,820 --> 00:46:40,037 Ac rhybudd wnaethant troi allan y nifer a oedd yno, 1013 00:46:40,037 --> 00:46:41,120 ac mae hynny'n berffaith iawn. 1014 00:46:41,120 --> 00:46:42,600 Doeddwn i ddim yn mynd i mewn y lefel honno o fanylder. 1015 00:46:42,600 --> 00:46:44,308 Ond mae angen i roi y rhif hwnnw yn rhywle, 1016 00:46:44,308 --> 00:46:47,775 felly rydym yn unig yn symud i'r fan a'r lle agored a grëwyd. 1017 00:46:47,775 --> 00:46:49,900 Felly, yr wyf i'n mynd i gyflymu'r hwn i fyny, gan ei fod fel arall 1018 00:46:49,900 --> 00:46:51,871 yn dod yn ddiflas iawn yn gyflym. 1019 00:46:51,871 --> 00:46:55,800 1020 00:46:55,800 --> 00:46:58,600 Animeiddio speed-- dyna ni. 1021 00:46:58,600 --> 00:47:01,850 Felly nawr un egwyddor Yr oeddwn yn gwneud cais, ond rydych yn 1022 00:47:01,850 --> 00:47:06,540 Gall dechrau teimlo'n algorithm, os ydych yn fydd, neu yn ei weld ychydig yn fwy clir. 1023 00:47:06,540 --> 00:47:13,190 Ac mae algorithm hwn yn cael yr effaith o gan ddewis yr elfen lleiaf nesaf, 1024 00:47:13,190 --> 00:47:16,422 felly rydych yn mynd i ddechrau i weld yn ramp i fyny ar y chwith. 1025 00:47:16,422 --> 00:47:19,130 Ac ar bob iteriad, gan fy mod yn arfaethedig, nid yw'n gwneud llawer llai o waith. 1026 00:47:19,130 --> 00:47:21,921 nid oes rhaid iddo fynd yr holl ffordd ôl i ddiwedd chwith y rhestr, 1027 00:47:21,921 --> 00:47:23,900 oherwydd ei fod yn barod yn gwybod hynny yn cael eu didoli. 1028 00:47:23,900 --> 00:47:28,129 Felly mae'n fath o teimlo fel ei fod yn cyflymu, er bod pob cam yn 1029 00:47:28,129 --> 00:47:29,420 cymryd yr un faint o amser. 1030 00:47:29,420 --> 00:47:31,600 Mae ychydig yn llai camau sy'n weddill. 1031 00:47:31,600 --> 00:47:35,240 Ac yn awr y gallwch chi fath o teimlo y algorithm glanhau y diwedd, 1032 00:47:35,240 --> 00:47:37,040 ac yn wir yn awr mae'n cael ei sortio. 1033 00:47:37,040 --> 00:47:41,620 >> Felly fath rhoi i mewn yw wneud i gyd. 1034 00:47:41,620 --> 00:47:43,600 Mae angen i mi ail-randomize y rhesi. 1035 00:47:43,600 --> 00:47:45,940 Ac yn sylwi Fi jyst yn gallu cadw randomizing iddo, 1036 00:47:45,940 --> 00:47:50,630 a byddwn yn cael ddynesiad yr un dull, math mewnosod. 1037 00:47:50,630 --> 00:47:55,050 Gadewch i mi ei arafu i fan hyn. 1038 00:47:55,050 --> 00:47:56,915 Gadewch i ni ddechrau fod dros. 1039 00:47:56,915 --> 00:47:57,414 Stop. 1040 00:47:57,414 --> 00:48:00,662 1041 00:48:00,662 --> 00:48:02,410 >> Gadewch i sgip pedwar. 1042 00:48:02,410 --> 00:48:03,200 Dyna ni. 1043 00:48:03,200 --> 00:48:04,190 Randomize y maent yn arae. 1044 00:48:04,190 --> 00:48:05,555 A dyma ni go-- fath fewnosod. 1045 00:48:05,555 --> 00:48:10,260 1046 00:48:10,260 --> 00:48:12,800 Chwarae. 1047 00:48:12,800 --> 00:48:17,280 Sylwch ei fod yn ymdrin â phob elfen y mae'n dod ar eu traws ar unwaith, 1048 00:48:17,280 --> 00:48:20,282 ond os yw'n perthyn yn yr hysbysiad lle anghywir 1049 00:48:20,282 --> 00:48:21,740 yr holl waith sydd i ddigwydd. 1050 00:48:21,740 --> 00:48:24,700 Mae'n rhaid i ni gadw symud mwy a mwy o elfennau i wneud lle 1051 00:48:24,700 --> 00:48:27,340 ar gyfer yr un yr ydym am ei roi ar waith. 1052 00:48:27,340 --> 00:48:30,740 >> Felly, rydym yn canolbwyntio ar y pen chwith y rhestr yn unig. 1053 00:48:30,740 --> 00:48:34,460 Rhybudd nid ydym wedi hyd yn oed yn edrych at-- ni Nid wedi tynnu sylw mewn unrhyw beth pinc 1054 00:48:34,460 --> 00:48:35,610 i'r dde. 1055 00:48:35,610 --> 00:48:38,180 Rydym yn unig yn delio â y problemau wrth i ni fynd, 1056 00:48:38,180 --> 00:48:40,430 ond rydym yn creu llawer o gweithio i ni ein hunain o hyd. 1057 00:48:40,430 --> 00:48:44,410 Ac felly os ydym gyflymu'r hyn i fyny yn awr i fynd i'r cwblhau, 1058 00:48:44,410 --> 00:48:46,210 mae ganddo deimlad gwahanol iddo yn wir. 1059 00:48:46,210 --> 00:48:50,150 Mae'n canolbwyntio ar y pen chwith ond yn gwneud ychydig mwy o waith fel needed-- 1060 00:48:50,150 --> 00:48:53,230 math o bethau llyfnu drosodd, gosod pethau, 1061 00:48:53,230 --> 00:48:58,350 ond yn y pen draw yn ymdrin â pob elfen un ar y tro 1062 00:48:58,350 --> 00:49:07,740 tan i ni gyrraedd the-- dda, rydym yn i gyd yn gwybod sut mae hyn yn mynd i ben, 1063 00:49:07,740 --> 00:49:09,700 felly mae'n ychydig underwhelming efallai. 1064 00:49:09,700 --> 00:49:12,830 >> Ond mae'r rhestr yn y end-- spoiler-- yn mynd i gael eu datrys. 1065 00:49:12,830 --> 00:49:15,300 Felly gadewch i ni edrych ar un un diwethaf. 1066 00:49:15,300 --> 00:49:16,840 Ni allwn yn unig sgip yn awr. 1067 00:49:16,840 --> 00:49:18,000 Rydym yn bron yno. 1068 00:49:18,000 --> 00:49:19,980 Dwy i fynd, un i fynd. 1069 00:49:19,980 --> 00:49:22,680 A voila. 1070 00:49:22,680 --> 00:49:23,450 Ardderchog. 1071 00:49:23,450 --> 00:49:27,220 >> Felly nawr gadewch i ni wneud un yr un olaf, ail-randomizing gyda'r math swigen. 1072 00:49:27,220 --> 00:49:31,690 Ac yn sylwi yma, yn enwedig os byddaf yn arafu ei i lawr, mae hyn yn cadw yn disgyn drwy'r. 1073 00:49:31,690 --> 00:49:36,830 Ond yn sylwi 'i jyst yn gwneud pairwise math comparisons-- o atebion lleol. 1074 00:49:36,830 --> 00:49:39,050 Ond, cyn gynted ag y cawn i diwedd y rhestr mewn pinc, 1075 00:49:39,050 --> 00:49:40,690 beth sy'n mynd i gael i ddigwydd eto? 1076 00:49:40,690 --> 00:49:44,539 1077 00:49:44,539 --> 00:49:46,830 Yeah, mae'n mynd i gael i dechrau drosodd, oherwydd ei fod yn unig 1078 00:49:46,830 --> 00:49:49,870 camgymeriadau pairwise sefydlog. 1079 00:49:49,870 --> 00:49:53,120 Ac a allai fod wedi datgelu eraill eto. 1080 00:49:53,120 --> 00:49:58,950 Ac felly os ydych yn cyflymu'r hyn i fyny, wnewch chi helpu weld hynny, gymaint fel yr awgryma'r enw, 1081 00:49:58,950 --> 00:50:01,870 y lleiaf elements-- neu yn hytrach, y elements-- mwy o faint yn dechrau 1082 00:50:01,870 --> 00:50:03,740 ffrwtian i fyny i ben, os mynnwch. 1083 00:50:03,740 --> 00:50:07,380 A'r elfennau llai yn dechrau ffrwtian lawr i'r chwith. 1084 00:50:07,380 --> 00:50:10,780 Ac yn wir, dyna fath o yr effaith weledol yn ogystal. 1085 00:50:10,780 --> 00:50:17,150 Ac felly y bydd hyn yn y pen draw gorffen mewn ffordd debyg iawn, hefyd. 1086 00:50:17,150 --> 00:50:19,160 >> Nid oes rhaid i ni drigo ar yr un yma penodol. 1087 00:50:19,160 --> 00:50:21,010 Gadewch i mi agor hyn yn awr, hefyd. 1088 00:50:21,010 --> 00:50:24,040 Mae ychydig o algorithmau didoli eraill yn y byd, mae ychydig ohonynt 1089 00:50:24,040 --> 00:50:25,580 yn cael eu dal yma. 1090 00:50:25,580 --> 00:50:29,960 Ac yn enwedig ar gyfer dysgwyr nad ydynt yn o reidrwydd yn y golwg neu fathemategol, 1091 00:50:29,960 --> 00:50:31,930 fel y gwnaethom o'r blaen, y gallwn wneud hyn hefyd audially 1092 00:50:31,930 --> 00:50:34,210 os rydym yn eu cysylltu sain gyda hyn. 1093 00:50:34,210 --> 00:50:36,990 A dim ond am hwyl, dyma ychydig gwahanol algorithmau, 1094 00:50:36,990 --> 00:50:40,950 ac un ohonynt yn benodol eich bod yn mynd i hysbysiad cael ei alw'n "math uno." 1095 00:50:40,950 --> 00:50:43,250 >> Mae'n mewn gwirionedd yn y bôn gwell algorithm, 1096 00:50:43,250 --> 00:50:45,860 fel bod uno fath, un o y rhai yr ydych chi ar fin gweld, 1097 00:50:45,860 --> 00:50:49,170 Nid yw trefn n sgwâr. 1098 00:50:49,170 --> 00:50:57,280 Mae'n ar y drefn o n amseroedd log o n, sydd mewn gwirionedd yn llai ac felly 1099 00:50:57,280 --> 00:50:58,940 gyflymach na'r rhai tri arall. 1100 00:50:58,940 --> 00:51:00,670 Ac mae cwpl arall rhai gwirion a gawn ni weld. 1101 00:51:00,670 --> 00:51:01,933 >> Felly dyma ni gyda rhywfaint o sain. 1102 00:51:01,933 --> 00:51:06,620 1103 00:51:06,620 --> 00:51:10,490 Mae hwn yn fath fewnosod, felly unwaith eto 'i' jyst ymdrin â'r elfennau 1104 00:51:10,490 --> 00:51:13,420 wrth iddynt ddod. 1105 00:51:13,420 --> 00:51:17,180 Mae hwn yn fath swigod, felly mae'n ystyried parau ar y tro arnynt. 1106 00:51:17,180 --> 00:51:22,030 1107 00:51:22,030 --> 00:51:24,490 Ac eto, yr elfennau mwyaf yn byrlymu i fyny i ben. 1108 00:51:24,490 --> 00:51:38,098 1109 00:51:38,098 --> 00:51:41,710 >> Nesaf i fyny math dethol. 1110 00:51:41,710 --> 00:51:45,420 Mae hyn yn algorithm Ben, lle mae eto ei fod yn ddewis ailadroddol 1111 00:51:45,420 --> 00:51:46,843 yr elfen lleiaf nesaf. 1112 00:51:46,843 --> 00:51:49,801 1113 00:51:49,801 --> 00:51:53,900 Ac eto, yn awr gallwch mewn gwirionedd yn clywed bod mae'n cyflymu ond dim ond i'r graddau 1114 00:51:53,900 --> 00:51:58,230 gan ei fod yn gwneud llai a llai yn gweithio ar bob fersiwn. 1115 00:51:58,230 --> 00:52:04,170 Mae hyn yn y cyflymach un, uno yn didoli, sydd yn didoli clystyrau o rifau 1116 00:52:04,170 --> 00:52:05,971 gyda'i gilydd ac yna eu cyfuno. 1117 00:52:05,971 --> 00:52:07,720 Felly look-- y chwith hanner eisoes yn cael ei datrys. 1118 00:52:07,720 --> 00:52:14,165 >> Nawr mae'n didoli'r hanner cywir, a erbyn hyn mae'n mynd i cyfuno i mewn i un. 1119 00:52:14,165 --> 00:52:19,160 Mae hyn yn rhywbeth o'r enw "Gnome fath." 1120 00:52:19,160 --> 00:52:23,460 A gallwch fath o weld bod mae'n mynd yn ôl ac ymlaen, 1121 00:52:23,460 --> 00:52:27,950 gosod gwaith ychydig yma ac yno cyn iddo symud ymlaen i waith newydd. 1122 00:52:27,950 --> 00:52:32,900 1123 00:52:32,900 --> 00:52:33,692 A dyna ni. 1124 00:52:33,692 --> 00:52:36,400 Mae math arall, sef mewn gwirionedd dim ond at ddibenion academaidd, 1125 00:52:36,400 --> 00:52:40,980 o'r enw "didoli dwp," sy'n cymryd eich data, yn didoli ei hap, 1126 00:52:40,980 --> 00:52:43,350 ac yna gwirio os yw'n cael ei datrys. 1127 00:52:43,350 --> 00:52:47,880 Ac os nad yw, mae'n ail-didoli'r ei ar hap, gwirio os yw'n didoli, 1128 00:52:47,880 --> 00:52:49,440 ac os nad yw ailadrodd. 1129 00:52:49,440 --> 00:52:52,660 Ac mewn theori, probabilistically bydd hyn yn cwblhau, 1130 00:52:52,660 --> 00:52:54,140 ond ar ôl cryn dipyn o amser. 1131 00:52:54,140 --> 00:52:56,930 Dyw hi ddim yn y rhan fwyaf o effeithlon o algorithmau. 1132 00:52:56,930 --> 00:53:02,550 Felly unrhyw gwestiynau ar y rhai algorithmau neu unrhyw beth penodol 1133 00:53:02,550 --> 00:53:04,720 cysylltiedig yno, hefyd? 1134 00:53:04,720 --> 00:53:09,430 >> Wel, gadewch i bellach yn tynnu ar wahân beth i gyd llinellau hyn yn fy mod i wedi bod yn tynnu 1135 00:53:09,430 --> 00:53:15,090 a beth rwy'n tybio y cyfrifiadur yn gallu ei wneud o dan y cwfl. 1136 00:53:15,090 --> 00:53:18,650 Byddwn yn dadlau bod pob un o'r rhifau hyn Rwy'n cadw drawing-- mae angen iddynt gael 1137 00:53:18,650 --> 00:53:21,330 storio yn rhywle yn y cof. 1138 00:53:21,330 --> 00:53:24,130 Byddwn yn cael gwared ar y boi yn awr, hefyd. 1139 00:53:24,130 --> 00:53:30,110 >> Felly darn o gof mewn computer-- felly RAM DIMM yw 1140 00:53:30,110 --> 00:53:35,480 yr hyn yr ydym yn chwilio am ddoe, deuol cof inline module-- edrych fel hyn. 1141 00:53:35,480 --> 00:53:39,370 A phob un o'r sglodion du bychain hyn rhywfaint o nifer o bytes, fel arfer. 1142 00:53:39,370 --> 00:53:44,380 Ac yna y pinnau aur yn debyg y gwifrau sy'n cysylltu i'r cyfrifiadur, 1143 00:53:44,380 --> 00:53:47,521 a'r bwrdd silicon gwyrdd yn unig beth yn cadw popeth i gyd gyda'i gilydd. 1144 00:53:47,521 --> 00:53:48,770 Felly beth mae hyn yn ei olygu? 1145 00:53:48,770 --> 00:53:53,180 Os wyf yn fath o dynnu un llun hwn, gadewch i ni dybio ar gyfer symlrwydd 1146 00:53:53,180 --> 00:53:55,280 bod DIMM hwn, deuol modiwl cof inline, 1147 00:53:55,280 --> 00:54:00,530 yn un gigabyte o RAM, un gigabeit o cof, a dyna faint o gyfanswm beit? 1148 00:54:00,530 --> 00:54:02,100 Mae un gigabeit yw faint o bytes? 1149 00:54:02,100 --> 00:54:04,860 1150 00:54:04,860 --> 00:54:06,030 Mwy na hynny. 1151 00:54:06,030 --> 00:54:09,960 1,124 yn kilo, 1,000. 1152 00:54:09,960 --> 00:54:11,730 Mega yw miliwn. 1153 00:54:11,730 --> 00:54:14,570 Giga yn biliwn. 1154 00:54:14,570 --> 00:54:15,070 >> Ydw i'n dweud celwydd? 1155 00:54:15,070 --> 00:54:16,670 A allwn ni hyd yn oed yn darllen y label? 1156 00:54:16,670 --> 00:54:19,920 Mae hyn mewn gwirionedd 128 gigabeit, felly mae'n fwy. 1157 00:54:19,920 --> 00:54:22,130 Ond byddwn yn esgus hwn Dim ond un gigabeit. 1158 00:54:22,130 --> 00:54:25,640 Felly mae hynny'n golygu mae 'na biliwn bytes o gof ar gael i mi 1159 00:54:25,640 --> 00:54:29,770 neu 8 biliwn o ddarnau, ond rydym yn mynd i siarad yn nhermau bytes yn awr, 1160 00:54:29,770 --> 00:54:30,750 symud ymlaen. 1161 00:54:30,750 --> 00:54:36,330 >> Felly beth mae hynny'n ei olygu yw hyn yn un beit, mae hyn yn beit arall, 1162 00:54:36,330 --> 00:54:38,680 mae hyn yn beit arall, ac os ydym eisiau mewn gwirionedd 1163 00:54:38,680 --> 00:54:43,280 i fod yn benodol y byddai'n rhaid i ni tynnu ychydig o biliwn o sgwariau. 1164 00:54:43,280 --> 00:54:44,320 Ond beth mae hynny'n ei olygu? 1165 00:54:44,320 --> 00:54:46,420 Wel, gadewch i mi jyst chwyddo mewn ar y llun yma. 1166 00:54:46,420 --> 00:54:50,900 Os gen i rywbeth sy'n edrych fel hyn yn awr, dyna pedwar bytes. 1167 00:54:50,900 --> 00:54:53,710 >> Ac felly y gallwn i roi pedwar rhif yma. 1168 00:54:53,710 --> 00:54:54,990 Un, dau, tri, pedwar. 1169 00:54:54,990 --> 00:55:00,170 Neu gallwn i roi pedwar llythyr neu symbolau. 1170 00:55:00,170 --> 00:55:02,620 "Hey!" allai fynd i'r dde yno, gan fod pob un o'r llythyrau, 1171 00:55:02,620 --> 00:55:04,370 buom yn trafod yn gynharach, Gellid cael eu cynrychioli 1172 00:55:04,370 --> 00:55:06,650 gydag wyth darnau neu ASCII neu beit. 1173 00:55:06,650 --> 00:55:09,370 Felly, mewn geiriau eraill, gallwch rhoi 8 biliwn o bethau y tu mewn 1174 00:55:09,370 --> 00:55:11,137 o hyn un ffon o gof. 1175 00:55:11,137 --> 00:55:14,345 Nawr, beth mae'n ei olygu i roi pethau yn ôl i yn ôl i yn ôl yn y cof fel hyn? 1176 00:55:14,345 --> 00:55:17,330 Dyma beth yn rhaglennydd Byddai galw yn "array." 1177 00:55:17,330 --> 00:55:21,250 Mewn rhaglen gyfrifiadurol, nad ydych yn meddwl am y caledwedd sylfaenol, fel y cyfryw. 1178 00:55:21,250 --> 00:55:24,427 Rydych yn unig yn meddwl amdanoch eich hun fel un sydd mynediad at gyfanswm biliwn beit, 1179 00:55:24,427 --> 00:55:26,010 a allwch chi unrhyw beth yr hoffech ag ef. 1180 00:55:26,010 --> 00:55:27,880 Ond er cyfleustra yn gyffredinol mae'n ddefnyddiol 1181 00:55:27,880 --> 00:55:31,202 i gadw eich hawl cof nesaf at ei gilydd fel hyn. 1182 00:55:31,202 --> 00:55:33,660 Felly os wyf yn chwyddo i mewn ar this-- oherwydd yn sicr nid ydym yn mynd 1183 00:55:33,660 --> 00:55:39,310 i dynnu ychydig biliwn squares-- gadewch i ni dybio bod y bwrdd hwn yn cynrychioli 1184 00:55:39,310 --> 00:55:40,610 y ffon o gof yn awr. 1185 00:55:40,610 --> 00:55:43,800 A byddaf yn jyst yn tynnu cymaint â fy marciwr yn dod i ben i fyny gan roi i mi yma. 1186 00:55:43,800 --> 00:55:46,420 1187 00:55:46,420 --> 00:55:52,300 Felly, yn awr mae gennym ffon o gof ar y bwrdd 1188 00:55:52,300 --> 00:55:56,400 sy'n got un, dau, tri, pedwar, pump, chwech, un, dau, tri, pedwar, pump, chwech, 1189 00:55:56,400 --> 00:56:01,130 seven-- felly 42 bytes o cof ar gyfanswm y sgrin. 1190 00:56:01,130 --> 00:56:01,630 Diolch. 1191 00:56:01,630 --> 00:56:02,838 Do, gwnaeth fy rhifyddeg gywir. 1192 00:56:02,838 --> 00:56:05,120 Felly 42 bytes o gof yma. 1193 00:56:05,120 --> 00:56:06,660 Felly beth mae hyn yn ei olygu mewn gwirionedd? 1194 00:56:06,660 --> 00:56:09,830 Wel, yn rhaglennydd cyfrifiadurol byddai mewn gwirionedd yn gyffredinol 1195 00:56:09,830 --> 00:56:12,450 feddwl o gof hwn fel gyfeiriedig. 1196 00:56:12,450 --> 00:56:16,630 Mewn geiriau eraill, mae pob un o'r rhain lleoliadau mewn cof, mewn caledwedd, 1197 00:56:16,630 --> 00:56:18,030 Mae gan gyfeiriad unigryw. 1198 00:56:18,030 --> 00:56:22,020 >> nid yw mor gymhleth ag Un Brattle Square, Caergrawnt, Mass., 02138. 1199 00:56:22,020 --> 00:56:23,830 Yn lle hynny, dim ond rhif. 1200 00:56:23,830 --> 00:56:27,930 Mae hwn yn rhif beit sero, mae hyn yn un, mae hyn yn dau, mae hyn yn dri, 1201 00:56:27,930 --> 00:56:30,327 ac mae hyn yn 41. 1202 00:56:30,327 --> 00:56:30,910 Arhoswch funud. 1203 00:56:30,910 --> 00:56:32,510 Roeddwn i'n meddwl y dywedais 42 funud yn ôl. 1204 00:56:32,510 --> 00:56:35,050 1205 00:56:35,050 --> 00:56:37,772 Dechreuais cyfrif ar sero, fel eu bod mewn gwirionedd yn gywir. 1206 00:56:37,772 --> 00:56:40,980 Nawr, nid oes rhaid i ni mewn gwirionedd yn tynnu fel grid, ac os ydych yn tynnu fel grid 1207 00:56:40,980 --> 00:56:43,520 Yr wyf yn meddwl pethau mewn gwirionedd yn cael ychydig yn gamarweiniol. 1208 00:56:43,520 --> 00:56:46,650 Beth fyddai yn rhaglennydd, yn ei feddwl ei hun, 1209 00:56:46,650 --> 00:56:50,310 Yn gyffredinol, yn meddwl am hyn cof yn union fel tâp, 1210 00:56:50,310 --> 00:56:53,340 fel darn o dâp masgio mai dim ond yn mynd ymlaen ac ymlaen am byth 1211 00:56:53,340 --> 00:56:54,980 neu hyd nes y byddwch yn rhedeg allan o gof. 1212 00:56:54,980 --> 00:56:59,200 Felly ffordd fwy cyffredin i dynnu a dim ond meddwl am y cof 1213 00:56:59,200 --> 00:57:03,710 fyddai bod hyn yn beit sero, un, dau, tri, ac yna dot, dot, dot. 1214 00:57:03,710 --> 00:57:07,650 Ac mae gennych cyfanswm 42 bytes o'r fath, hyd yn oed er corfforol y gallai mewn gwirionedd 1215 00:57:07,650 --> 00:57:09,480 fod yn rhywbeth mwy fel hyn. 1216 00:57:09,480 --> 00:57:12,850 >> Felly, os ydych yn awr yn meddwl am eich cof gan fod hyn, yn union fel tâp, 1217 00:57:12,850 --> 00:57:17,640 mae hyn yn beth yn rhaglennydd eto Byddai galw amrywiaeth o gof. 1218 00:57:17,640 --> 00:57:20,660 A phan ydych am i storio mewn gwirionedd rhywbeth mewn cof cyfrifiadur, 1219 00:57:20,660 --> 00:57:23,290 rydych yn gyffredinol yn gwneud pethau siop cefn wrth cefn wrth gefn-wrth-gefn. 1220 00:57:23,290 --> 00:57:25,010 Felly rydym wedi bod yn siarad am rifau. 1221 00:57:25,010 --> 00:57:30,880 A phan oeddwn i eisiau i ddatrys problemau fel pedwar, un, tri, dau, 1222 00:57:30,880 --> 00:57:33,820 hyd yn oed er fy mod yn jyst tynnu dim ond y rhifau pedwar, un, tri, 1223 00:57:33,820 --> 00:57:39,490 dau ar y bwrdd, a fyddai y cyfrifiadur mewn gwirionedd yn cael setup hwn mewn cof. 1224 00:57:39,490 --> 00:57:43,347 >> A beth fyddai'r nesaf i'r dau yn gof y cyfrifiadur? 1225 00:57:43,347 --> 00:57:44,680 Wel, does dim ateb i hynny. 1226 00:57:44,680 --> 00:57:45,770 Dydyn ni ddim yn gwybod. 1227 00:57:45,770 --> 00:57:48,200 Ac cyhyd ag y bo'r Nid oes angen cyfrifiadur iddo, 1228 00:57:48,200 --> 00:57:51,440 nid oes rhaid iddo i ofalu beth sydd nesaf at y niferoedd y mae'n ei wneud gofal am. 1229 00:57:51,440 --> 00:57:55,130 A phan ddywedais yn gynharach fod cyfrifiadur dim ond edrych ar un cyfeiriad ar y tro, 1230 00:57:55,130 --> 00:57:56,170 mae hyn yn fath o pam. 1231 00:57:56,170 --> 00:57:59,490 >> Nid annhebyg cofnod chwaraewr a phen darllen 1232 00:57:59,490 --> 00:58:03,030 dim ond yn gallu edrych ar rai rhigol mewn cofnod hen-ysgol corfforol 1233 00:58:03,030 --> 00:58:06,500 ar y tro, yn yr un modd gall cyfrifiadur diolch 1234 00:58:06,500 --> 00:58:09,810 at ei CPU a'i set cyfarwyddyd Intel, 1235 00:58:09,810 --> 00:58:12,480 ymhlith y mae eu cyfarwyddyd yn cael ei ddarllen o gof 1236 00:58:12,480 --> 00:58:15,590 neu arbed i memory-- yn Gall cyfrifiadur ond edrych 1237 00:58:15,590 --> 00:58:19,210 mewn un lleoliad mewn adeg-- weithiau gyfuniad ohonynt, 1238 00:58:19,210 --> 00:58:21,770 ond mewn gwirionedd dim ond un lleoliad ar y tro. 1239 00:58:21,770 --> 00:58:24,770 Felly, pan oeddem yn gwneud algorithmau amrywiol hyn, 1240 00:58:24,770 --> 00:58:28,110 nid Im 'jyst yn ysgrifennu mewn vacuum-- pedwar, un, tri, dau. 1241 00:58:28,110 --> 00:58:30,849 niferoedd hynny mewn gwirionedd yn perthyn rhywle corfforol mewn cof. 1242 00:58:30,849 --> 00:58:32,890 Felly mae yna ychydig bach transistorau neu ryw fath 1243 00:58:32,890 --> 00:58:35,840 o electroneg o dan y cwfl storio gwerthoedd hyn. 1244 00:58:35,840 --> 00:58:40,460 >> Ac i gyd, faint o ddarnau yn cael eu cymryd rhan ar hyn o bryd, dim ond i fod yn glir? 1245 00:58:40,460 --> 00:58:45,580 Felly dyma pedwar bytes, neu nawr mae'n gyfanswm 32 ddarnau. 1246 00:58:45,580 --> 00:58:49,280 Felly, mae mewn gwirionedd yn 32 o zeros a rhai cyfansoddi rhain pedwar peth. 1247 00:58:49,280 --> 00:58:52,070 Mae hyd yn oed yn fwy dros yma, ond eto nid ydym yn poeni am hynny. 1248 00:58:52,070 --> 00:58:55,120 >> Felly nawr gadewch i ofyn un arall cwestiwn gan ddefnyddio cof, 1249 00:58:55,120 --> 00:58:57,519 oherwydd hynny ar y diwedd y dydd yn amrywiant. 1250 00:58:57,519 --> 00:59:00,310 Ni waeth beth y gallem ei wneud gyda y cyfrifiadur, ar ddiwedd y dydd 1251 00:59:00,310 --> 00:59:02,560 y caledwedd yn dal i fod y un peth o dan y cwfl. 1252 00:59:02,560 --> 00:59:04,670 Sut fyddwn i'n storio gair i mewn yma? 1253 00:59:04,670 --> 00:59:09,710 Wel, gair mewn cyfrifiadur fel "Hey!" Byddai yn cael ei storio yn union fel hyn. 1254 00:59:09,710 --> 00:59:12,300 Ac os ydych eisiau mwy o amser gair, yn syml y gallwch 1255 00:59:12,300 --> 00:59:19,120 trosysgrifo hynny a dweud rhywbeth fel "helo" a storfa hynny yma. 1256 00:59:19,120 --> 00:59:23,930 >> Ac felly yma, hefyd, contiguousness hwn mewn gwirionedd yn fantais, 1257 00:59:23,930 --> 00:59:26,530 oherwydd y gall cyfrifiadur yn unig darllen o'r dde i'r chwith. 1258 00:59:26,530 --> 00:59:28,680 Ond dyma gwestiwn. 1259 00:59:28,680 --> 00:59:33,480 Yng nghyd-destun y gair hwn, h-e-l-l-o, pwynt ebychnod, 1260 00:59:33,480 --> 00:59:38,740 sut y gallai'r cyfrifiadur yn gwybod ble mae'r gair yn dechrau a ble mae'r gair yn dod i ben? 1261 00:59:38,740 --> 00:59:41,690 1262 00:59:41,690 --> 00:59:43,800 Yng nghyd-destun o rifau, sut mae'r cyfrifiadur 1263 00:59:43,800 --> 00:59:48,396 gwybod pa mor hir y dilyniant o rhifau yw neu pan fydd yn dechrau? 1264 00:59:48,396 --> 00:59:50,270 Wel, mae'n troi out-- ac ni fyddwn yn mynd yn ormod 1265 00:59:50,270 --> 00:59:54,970 i mewn i lefel hon o detail-- cyfrifiaduron symud pethau o gwmpas yn y cof 1266 00:59:54,970 --> 00:59:57,800 llythrennol drwy gyfrwng cyfeiriadau hyn. 1267 00:59:57,800 --> 01:00:02,080 Felly, mewn cyfrifiadur, os ydych chi'n cod ysgrifennu i storio pethau 1268 01:00:02,080 --> 01:00:05,800 fel geiriau, yr hyn rydych yn 'n sylweddol ei wneud yw teipio 1269 01:00:05,800 --> 01:00:11,320 mynegiadau sy'n cofio ble yn gof y cyfrifiadur geiriau hyn yn cael eu. 1270 01:00:11,320 --> 01:00:14,370 Felly, gadewch i mi wneud iawn, Enghraifft syml iawn. 1271 01:00:14,370 --> 01:00:18,260 >> Rydw i'n mynd i fynd yn ei flaen a agor rhaglen testun syml, 1272 01:00:18,260 --> 01:00:20,330 a dw i'n mynd i greu ffeil o'r enw hello.c. 1273 01:00:20,330 --> 01:00:22,849 Mae'r rhan fwyaf o'r wybodaeth hon i ni ni fydd yn mynd i mewn yn fanwl iawn, 1274 01:00:22,849 --> 01:00:25,140 ond dwi'n mynd i ysgrifennu rhaglen yn yr un iaith, 1275 01:00:25,140 --> 01:00:31,140 C. Mae hyn yn llawer mwy bygythiol, byddwn yn dadlau, na Scratch, 1276 01:00:31,140 --> 01:00:32,490 ond mae'n debyg iawn o ran ysbryd. 1277 01:00:32,490 --> 01:00:34,364 Yn wir, mae'r rhain cyrliog braces-- gallwch math o 1278 01:00:34,364 --> 01:00:37,820 meddwl am yr hyn yr wyf yn unig oedd gan fod hyn. 1279 01:00:37,820 --> 01:00:39,240 >> Gadewch i ni wneud hyn, mewn gwirionedd. 1280 01:00:39,240 --> 01:00:45,100 Pan glicio baner werdd, wneud y canlynol. 1281 01:00:45,100 --> 01:00:50,210 Rwyf eisiau argraffu allan "helo." 1282 01:00:50,210 --> 01:00:51,500 Felly, mae hyn yn awr yn pseudocode. 1283 01:00:51,500 --> 01:00:53,000 Im 'yn fath o cymylu'r llinellau. 1284 01:00:53,000 --> 01:00:56,750 Yn C, yr iaith hon rwy'n siarad am, mae hyn yn print llinell helo 1285 01:00:56,750 --> 01:01:01,940 mewn gwirionedd yn dod yn "printf" gyda rhai cromfachau a hanner colon. 1286 01:01:01,940 --> 01:01:03,480 >> Ond mae'n yr un syniad union. 1287 01:01:03,480 --> 01:01:06,730 Ac mae hyn yn iawn hawdd ei ddefnyddio "Pan baner werdd glicio" yn dod 1288 01:01:06,730 --> 01:01:10,182 y llawer mwy dirgel "prif ddi-rym int." 1289 01:01:10,182 --> 01:01:12,890 Ac mae hyn yn wir nid oes gan mapio, felly Im 'jyst yn mynd i anwybyddu hynny. 1290 01:01:12,890 --> 01:01:17,210 Ond mae'r braces cyrliog yn debyg y darnau pos crwm fel hyn. 1291 01:01:17,210 --> 01:01:18,700 >> Felly gallwch math o ddyfalu. 1292 01:01:18,700 --> 01:01:22,357 Hyd yn oed os nad ydych erioed wedi ei raglennu o'r blaen, beth mae rhaglen hon yn ôl pob tebyg yn ei wneud? 1293 01:01:22,357 --> 01:01:25,560 1294 01:01:25,560 --> 01:01:28,000 Mwy na thebyg printiau helo gyda phwynt ebychnod. 1295 01:01:28,000 --> 01:01:29,150 >> Felly gadewch i ni geisio hynny. 1296 01:01:29,150 --> 01:01:30,800 Rydw i'n mynd i achub. 1297 01:01:30,800 --> 01:01:34,000 Ac mae hyn yn, unwaith eto, mae iawn hen amgylchedd yr ysgol. 1298 01:01:34,000 --> 01:01:35,420 Ni allaf glicio, ni allaf lusgo. 1299 01:01:35,420 --> 01:01:36,910 Mae'n rhaid i mi deipio gorchmynion. 1300 01:01:36,910 --> 01:01:41,320 Felly, yr wyf am redeg fy rhaglen, felly efallai y byddwn yn gwneud hyn, fel hello.c. 1301 01:01:41,320 --> 01:01:42,292 Dyna y ffeil Rwy'n rhedeg. 1302 01:01:42,292 --> 01:01:43,500 Ond arhoswch, rwy'n ar goll cam. 1303 01:01:43,500 --> 01:01:46,470 Yr hyn a wnaethom ei ddweud yn angenrheidiol camu ar gyfer iaith fel C? 1304 01:01:46,470 --> 01:01:49,470 Rwyf newydd ffynhonnell ysgrifenedig cod, ond yr hyn sydd ei angen arnaf? 1305 01:01:49,470 --> 01:01:50,670 Yeah, mae angen casglwr wyf. 1306 01:01:50,670 --> 01:01:57,670 Felly, ar fy Mac yma, mae gen i rhaglen o'r enw GCC, GNU C casglwr, 1307 01:01:57,670 --> 01:02:03,990 sy'n caniatáu i mi wneud this-- dro fy cod ffynhonnell i mewn, byddwn yn ei alw, 1308 01:02:03,990 --> 01:02:04,930 cod peiriant. 1309 01:02:04,930 --> 01:02:10,180 >> A gallaf weld hynny, eto, fel a ganlyn, mae'r rhain 1310 01:02:10,180 --> 01:02:14,090 yw'r zeros a rhai Fi jyst a grëwyd gan fy cod ffynhonnell, 1311 01:02:14,090 --> 01:02:15,730 pob un o'r sero a rhai. 1312 01:02:15,730 --> 01:02:17,770 Ac os wyf eisiau rhedeg fy program-- mae'n digwydd 1313 01:02:17,770 --> 01:02:23,010 i gael ei alw a.out am reasons-- hanesyddol "helo." 1314 01:02:23,010 --> 01:02:24,070 Gallaf redeg eto. 1315 01:02:24,070 --> 01:02:25,690 Helo, helo, helo. 1316 01:02:25,690 --> 01:02:27,430 Ac mae'n ymddangos i fod yn gweithio. 1317 01:02:27,430 --> 01:02:31,000 >> Ond mae hynny'n golygu rhywle yn fy gof cyfrifiadur yw'r geiriau 1318 01:02:31,000 --> 01:02:35,279 h-e-l-l-o, pwynt ebychnod. 1319 01:02:35,279 --> 01:02:38,070 Ac mae'n troi allan, yn union fel o'r neilltu, beth fyddai cyfrifiadur nodweddiadol 1320 01:02:38,070 --> 01:02:40,550 gwneud fel ei fod yn gwybod lle pethau'n dechrau ac end-- ei fod yn 1321 01:02:40,550 --> 01:02:42,460 mynd i roi symbol arbennig yma. 1322 01:02:42,460 --> 01:02:46,064 Ac y confensiwn yw rhoi'r rhif sero ar ddiwedd gair 1323 01:02:46,064 --> 01:02:48,230 fel eich bod yn gwybod lle y mae'n mewn gwirionedd yn dod i ben, er mwyn i chi 1324 01:02:48,230 --> 01:02:52,750 peidiwch â chadw argraffu mwy a mwy cymeriadau na chi mewn gwirionedd yn bwriadu. 1325 01:02:52,750 --> 01:02:55,400 >> Ond mae'r tecawê yma, hyd yn oed er bod hyn yn weddol dirgel, 1326 01:02:55,400 --> 01:02:58,140 yw ei fod yn y pen draw gymharol syml. 1327 01:02:58,140 --> 01:03:04,550 A roddwyd i chi fath o dâp, yn wag lle y gallwch ysgrifennu llythyrau. 1328 01:03:04,550 --> 01:03:07,150 yn syml rhaid i chi gael symbol arbennig, fel fympwyol 1329 01:03:07,150 --> 01:03:10,316 y rhif sero, i roi ar ddiwedd y eich geiriau fel bod y cyfrifiadur yn gwybod, 1330 01:03:10,316 --> 01:03:13,410 oh, ddylwn i roi'r gorau argraffu ar ôl Rwy'n gweld y pwynt ebychnod. 1331 01:03:13,410 --> 01:03:16,090 Oherwydd bod y peth nesaf yno yn werth ASCII o sero, 1332 01:03:16,090 --> 01:03:19,125 neu gymeriad null fel byddai rhywun yn ei alw. 1333 01:03:19,125 --> 01:03:21,500 Ond mae math o broblem yma, a gadewch i ni fynd yn ôl 1334 01:03:21,500 --> 01:03:23,320 i rifau am eiliad. 1335 01:03:23,320 --> 01:03:28,720 Tybiwch fy mod yn ei wneud, mewn gwirionedd, cael amrywiaeth o rifau, 1336 01:03:28,720 --> 01:03:30,730 ac mae'n debyg bod y rhaglen Rwy'n ysgrifennu yn 1337 01:03:30,730 --> 01:03:34,680 fel llyfr gradd ar gyfer athro ac ystafell ddosbarth athrawon. 1338 01:03:34,680 --> 01:03:38,720 Ac mae'r rhaglen hon yn caniatáu iddo ef neu hi teipio mewn sgorau eu myfyrwyr 1339 01:03:38,720 --> 01:03:39,960 ar gwisiau. 1340 01:03:39,960 --> 01:03:43,750 Ac mae'n debyg bod y myfyriwr yn cael 100 ar eu cwis cyntaf, efallai 1341 01:03:43,750 --> 01:03:49,920 fel 80 ar yr un nesaf, yna 75, yna 90 ar y pedwerydd cwis. 1342 01:03:49,920 --> 01:03:54,150 >> Felly, yn y fan hon yn y stori, yr amrywiaeth o faint pedwar. 1343 01:03:54,150 --> 01:03:58,470 Mae gwbl mwy o gof yn y cyfrifiadur, ond yr amrywiaeth, fel petai, 1344 01:03:58,470 --> 01:04:00,350 yw o faint pedwar. 1345 01:04:00,350 --> 01:04:06,060 Tybiwch yn awr bod yr athro eisiau i neilltuo pumed gwis i'r dosbarth. 1346 01:04:06,060 --> 01:04:08,510 Wel, un o'r pethau mae'n neu hi yn mynd i gael i wneud 1347 01:04:08,510 --> 01:04:10,650 yn awr yn storio gwerth ychwanegol yma. 1348 01:04:10,650 --> 01:04:15,490 Ond os bydd y arae gan yr athro a grëwyd yn y rhaglen hon o faint ar gyfer, 1349 01:04:15,490 --> 01:04:22,440 un o'r broblem gydag amrywiaeth yw bod nid ydych yn gallu cadw ychwanegu at cof. 1350 01:04:22,440 --> 01:04:26,470 Oherwydd beth os rhan arall o'r rhaglen mae gan y gair "hey" iawn yno? 1351 01:04:26,470 --> 01:04:29,650 >> Mewn geiriau eraill, gall fy nghof fod a ddefnyddir ar gyfer unrhyw beth mewn rhaglen. 1352 01:04:29,650 --> 01:04:33,250 Ac os o flaen llaw i mi deipio i mewn, hey, Rwyf am fewnbwn pedwar sgoriau cwis, 1353 01:04:33,250 --> 01:04:34,784 Efallai y byddant yn mynd yma ac yma. 1354 01:04:34,784 --> 01:04:37,700 Ac os byddwch yn sydyn yn newid eich meddwl yn ddiweddarach a dweud yr wyf am un rhan o bump cwis 1355 01:04:37,700 --> 01:04:40,872 sgôr, ni allwch unig roi ble bynnag y mynnwch, 1356 01:04:40,872 --> 01:04:42,580 oherwydd yr hyn os yw hyn cof yn cael ei ddefnyddio 1357 01:04:42,580 --> 01:04:45,990 am rywbeth else-- ryw raglen arall neu ryw nodwedd arall o'r rhaglen 1358 01:04:45,990 --> 01:04:46,910 eich bod yn rhedeg? 1359 01:04:46,910 --> 01:04:50,650 Felly, rhaid i chi feddwl o flaen llaw sut yr ydych am i storio eich data, 1360 01:04:50,650 --> 01:04:54,480 oherwydd erbyn hyn eich bod wedi paentio eich hun i mewn i gornel digidol. 1361 01:04:54,480 --> 01:04:57,280 >> Felly athro gallai yn lle hynny dweud wrth ysgrifennu rhaglen 1362 01:04:57,280 --> 01:04:59,360 i storio ei graddau, eich bod yn gwybod beth? 1363 01:04:59,360 --> 01:05:04,180 Yr wyf yn mynd i wneud cais, wrth ysgrifennu fy rhaglen, 1364 01:05:04,180 --> 01:05:12,070 yr wyf am sero, un, dau, tri, cyfanswm pedwar, pump, chwech, wyth graddau. 1365 01:05:12,070 --> 01:05:15,320 Felly un, dau, tri, pedwar, pump, chwech, saith, wyth. 1366 01:05:15,320 --> 01:05:18,612 Gall yr athro ychydig dros-ddyrannu cof wrth ysgrifennu ei raglen 1367 01:05:18,612 --> 01:05:19,570 ac yn dweud, eich bod yn gwybod beth? 1368 01:05:19,570 --> 01:05:22,236 Nid wyf erioed i'n mynd i aseinio mwy nag wyth cwisiau mewn semester. 1369 01:05:22,236 --> 01:05:23,130 Mae hynny'n unig crazy. 1370 01:05:23,130 --> 01:05:24,470 Wna i byth yn dyrannu hynny. 1371 01:05:24,470 --> 01:05:28,270 Fel bod y ffordd hon ganddo ef neu hi yr hyblygrwydd i sgorau storio myfyrwyr, 1372 01:05:28,270 --> 01:05:33,010 fel 75, 90, ac efallai un ychwanegol pan y myfyriwr got credyd ychwanegol, 105. 1373 01:05:33,010 --> 01:05:36,130 >> Ond os yw'r athro byth defnyddio'r rhain tri lle, 1374 01:05:36,130 --> 01:05:38,860 mae 'na cludfwyd reddfol yma. 1375 01:05:38,860 --> 01:05:41,410 Mae ef neu hi yn unig gwastraffu gofod. 1376 01:05:41,410 --> 01:05:44,790 Felly, mewn geiriau eraill, mae hyn yn tradeoff cyffredin mewn rhaglennu 1377 01:05:44,790 --> 01:05:48,241 lle y gallwch naill ai ddyrannu yn union gymaint o gof ag y dymunwch, 1378 01:05:48,241 --> 01:05:51,490 y upside o'r rhain yw eich bod yn super efficient-- nad ydych yn bod yn wastraffus 1379 01:05:51,490 --> 01:05:54,640 yn all-- ond mae'r anfantais ohonynt beth os byddwch yn newid eich meddwl pan 1380 01:05:54,640 --> 01:05:58,780 gan ddefnyddio'r rhaglen yr ydych am i storio mwy o ddata nag yr oeddech fwriadwyd yn wreiddiol. 1381 01:05:58,780 --> 01:06:03,030 >> Felly efallai yr ateb yw, yna, ysgrifennu eich rhaglenni yn y fath fodd 1382 01:06:03,030 --> 01:06:05,605 eu bod yn defnyddio mwy o gof nag y maent ei angen mewn gwirionedd. 1383 01:06:05,605 --> 01:06:07,730 Mae hyn yn ffordd nad ydych yn mynd i redeg i mewn i broblem honno, 1384 01:06:07,730 --> 01:06:09,730 ond eich bod yn wastraffus. 1385 01:06:09,730 --> 01:06:12,960 Ac mae'r cof yn fwy eich rhaglen yn defnyddio, fel y trafodwyd ddoe, mae'r llai 1386 01:06:12,960 --> 01:06:15,410 cof sydd ar gael ar gyfer rhaglenni eraill, 1387 01:06:15,410 --> 01:06:18,790 y cynharaf y gallai eich cyfrifiadur yn araf i lawr oherwydd y cof rhithwir. 1388 01:06:18,790 --> 01:06:22,670 Ac felly efallai yr ateb delfrydol fyddai beth? 1389 01:06:22,670 --> 01:06:24,610 >> Dan-dyrannu yn ymddangos yn ddrwg. 1390 01:06:24,610 --> 01:06:27,030 Dros-dyrannu yn ymddangos yn ddrwg. 1391 01:06:27,030 --> 01:06:31,120 Felly yr hyn a allai fod yn ateb gwell? 1392 01:06:31,120 --> 01:06:32,390 Ailddyrannu. 1393 01:06:32,390 --> 01:06:33,590 Bod yn fwy deinamig. 1394 01:06:33,590 --> 01:06:37,520 Peidiwch â gorfodi eich hun i ddewis priori, ar y dechrau, yr hyn yr ydych ei eisiau. 1395 01:06:37,520 --> 01:06:41,370 Ac yn sicr nid ydynt yn gor-ddyrannu, rhag i chi fod yn wastraffus. 1396 01:06:41,370 --> 01:06:45,770 >> Ac felly i gyrraedd y nod, rydym Mae angen i daflu strwythur data hwn, 1397 01:06:45,770 --> 01:06:48,100 fel petai, i ffwrdd. 1398 01:06:48,100 --> 01:06:51,080 Ac felly beth yn rhaglennydd Bydd fel arfer yn defnyddio 1399 01:06:51,080 --> 01:06:55,940 nid yw rhywbeth o'r enw arae ond rhestr cysylltiedig. 1400 01:06:55,940 --> 01:07:00,860 Mewn geiriau eraill, mae ef neu hi fydd ddechrau meddwl am eu cof 1401 01:07:00,860 --> 01:07:05,280 fel math bod o siâp y maent Gall dynnu yn y ffordd ganlynol. 1402 01:07:05,280 --> 01:07:08,520 Os ydw i eisiau i storio un rhif yn yn program-- felly mae'n mis Medi, 1403 01:07:08,520 --> 01:07:12,600 Rydw i wedi rhoi cwis fy myfyrwyr; Rwyf am i storio cwis cyntaf y myfyrwyr, 1404 01:07:12,600 --> 01:07:16,220 ac maent yn cael 100 ar iddo-- wyf wyf yn mynd i ofyn i fy nghyfrifiadur, 1405 01:07:16,220 --> 01:07:19,540 drwy gyfrwng y rhaglen rwyf wedi ysgrifenedig, ar gyfer un darn o gof. 1406 01:07:19,540 --> 01:07:22,570 Ac yr wyf i'n mynd i storio'r rhif 100 ynddo, a dyna ni. 1407 01:07:22,570 --> 01:07:24,820 >> Yna ychydig wythnosau yn ddiweddarach pan fyddaf yn cael fy ail cwis, 1408 01:07:24,820 --> 01:07:27,890 ac mae'n amser i deipio yn hynny o 90%, yr wyf yn mynd 1409 01:07:27,890 --> 01:07:32,129 i ofyn i'r cyfrifiadur, hey, cyfrifiaduron, alla i gael darn arall o gof? 1410 01:07:32,129 --> 01:07:34,170 Mae'n mynd i roi hyn i mi darn gwag o gof. 1411 01:07:34,170 --> 01:07:39,370 Rydw i'n mynd i roi yn y nifer 90, ond yn fy rhaglen rywsut neu other-- 1412 01:07:39,370 --> 01:07:42,100 ac ni fyddwn yn poeni am y cystrawen ar gyfer this-- angen arnaf 1413 01:07:42,100 --> 01:07:44,430 i rhywsut cadwyn pethau hyn gyda'i gilydd. 1414 01:07:44,430 --> 01:07:47,430 A byddaf yn eu cadwyn ynghyd â hyn sy'n edrych fel saeth yma. 1415 01:07:47,430 --> 01:07:50,050 >> Y trydydd cwis sy'n dod i fyny, Rydw i'n mynd i ddweud, hey, cyfrifiaduron, 1416 01:07:50,050 --> 01:07:51,680 rhoi darn arall o gof i mi. 1417 01:07:51,680 --> 01:07:54,660 Ac yr wyf i'n mynd i roi i lawr beth bynnag oedd hi, fel 75, 1418 01:07:54,660 --> 01:07:56,920 ac yr wyf yn rhaid i gadwyn hon gyda'i gilydd yn awr rywsut. 1419 01:07:56,920 --> 01:08:00,290 cwis Pedwerydd dod ynghyd, ac efallai dyna tuag at ddiwedd y semester. 1420 01:08:00,290 --> 01:08:03,140 Ac erbyn hynny fy rhaglen allai fod yn defnyddio cof 1421 01:08:03,140 --> 01:08:05,540 dros y lle, i gyd dros gorfforol. 1422 01:08:05,540 --> 01:08:08,170 Ac felly yn unig ar gyfer cychwyn, rwy'n mynd i dynnu hyn allan 1423 01:08:08,170 --> 01:08:11,260 quiz-- byddaf yn anghofio beth oedd; Yr wyf yn meddwl efallai o 80 neu something-- 1424 01:08:11,260 --> 01:08:12,500 ffordd dros yma. 1425 01:08:12,500 --> 01:08:15,920 >> Ond mae hynny'n iawn, oherwydd ddarluniadol Rydw i'n mynd i dynnu llinell hon. 1426 01:08:15,920 --> 01:08:19,063 Mewn geiriau eraill, mewn gwirionedd, mewn caledwedd eich cyfrifiadur, 1427 01:08:19,063 --> 01:08:20,979 gallai'r sgôr cyntaf yn y pen draw fan hyn am ei fod yn 1428 01:08:20,979 --> 01:08:22,529 i'r dde ar ddechrau'r semester. 1429 01:08:22,529 --> 01:08:25,810 Gallai'r un nesaf yn y pen draw fan hyn oherwydd ychydig o amser wedi mynd heibio 1430 01:08:25,810 --> 01:08:27,210 ac mae'r rhaglen yn cadw rhedeg. 1431 01:08:27,210 --> 01:08:30,060 Y sgôr nesaf, a oedd yn 75, a allai fod dros yma. 1432 01:08:30,060 --> 01:08:33,420 Ac efallai y sgôr olaf yn 80, sydd dros yma. 1433 01:08:33,420 --> 01:08:38,729 >> Felly, mewn gwirionedd, yn gorfforol, mae hyn allai fod pa cof eich cyfrifiadur yn edrych fel. 1434 01:08:38,729 --> 01:08:41,569 Ond nid yw hyn yn meddwl defnyddiol patrwm ar gyfer rhaglennydd cyfrifiadur. 1435 01:08:41,569 --> 01:08:44,649 Pam ddylech chi ofalu ble mae'r Heck eich data yn dod i ben i fyny? 1436 01:08:44,649 --> 01:08:46,200 Wyt ti am i storio data. 1437 01:08:46,200 --> 01:08:49,390 >> Mae hyn yn fath o fel ein trafodaeth cynharach o dynnu ciwb. 1438 01:08:49,390 --> 01:08:52,200 Pam ydych chi'n poeni beth ongl yw y ciwb 1439 01:08:52,200 --> 01:08:53,740 a sut mae'n rhaid i chi droi i dynnu ef? 1440 01:08:53,740 --> 01:08:54,950 'Ch jyst eisiau ciwb. 1441 01:08:54,950 --> 01:08:57,359 Yn yr un modd yma, rydych yn jyst eisiau llyfr gradd. 1442 01:08:57,359 --> 01:08:59,559 Rydych yn unig am feddwl am hyn fel rhestr o rifau. 1443 01:08:59,559 --> 01:09:01,350 Pwy sy'n poeni sut mae'n rhoi ar waith mewn caledwedd? 1444 01:09:01,350 --> 01:09:05,180 >> Felly mae'r tyniad yn awr yn y darlun hwn yma. 1445 01:09:05,180 --> 01:09:07,580 Mae hyn yn rhestr cysylltiedig, fel y Byddai rhaglennydd ei alw, 1446 01:09:07,580 --> 01:09:10,640 i'r graddau y bydd gennych rhestr, yn amlwg o rifau. 1447 01:09:10,640 --> 01:09:14,990 Ond mae'n cysylltu'n ddarluniadol drwy gyfrwng saethau hyn, 1448 01:09:14,990 --> 01:09:18,510 a phob saethau hyn yw-- oddi tano y cwfl, os ydych yn chwilfrydig, 1449 01:09:18,510 --> 01:09:23,210 dwyn i gof bod ein caledwedd ffisegol wedi cyfeiriadau sero, un, dau, tri, pedwar. 1450 01:09:23,210 --> 01:09:28,465 Mae'r holl saethau hyn yn yn debyg i fap neu gyfarwyddiadau, lle os 90 yw-- bellach 1451 01:09:28,465 --> 01:09:29,090 Ges i gyfrif. 1452 01:09:29,090 --> 01:09:31,750 >> Zero, un, dau, tri, pedwar, pump, chwech, saith. 1453 01:09:31,750 --> 01:09:35,640 Mae'n edrych fel y 90 ar cof rhif gyfeiriad saith. 1454 01:09:35,640 --> 01:09:38,460 Mae'r holl saethau hyn yw fel ychydig o sgrap o bapur 1455 01:09:38,460 --> 01:09:42,439 sy'n rhoi cyfarwyddiadau i'r rhaglen sy'n dweud dilynwch y map 1456 01:09:42,439 --> 01:09:43,880 i gyrraedd leoliad saith. 1457 01:09:43,880 --> 01:09:46,680 Ac yno y byddwch yn dod o hyd i'r ail sgôr cwis myfyriwr. 1458 01:09:46,680 --> 01:09:52,100 Yn y cyfamser, mae'r 75-- os byddaf yn parhau i wneud hyn, mae hyn yn saith, wyth, naw, 10, 11, 12, 1459 01:09:52,100 --> 01:09:54,240 13, 14, 15. 1460 01:09:54,240 --> 01:09:59,080 >> Mae'r saeth arall yn unig yn cynrychioli map i leoliad cof 15. 1461 01:09:59,080 --> 01:10:02,550 Ond unwaith eto, mae'r rhaglennydd yn gyffredinol yn ei wneud ydynt yn poeni am lefel hon o fanylder. 1462 01:10:02,550 --> 01:10:05,530 Ac yn y rhan fwyaf mhob rhaglennu iaith heddiw, mae'r rhaglennydd 1463 01:10:05,530 --> 01:10:10,490 Ni fydd hyd yn oed yn gwybod ble yn y cof rhifau hyn mewn gwirionedd. 1464 01:10:10,490 --> 01:10:14,830 Mae pob ef neu hi wedi i ofalu am ei eu bod yn cael eu cysylltu rywsut gyda'i gilydd 1465 01:10:14,830 --> 01:10:18,390 mewn strwythur data fel hyn. 1466 01:10:18,390 --> 01:10:21,580 >> Ond mae'n troi allan nad yw â mynd yn rhy dechnegol. 1467 01:10:21,580 --> 01:10:27,430 Ond dim ond oherwydd ein bod efallai yn gallu fforddio cael y drafodaeth hon yma, 1468 01:10:27,430 --> 01:10:33,630 Mae'n debyg ein bod yn ailedrych y mater hwn yma o amrywiaeth. 1469 01:10:33,630 --> 01:10:35,780 Gadewch i ni weld os byddwn yn difaru mynd yma. 1470 01:10:35,780 --> 01:10:42,950 Mae hwn yn 100, 90, 75, a 80. 1471 01:10:42,950 --> 01:10:44,980 >> Gadewch imi wneud yn fyr honiad hwn. 1472 01:10:44,980 --> 01:10:48,980 Mae hwn yn array, ac unwaith eto, mae'r nodwedd amlwg o amrywiaeth 1473 01:10:48,980 --> 01:10:52,400 yw bod eich holl ddata yn ôl i gefn wrth gefn yn memory-- llythrennol 1474 01:10:52,400 --> 01:10:56,830 un beit neu efallai bedwar bytes, rhyw nifer penodol o bytes ffwrdd. 1475 01:10:56,830 --> 01:11:00,710 Mewn rhestr cysylltiedig, y gallem dynnu fel hyn, o dan y cwfl sydd 1476 01:11:00,710 --> 01:11:02,000 yn gwybod ble y pethau y mae? 1477 01:11:02,000 --> 01:11:03,630 Nid oes hyd yn oed yn rhaid iddo lifo fel hyn. 1478 01:11:03,630 --> 01:11:06,050 Gallai rhai o'r data fod yn yn ôl i'r chwith i fyny yno. 1479 01:11:06,050 --> 01:11:07,530 Dydych chi ddim hyd yn oed yn gwybod. 1480 01:11:07,530 --> 01:11:15,430 >> Ac felly gydag amrywiaeth, mae gennych nodwedd a elwir yn fynediad hap. 1481 01:11:15,430 --> 01:11:20,570 A beth hapgyrch modd yn y gall y cyfrifiadur neidio yn syth 1482 01:11:20,570 --> 01:11:22,730 i unrhyw leoliad mewn amrywiaeth. 1483 01:11:22,730 --> 01:11:23,580 Pam? 1484 01:11:23,580 --> 01:11:26,000 Oherwydd bod y cyfrifiadur yn gwybod bod y lleoliad cyntaf yw 1485 01:11:26,000 --> 01:11:29,540 sero, un, dau, a thri. 1486 01:11:29,540 --> 01:11:33,890 >> Ac felly os ydych chi am i fynd o elfen hon at yr elfen nesaf, 1487 01:11:33,890 --> 01:11:36,099 yn llythrennol, yn y meddwl cyfrifiadur, dim ond ychwanegu un. 1488 01:11:36,099 --> 01:11:39,140 Os ydych am fynd at y drydedd elfen, dim ond ychwanegu one-- elfen nesaf, dim ond 1489 01:11:39,140 --> 01:11:40,290 ychwanegu un. 1490 01:11:40,290 --> 01:11:42,980 Fodd bynnag, yn y fersiwn hwn y stori, mae'n debyg 1491 01:11:42,980 --> 01:11:46,080 y cyfrifiadur yn edrych ar hyn o bryd ar neu ddelio â'r rhif 100. 1492 01:11:46,080 --> 01:11:49,770 Sut ydych chi gyrraedd y nesaf gradd yn y llyfr radd? 1493 01:11:49,770 --> 01:11:52,560 >> rhaid i chi gymryd saith grisiau, sydd yn fympwyol. 1494 01:11:52,560 --> 01:11:58,120 I gyrraedd yr un nesaf, rhaid i chi cymryd wyth cam arall i gyrraedd 15. 1495 01:11:58,120 --> 01:12:02,250 Mewn geiriau eraill, nid yw'n bwlch cyson rhwng y rhifau, 1496 01:12:02,250 --> 01:12:04,857 ac felly mae'n cymryd dim ond y cyfrifiadur mwy o amser yw'r pwynt. 1497 01:12:04,857 --> 01:12:06,940 Mae'r cyfrifiadur wedi i chwilio drwy gof er mwyn 1498 01:12:06,940 --> 01:12:08,990 i ddod o hyd i'r hyn rydych chi'n chwilio amdano. 1499 01:12:08,990 --> 01:12:14,260 >> Felly, tra bod amrywiaeth yn tueddu i fod yn structure-- data cyflym oherwydd eich 1500 01:12:14,260 --> 01:12:17,610 Gall llythrennol dim ond gwneud rhifyddeg syml a chael lle rydych chi eisiau drwy ychwanegu un, 1501 01:12:17,610 --> 01:12:21,300 am instance-- rhestr cysylltiedig, byddwch yn aberth y nodwedd honno. 1502 01:12:21,300 --> 01:12:24,020 nid ydych yn gallu mynd o yn gyntaf i ail i drydydd i'r pedwerydd. 1503 01:12:24,020 --> 01:12:25,240 rhaid i chi ddilyn y map. 1504 01:12:25,240 --> 01:12:28,160 Mae'n rhaid i chi gymryd mwy o gamau i gyrraedd y gwerthoedd hynny, sydd 1505 01:12:28,160 --> 01:12:30,230 Byddai ymddangos yn ychwanegu cost. 1506 01:12:30,230 --> 01:12:35,910 Felly, rydym yn talu pris, ond beth oedd y nodwedd sy'n Dan yn ceisio yma? 1507 01:12:35,910 --> 01:12:38,110 Beth mae rhestr cysylltiedig yn ôl pob golwg yn caniatáu i ni wneud, 1508 01:12:38,110 --> 01:12:40,240 sef y tarddiad y stori arbennig? 1509 01:12:40,240 --> 01:12:43,250 1510 01:12:43,250 --> 01:12:43,830 >> Yn union. 1511 01:12:43,830 --> 01:12:46,220 Mae maint deinamig iddo. 1512 01:12:46,220 --> 01:12:48,040 Gallwn ychwanegu at y rhestr hon. 1513 01:12:48,040 --> 01:12:51,430 Gallwn hyd yn oed yn crebachu y rhestr, felly ein bod yn unig yn defnyddio cymaint o gof 1514 01:12:51,430 --> 01:12:55,560 gan ein bod mewn gwirionedd yn eisiau, ac felly rydym yn byth dros-dyrannu. 1515 01:12:55,560 --> 01:12:58,470 >> Nawr dim ond i fod beiau-picky gwirionedd, mae 'na gost gudd. 1516 01:12:58,470 --> 01:13:01,980 Felly, ni ddylech dim ond gadewch i mi argyhoeddi chi fod hwn yn tradeoff gymhellol. 1517 01:13:01,980 --> 01:13:04,190 Mae cost gudd arall yma. 1518 01:13:04,190 --> 01:13:06,550 Mae'r budd-dal, i fod yn glir, yw ein bod yn cael egni. 1519 01:13:06,550 --> 01:13:10,359 Os ydw i eisiau elfen arall, dim ond gallaf dynnu a rhoi nifer i mewn 'na. 1520 01:13:10,359 --> 01:13:12,150 Ac yna gallaf gysylltu gyda llun yma, 1521 01:13:12,150 --> 01:13:14,970 tra dros yma, unwaith eto, os wyf i wedi paentio fy hun i mewn i gornel, 1522 01:13:14,970 --> 01:13:19,410 os rhywbeth arall eisoes yn defnyddio y cof yma, rwy'n allan o lwc. 1523 01:13:19,410 --> 01:13:21,700 Rwyf wedi paentio fy hun i mewn i'r gornel. 1524 01:13:21,700 --> 01:13:24,390 >> Ond beth yw'r cudd gostio yn y llun hwn? 1525 01:13:24,390 --> 01:13:27,690 Nid dim ond y swm o amser y mae'n ei gymryd 1526 01:13:27,690 --> 01:13:29,870 i fynd oddi yma i fan hyn, sef saith cam, yna 1527 01:13:29,870 --> 01:13:32,820 wyth cam, sy'n fwy nag un. 1528 01:13:32,820 --> 01:13:34,830 Beth yw cost gudd arall? 1529 01:13:34,830 --> 01:13:35,440 Nid dim ond amser. 1530 01:13:35,440 --> 01:13:44,790 1531 01:13:44,790 --> 01:13:49,940 Gwybodaeth ychwanegol yw angenrheidiol i gyflawni llun hwn. 1532 01:13:49,940 --> 01:13:53,210 >> Yeah, y map, darnau bychain hynny o papur, gan fy mod yn cadw eu disgrifio fel. 1533 01:13:53,210 --> 01:13:55,650 Nid yw'r rhain arrows-- hynny yn rhad ac am ddim. 1534 01:13:55,650 --> 01:13:57,660 Mae computer-- eich bod yn gwybod beth cyfrifiadur wedi. 1535 01:13:57,660 --> 01:13:58,790 Mae ganddo zeros a rhai. 1536 01:13:58,790 --> 01:14:03,170 Os ydych am i gynrychioli saeth neu map neu nifer, mae angen rhywfaint o cof. 1537 01:14:03,170 --> 01:14:05,950 Felly, y pris arall i chi talu am restr cysylltiedig, 1538 01:14:05,950 --> 01:14:09,070 mae gwyddoniaeth gyfrifiadurol gyffredin adnoddau, lle hefyd. 1539 01:14:09,070 --> 01:14:11,710 >> Ac yn wir felly, felly yn gyffredin, ymhlith y cyfaddawdu 1540 01:14:11,710 --> 01:14:15,580 wrth ddylunio peirianneg meddalwedd systemau yn amser a space-- 1541 01:14:15,580 --> 01:14:18,596 mae dau o'ch cynhwysion, dau o'ch cynhwysion mwyaf costus. 1542 01:14:18,596 --> 01:14:21,220 Mae hyn yn costio i mi yn fwy o amser gan fod rhaid i mi ddilyn y map hwn, 1543 01:14:21,220 --> 01:14:25,730 ond mae hefyd yn costio mwy o le i mi oherwydd bod yn rhaid i mi gadw y map o gwmpas. 1544 01:14:25,730 --> 01:14:28,730 Felly, y gobaith, fel y mae gennym y math o Trafododd dros ddoe a heddiw, 1545 01:14:28,730 --> 01:14:31,720 yw bod y manteision Bydd yn drech na'r costau. 1546 01:14:31,720 --> 01:14:33,870 >> Ond does dim ateb amlwg yma. 1547 01:14:33,870 --> 01:14:35,870 Efallai ei fod yn better-- cyflym la a budr, 1548 01:14:35,870 --> 01:14:38,660 fel Kareem arfaethedig earlier-- i daflu cof ar y broblem. 1549 01:14:38,660 --> 01:14:42,520 Dim ond prynu mwy o gof, yn meddwl llai caled ati i ddatrys y broblem, 1550 01:14:42,520 --> 01:14:44,595 a datrys mewn ffordd haws. 1551 01:14:44,595 --> 01:14:46,720 Ac yn wir yn gynharach, pan buom yn siarad am cyfaddawdu, 1552 01:14:46,720 --> 01:14:49,190 nid oedd le yn y cyfrifiadur ac amser. 1553 01:14:49,190 --> 01:14:51,810 Roedd hi'n amser datblygwr, sy'n yn adnodd arall eto. 1554 01:14:51,810 --> 01:14:54,829 >> Felly eto, mae'n cydbwysedd hwn geisio penderfynu pa un o'r pethau hynny 1555 01:14:54,829 --> 01:14:55,870 a ydych yn barod i wario? 1556 01:14:55,870 --> 01:14:57,380 Pa un yw'r lleiaf drud? 1557 01:14:57,380 --> 01:15:01,040 Pa gynnyrch canlyniadau gwell? 1558 01:15:01,040 --> 01:15:01,540 Yeah? 1559 01:15:01,540 --> 01:15:11,310 1560 01:15:11,310 --> 01:15:12,580 >> Yn wir. 1561 01:15:12,580 --> 01:15:15,970 Yn yr achos hwn, os ydych yn cynrychioli rhifau yn y maps-- 1562 01:15:15,970 --> 01:15:18,820 gelwir y rhain mewn sawl iaith "Awgrymiadau" neu "gyfeiriadau" - 1563 01:15:18,820 --> 01:15:20,390 mae'n dwbl y gofod. 1564 01:15:20,390 --> 01:15:24,390 Nid oes angen hynny fod mor ddrwg fel dwbl os ar hyn o bryd rydym yn unig storio rhifau. 1565 01:15:24,390 --> 01:15:27,410 Tybiwch ein bod yn storio cofnodion cleifion mewn hospital-- 1566 01:15:27,410 --> 01:15:30,870 felly enwau Pierson, a rhifau ffôn, rhifau nawdd cymdeithasol, meddyg 1567 01:15:30,870 --> 01:15:31,540 hanes. 1568 01:15:31,540 --> 01:15:34,160 Efallai y blwch hwn fod yn llawer, llawer mwy, ac yn yr achos 1569 01:15:34,160 --> 01:15:38,000 pwyntydd bach bach, cyfeiriad element-- y nesaf nid yw'n beth mawr. 1570 01:15:38,000 --> 01:15:40,620 Mae'n ymylol o'r fath costio does dim ots. 1571 01:15:40,620 --> 01:15:43,210 Ond yn yr achos hwn, ie, ei fod yn dyblu. 1572 01:15:43,210 --> 01:15:45,290 Cwestiwn da. 1573 01:15:45,290 --> 01:15:47,900 >> Gadewch i ni siarad am amser a ychydig yn fwy diriaethol. 1574 01:15:47,900 --> 01:15:50,380 Beth yw'r amser yn rhedeg o chwilio'r rhestr hon? 1575 01:15:50,380 --> 01:15:53,640 Gadewch i ni dybio Roeddwn i eisiau i chwilio drwy bob gradd myfyrwyr, 1576 01:15:53,640 --> 01:15:55,980 ac mae graddau n yn y strwythur data. 1577 01:15:55,980 --> 01:15:58,830 Yma, hefyd, gallwn fenthyg geirfa gynharach. 1578 01:15:58,830 --> 01:16:00,890 Mae hwn yn strwythur data llinol. 1579 01:16:00,890 --> 01:16:04,570 >> O Big n yw hyn sydd ei angen i gael i ddiwedd y strwythur data, 1580 01:16:04,570 --> 01:16:08,410 whereas-- ac nid ydym wedi gweld mae hyn before-- arae yn rhoi i chi 1581 01:16:08,410 --> 01:16:13,555 hyn a elwir amser cyson, sy'n golygu un cam neu ddau gam neu 10 steps-- 1582 01:16:13,555 --> 01:16:14,180 nid yw o bwys. 1583 01:16:14,180 --> 01:16:15,440 Mae'n nifer penodol. 1584 01:16:15,440 --> 01:16:17,440 Mae ganddo ddim i'w wneud â maint y rhesi. 1585 01:16:17,440 --> 01:16:20,130 A'r rheswm am hynny, unwaith eto, yn mynediad hap. 1586 01:16:20,130 --> 01:16:23,180 Gall y cyfrifiadur yn unig ar unwaith neidio i leoliad arall, 1587 01:16:23,180 --> 01:16:27,770 oherwydd eu bod i gyd yr un fath pellter o'r popeth arall. 1588 01:16:27,770 --> 01:16:29,112 Nid oes unrhyw ffordd o feddwl sy'n gysylltiedig. 1589 01:16:29,112 --> 01:16:31,900 1590 01:16:31,900 --> 01:16:32,400 Iawn. 1591 01:16:32,400 --> 01:16:39,230 Felly os gallaf, gadewch i mi geisio paent dau lluniau terfynol. 1592 01:16:39,230 --> 01:16:42,830 Mae un cyffredin iawn a elwir yn dabl hash. 1593 01:16:42,830 --> 01:16:51,120 Felly, er mwyn cymell y drafodaeth hon, gadewch i mi feddwl am sut i wneud hyn. 1594 01:16:51,120 --> 01:16:52,610 >> Felly beth am hyn? 1595 01:16:52,610 --> 01:16:55,160 Gadewch i ni dybio bod y broblem rydym am ddatrys yn awr 1596 01:16:55,160 --> 01:16:58,360 yn gweithredu mewn dictionary-- felly criw cyfan o eiriau Saesneg 1597 01:16:58,360 --> 01:16:59,330 neu beth bynnag. 1598 01:16:59,330 --> 01:17:02,724 A'r nod yw bod yn gallu ateb cwestiynau y ffurflen yw hon gair? 1599 01:17:02,724 --> 01:17:04,640 Felly rydych chi am weithredu gwirydd sillafu, dim ond 1600 01:17:04,640 --> 01:17:07,220 fel eiriadur corfforol y gallwch edrych pethau i fyny yn. 1601 01:17:07,220 --> 01:17:10,490 Gadewch i ni dybio bawn yn gwneud hyn gydag amrywiaeth. 1602 01:17:10,490 --> 01:17:12,590 Gallwn wneud hyn. 1603 01:17:12,590 --> 01:17:20,756 >> Ac yn debyg y geiriau yn cael eu afal a banana a cantaloupe. 1604 01:17:20,756 --> 01:17:23,330 1605 01:17:23,330 --> 01:17:26,465 Ac ni allaf feddwl am ffrwythau sy'n dechrau gyda d, felly rydym yn unig 1606 01:17:26,465 --> 01:17:27,590 mynd i gael tri ffrwythau. 1607 01:17:27,590 --> 01:17:31,510 Felly mae hwn yn array, ac rydym yn storio pob un o'r geiriau hyn 1608 01:17:31,510 --> 01:17:34,200 mewn geiriadur hwn fel arae. 1609 01:17:34,200 --> 01:17:39,350 Y cwestiwn, felly, yw sut arall gallech storio'r wybodaeth hon? 1610 01:17:39,350 --> 01:17:43,160 >> Wel, dwi'n fath o dwyllo yma, oherwydd pob un o'r llythyrau hyn yn y gair 1611 01:17:43,160 --> 01:17:44,490 yn wir yn beit unigol. 1612 01:17:44,490 --> 01:17:46,740 Felly, os Fi 'n sylweddol eisiau bod yn nit-picky, dylwn 'n sylweddol 1613 01:17:46,740 --> 01:17:49,600 fod yn rhannu'r hyn i fyny i mewn i lawer ddarnau llai o gof, 1614 01:17:49,600 --> 01:17:51,289 a gallem wneud yn union hynny. 1615 01:17:51,289 --> 01:17:53,580 Ond rydym yn mynd i redeg i mewn i yr un broblem ag o'r blaen. 1616 01:17:53,580 --> 01:17:56,674 Beth os, fel Merriam Webster neu Rhydychen yn gwneud pob year-- maent yn ychwanegu geiriau 1617 01:17:56,674 --> 01:17:59,340 i'r dictionary-- nid ydym yn ei wneud o reidrwydd eisiau i beintio ein hunain 1618 01:17:59,340 --> 01:18:00,780 mewn cornel gydag amrywiaeth? 1619 01:18:00,780 --> 01:18:05,710 >> Felly yn lle hynny, efallai ymagwedd graffach yw rhoi afal yn ei nod neu flwch ei hun, 1620 01:18:05,710 --> 01:18:11,190 fel y byddem yn ei ddweud, banana, ac yna dyma gennym cantaloupe. 1621 01:18:11,190 --> 01:18:14,990 1622 01:18:14,990 --> 01:18:16,790 A llinyn yr ydym pethau hyn gyda'n gilydd. 1623 01:18:16,790 --> 01:18:19,980 Felly, mae hyn yn y casgliad, ac hwn yw'r rhestr gysylltiedig. 1624 01:18:19,980 --> 01:18:23,300 Os nad ydych yn gallu hollol weld, 'i jyst dweud "array," ac mae hyn yn dweud "rhestr." 1625 01:18:23,300 --> 01:18:25,780 >> Felly, rydym yn cael yr un union faterion fel o'r blaen, 1626 01:18:25,780 --> 01:18:28,600 lle mae gennym bellach dynamiaeth yn ein rhestr cysylltiedig. 1627 01:18:28,600 --> 01:18:31,090 Ond mae gennym geiriadur eithaf araf. 1628 01:18:31,090 --> 01:18:32,870 Tybiwch Rwyf am i chwilio am air. 1629 01:18:32,870 --> 01:18:35,430 Gallai gymryd i mi O fawr o n camau, oherwydd gallai'r gair 1630 01:18:35,430 --> 01:18:37,840 fod yr holl ffordd ar ddiwedd y y rhestr, fel cantaloupe. 1631 01:18:37,840 --> 01:18:40,600 Ac mae'n troi allan y mewn rhaglenni, didoli 1632 01:18:40,600 --> 01:18:42,700 o greal sanctaidd o ddata strwythurau, yn rhywbeth 1633 01:18:42,700 --> 01:18:46,620 sy'n rhoi i chi yn gyson amser fel arae 1634 01:18:46,620 --> 01:18:50,870 ond mae hynny'n dal i roi egni i chi. 1635 01:18:50,870 --> 01:18:52,940 >> Felly, gallwn gael y gorau o ddau fyd? 1636 01:18:52,940 --> 01:18:55,570 Ac yn wir, mae yna rywbeth Gelwir y tabl hash 1637 01:18:55,570 --> 01:18:59,320 sy'n eich galluogi i wneud yn union hynny, er tua. 1638 01:18:59,320 --> 01:19:03,140 Mae tabl hash yn ffansi strwythur data sydd gennym 1639 01:19:03,140 --> 01:19:06,340 gallu meddwl am fel y cyfuniad o array-- 1640 01:19:06,340 --> 01:19:12,390 ac rwy'n mynd i dynnu ei fel this-- a rhestrau cysylltiedig 1641 01:19:12,390 --> 01:19:17,310 y byddaf yn tynnu fel hyn dros yma. 1642 01:19:17,310 --> 01:19:19,760 >> A'r ffordd y peth hyn gweithiau fel a ganlyn. 1643 01:19:19,760 --> 01:19:23,310 1644 01:19:23,310 --> 01:19:29,540 Os now-- hyn hash table-- yw fy nhrydydd strwythur data, 1645 01:19:29,540 --> 01:19:32,590 ac yr wyf am i storio geiriau yn hyn, nid wyf yn ei wneud 1646 01:19:32,590 --> 01:19:35,440 eisiau i ddim ond storio'r holl geiriau cefn wrth gefn wrth gefn wrth gefn. 1647 01:19:35,440 --> 01:19:37,430 Rwyf am i trosoledd rhai darn o wybodaeth 1648 01:19:37,430 --> 01:19:40,330 am y geiriau a fydd yn gadael mi ei gael ble mae'n gyflymach. 1649 01:19:40,330 --> 01:19:43,666 >> Felly o ystyried y geiriau afal a banana a cantaloupe, 1650 01:19:43,666 --> 01:19:45,040 Dewisais fwriadol geiriau hynny. 1651 01:19:45,040 --> 01:19:45,340 Pam? 1652 01:19:45,340 --> 01:19:47,631 Beth sydd fath o sylfaenol yn wahanol am y tri? 1653 01:19:47,631 --> 01:19:49,950 1654 01:19:49,950 --> 01:19:51,484 Beth yw'r amlwg? 1655 01:19:51,484 --> 01:19:52,900 Maent yn dechrau gyda gwahanol lythrennau. 1656 01:19:52,900 --> 01:19:53,900 >> Felly, rydych yn gwybod beth? 1657 01:19:53,900 --> 01:19:57,120 Yn hytrach na rhoi fy holl eiriau yn yr un bwced, fel petai, 1658 01:19:57,120 --> 01:20:00,390 tebyg yn un rhestr hir, pam na gwneud Rwyf o leiaf roi cynnig ar Optimization 1659 01:20:00,390 --> 01:20:04,180 a gwneud fy rhestrau 1/26 mor hir. 1660 01:20:04,180 --> 01:20:07,440 A Optimization cymhellol allai fod pam na gwneud 1661 01:20:07,440 --> 01:20:10,650 I-- wrth fewnosod gair i mewn i hyn strwythur data, 1662 01:20:10,650 --> 01:20:14,300 i mewn i gof y cyfrifiadur, pam peidiwch â wyf yn rhoi'r holl 'a' geiriau yma, 1663 01:20:14,300 --> 01:20:17,270 holl eiriau 'b' yma, a'r holl 'c' geiriau yma? 1664 01:20:17,270 --> 01:20:24,610 Felly, mae hyn yn dod i ben i fyny gan roi afal yma, banana yma, cantaloupe yma, 1665 01:20:24,610 --> 01:20:25,730 ac yn y blaen. 1666 01:20:25,730 --> 01:20:31,700 >> Ac os oes gennyf ychwanegol gair like-- beth arall? 1667 01:20:31,700 --> 01:20:36,640 Afal, banana, gellygen. 1668 01:20:36,640 --> 01:20:39,370 Unrhyw un feddwl am ffrwythau sy'n dechrau gyda, b, neu c? 1669 01:20:39,370 --> 01:20:40,570 perffaith Blueberry--. 1670 01:20:40,570 --> 01:20:43,990 Mae hynny yn mynd i roi diwedd ar i fyny yma. 1671 01:20:43,990 --> 01:20:47,530 Ac felly rydym yn ymddangos i fod â ychydig yn well ateb, 1672 01:20:47,530 --> 01:20:50,820 oherwydd erbyn hyn os ydw i eisiau i chwilio am afal, yr wyf yn 1673 01:20:50,820 --> 01:20:53,200 first-- Dydw i wneud yn union deifio i mewn i fy strwythur data. 1674 01:20:53,200 --> 01:20:54,850 Dydw i ddim yn plymio i mewn i gof fy cyfrifiadur. 1675 01:20:54,850 --> 01:20:56,530 Yr wyf yn edrych yn gyntaf ar y llythyr cyntaf. 1676 01:20:56,530 --> 01:20:58,610 >> Ac mae hyn yn beth cyfrifiadur Byddai gwyddonydd yn dweud. 1677 01:20:58,610 --> 01:21:00,760 Rydych hash i mewn i'ch strwythur data. 1678 01:21:00,760 --> 01:21:04,100 Byddwch yn cymryd eich cyfraniad, sydd yn ei yr achos hwn yw gair fel afal. 1679 01:21:04,100 --> 01:21:07,150 Rydych yn dadansoddi, gan edrych ar y llythyr cyntaf yn yr achos hwn, 1680 01:21:07,150 --> 01:21:08,340 a thrwy hynny stwnsio iddo. 1681 01:21:08,340 --> 01:21:10,950 Mae stwnsio yn lle derm cyffredinol eich bod yn cymryd rhywbeth fel mewnbwn 1682 01:21:10,950 --> 01:21:12,116 a ydych yn cynhyrchu rhywfaint o allbwn. 1683 01:21:12,116 --> 01:21:15,090 Ac mae'r allbwn yn y achos yn y lleoliad 1684 01:21:15,090 --> 01:21:18,150 rydych am ei chwilio, y cyntaf lleoliad, ail leoliad, yn drydydd. 1685 01:21:18,150 --> 01:21:22,160 Felly mae'r mewnbwn yn afal, mae'r allbwn yn gyntaf. 1686 01:21:22,160 --> 01:21:25,054 Mae'r mewnbwn yn banana, mae'r Dylai allbwn fod yn ail. 1687 01:21:25,054 --> 01:21:27,220 Mae'r mewnbwn yn cantaloupe, Dylai'r allbwn fod yn drydydd. 1688 01:21:27,220 --> 01:21:30,320 Mae'r mewnbwn yn llus, mae'r Dylai allbwn eto fod yn ail. 1689 01:21:30,320 --> 01:21:34,010 A dyna beth yn eich helpu i gymryd llwybrau byr trwy eich cof 1690 01:21:34,010 --> 01:21:39,050 er mwyn cael at eiriau neu ddata yn fwy effeithiol. 1691 01:21:39,050 --> 01:21:43,330 >> Yn awr mae hyn yn torri i lawr ein hamser o bosibl gan gymaint â un allan o 26, 1692 01:21:43,330 --> 01:21:45,850 oherwydd os byddwch yn cymryd yn ganiataol y byddwch yn gael cymaint "a" geiriau fel "z" 1693 01:21:45,850 --> 01:21:48,080 geiriau fel "q" geiriau, a oedd yn Nid yw 'n sylweddol realistic-- 1694 01:21:48,080 --> 01:21:50,830 rydych yn mynd i gael gogwydd ar draws llythyrau penodol o'r alphabet-- 1695 01:21:50,830 --> 01:21:53,204 ond byddai hyn yn gynyddrannol dull yw'n caniatáu 1696 01:21:53,204 --> 01:21:55,930 i chi fynd i eiriau yn gyflymach o lawer. 1697 01:21:55,930 --> 01:21:59,660 Ac mewn gwirionedd, mae soffistigedig rhaglen, mae'r Googles y byd, 1698 01:21:59,660 --> 01:22:02,180 y Facebooks y world-- byddent yn defnyddio tabl hash 1699 01:22:02,180 --> 01:22:03,740 am lawer o wahanol ddibenion. 1700 01:22:03,740 --> 01:22:06,590 Ond ni fyddent yn mor naïf fel i dim ond yn edrych ar y llythyr cyntaf 1701 01:22:06,590 --> 01:22:09,700 mewn afal neu fanana neu gellygen neu cantaloupe, 1702 01:22:09,700 --> 01:22:13,420 oherwydd fel y gallwch weld y rhain Gallai rhestrau yn dal i gael hir. 1703 01:22:13,420 --> 01:22:17,130 >> Ac felly gallai hyn yn dal i fod yn fath o linear-- felly math o araf, 1704 01:22:17,130 --> 01:22:19,980 fel gyda O mawr o n ein bod yn trafod yn gynharach. 1705 01:22:19,980 --> 01:22:25,290 Felly beth tabl hash da go iawn a fydd do-- bydd yn cael llawer mwy o amrywiaeth. 1706 01:22:25,290 --> 01:22:28,574 A bydd yn defnyddio llawer mwy swyddogaeth stwnsio soffistigedig, 1707 01:22:28,574 --> 01:22:30,240 fel nad yw dim ond yn edrych ar y "a." 1708 01:22:30,240 --> 01:22:35,480 Efallai ei fod yn edrych ar "a-p-p-l-e" a rywsut yn trosi y rhai pum llythyr 1709 01:22:35,480 --> 01:22:38,400 i mewn i'r lleoliad lle Dylai afal yn cael ei storio. 1710 01:22:38,400 --> 01:22:42,660 Rydym yn unig yn ddiniwed gan ddefnyddio'r llythyren 'a' ei ben ei hun, am ei fod yn neis ac yn syml. 1711 01:22:42,660 --> 01:22:44,600 >> Ond tabl hash, yn y diwedd, gallwch chi feddwl 1712 01:22:44,600 --> 01:22:47,270 o fel cyfuniad o amrywiaeth, pob un ohonynt 1713 01:22:47,270 --> 01:22:51,700 Mae rhestr cysylltiedig yn ddelfrydol Dylai fod mor fyr ag y bo modd. 1714 01:22:51,700 --> 01:22:54,364 Ac nid yw hyn yn ateb amlwg. 1715 01:22:54,364 --> 01:22:57,280 Yn wir, mae llawer o'r mireinio sy'n mynd ymlaen o dan y cwfl pan 1716 01:22:57,280 --> 01:22:59,654 gweithredu'r mathau hyn o strwythurau data soffistigedig 1717 01:22:59,654 --> 01:23:01,640 yw'r hyn yw'r hawl hyd y rhesi? 1718 01:23:01,640 --> 01:23:03,250 Beth yw swyddogaeth hash iawn? 1719 01:23:03,250 --> 01:23:04,830 Sut ydych chi'n cadw pethau mewn cof? 1720 01:23:04,830 --> 01:23:07,249 >> Ond yn sylweddoli pa mor gyflym y math hwn o drafodaeth 1721 01:23:07,249 --> 01:23:10,540 dwysáu, naill ai hyd yn hyn ei fod yn garedig o dros un o ben ar y pwynt hwn, a oedd yn 1722 01:23:10,540 --> 01:23:11,360 yn iawn. 1723 01:23:11,360 --> 01:23:18,820 Ond rydym yn dechrau, galw i gof, gyda wirioneddol rhywbeth lefel isel ac electronig. 1724 01:23:18,820 --> 01:23:20,819 Ac felly mae hyn eto yw hyn thema tynnu dŵr, 1725 01:23:20,819 --> 01:23:23,610 lle ar ôl i chi ddechrau cymryd yn ganiataol, OK, mae gen iddo-- mae 1726 01:23:23,610 --> 01:23:26,680 cof corfforol, OK, got it, bob lleoliad ffisegol Mae cyfeiriad, 1727 01:23:26,680 --> 01:23:29,910 OK, yr wyf yn got it, gallaf gynrychioli cyfeiriadau hynny fel arrows-- 1728 01:23:29,910 --> 01:23:34,650 gallwch ddechrau gyflym iawn i gael sgyrsiau mwy soffistigedig sy'n 1729 01:23:34,650 --> 01:23:38,360 yn y pen draw yn ymddangos i fod ganiatáu i ni i ddatrys problemau fel chwilio 1730 01:23:38,360 --> 01:23:41,620 a didoli yn fwy effeithiol. 1731 01:23:41,620 --> 01:23:44,190 Ac yn sicr, too-- am fy mod yn credu bod hyn 1732 01:23:44,190 --> 01:23:48,700 yw'r dyfnaf ein bod wedi mynd i mewn i rai o'r rhain pynciau CS proper-- rydym wedi 1733 01:23:48,700 --> 01:23:51,880 wneud mewn diwrnod a hanner ar hyn pwyntio beth y gallech fel arfer yn wneud dros 1734 01:23:51,880 --> 01:23:55,520 cwrs wyth wythnos mewn semester. 1735 01:23:55,520 --> 01:23:59,670 >> Unrhyw gwestiynau am y rhain? 1736 01:23:59,670 --> 01:24:01,100 Na? 1737 01:24:01,100 --> 01:24:01,940 Iawn. 1738 01:24:01,940 --> 01:24:05,610 Wel, pam nad ydym yn oedi yno, dechrau cinio ychydig funudau yn gynnar, 1739 01:24:05,610 --> 01:24:07,052 ailddechrau mewn dim ond tua awr? 1740 01:24:07,052 --> 01:24:08,760 A byddaf yn aros am ychydig gyda chwestiynau. 1741 01:24:08,760 --> 01:24:11,343 Yna mi i'n mynd i gael i fynd cymryd galwadau cwpl os mae hynny'n iawn. 1742 01:24:11,343 --> 01:24:15,000 'N annhymerus' droi ar gerddoriaeth yn y cyfamser, ond dylai cinio fod rownd y gornel. 1743 01:24:15,000 --> 01:24:17,862