Në këtë seri, unë propozova të shpjegoja se çfarë është "me të vërtetë mbresëlënëse" në lidhje me zhvillimet aktuale në AI — por ne nuk jemi ende plotësisht atje! Sa më shumë të kuptojmë sesi funksionojnë kompjuterëtdhe algoritmet, aq më interesant bëhet. Në postimin e mëparshëm u përpoqa të tregoja se kompjuterët nuk janë aq të zgjuar dhe pse ne mund të mendojmë kështu. Ata janë të mirë në regjistrimin dhe rikujtimin e gjërave të thjeshta me saktësi dhe bëjnë operacione të vogla vijuese shumë shpejt. truri ynënuk është aq i zoti për ta bërë këtë, por ne jemi shumë më të mirë në gjëra të tilla si gjuhadhe përpunimi vizual, të cilat ndoshta janë më komplekse. Ky postim është një tjetër shteg i qetë në ngjitjen tonë në malin AI. Tema e sotme është strukturat e të dhënave.

Shumica e problemeve në shkencën kompjuterike mund të zgjidhen në shumë mënyra të ndryshme, dhe secila mënyrë ka përparësitë e veta. Imagjinoni që ju pëlqejnë vërtet librat dhe keni vendosur të filloni një koleksion të madh personal. Ju rezervuat një dhomë bosh në shtëpinë tuaj për të qenë biblioteka tuaj, sollët të gjithë librat që keni tashmë dhe tani duhet të mendoni se si ta organizoni atë. A do të përdorni rafte? Të lini gjërat në kuti? A do t'i mbani ato të organizuara sipas autorit, subjektit? Çfarë ndryshimi ka në të vërtetë?

Së pari, le të përcaktojmë se çfarë është e rëndësishme për ne.

Ne duam që koleksioni ynë të jetë sa më i madh, kështu që hapësiraështë padyshimnjë çështje. Ne planifikojmë të shtojmë libra të rinj shpesh, kështu që duhet të organizohet në një mënyrë fleksibël. Sigurisht që edhe ne duam t'i lexojmë, kështu që gjetja e një libri duhet të jetë e lehtë. Kjo është një analogji e thjeshtuar me strukturat e të dhënaveshkencën kompjuterike, ku ne jemi të shqetësuar për hapësirën e ruajtjes, futjen e të dhënave të reja dhe heqjen. Tani le të shohim sipërkthehet nëkoleksionin tonë të librave.

Nëse do të donim të maksimizonim hapësirën ruajtëse, alternativa jonë më e mirë do të ishte ti mbanin të gjithë librat në kuti, duke i grumbulluar dhe mbushur dhomën. Shtimi i librave të rinj (futja) mund të jetë i thjeshtë, thjesht vendoseni në kutinë e hapur aktualisht, kur të mbushet mbylleni, vendoseni në një cep dhe hapni një të re. Marrja e një libri (heqja) do të ishte një makth. Nëse të gjitha kutitë janë të njëjta, sa herë që duam një libër specifik, do të duhet t'i heqim të gjitha, t'i hapim dhe i heqimtë gjithë librat për të kërkuar. Ndërsa koleksioni ynë rritet, kjo është thjesht e papranueshme!

Një mënyrë për të përmirësuarqasjen e kutisë do të ishte shënimi i tyre me inicialet e autorit. Tani e dimë se duhet të kërkojmë Shekspirin tonë në një nga kutitë e shënuara me 'S' (heqja), që është një përmirësim i madh. Futja është pak më e komplikuar, sepse tani duhet të gjejmë një kuti të duhur me hapësirë ​​të lirë për të vendosur libra të rinj. Do të na duhet edhe pak më shumë hapësirë, sepse tani ka shumë kuti me hapësirë ​​boshe (një për secilën shkronjë).

Por kush i mban librat e tyre në kuti gjithsesi? Ne duam rafte, kështu që koleksioni ynë mund të shihet. Përzierja nëpër kuti është e bezdisshme dhe raftet lejojnë që librat të jenë të arritshëm me prekjen e duarve tona. Natyrisht, pengesa është hapësira e ruajtjes. Për t'i mbajtur të gjithë librat të dukshëm dhe të aksesueshëm, jo ​​vetëm që na duhen shumë rafte, por ato duhet të kenë hapësirë ​​midis tyre. A mund të ndalojmë së paku shqetësimin për futjen dhe heqjen? …Epo, jo.

Edhe një herë renditja e rafteve është shumë e rëndësishme për futjen dhe heqjen. Nëse kemi no organizim, futja është thjesht gjeti i një vendi në raft dhe futja e librit brenda. Nëse planifikojmë t'i renditim librat sipas alfabetit, sa herë që futim një të ri, duhet të përcaktojmë pozicioni i duhur. Në të dyja rastet ka një shkëmbim të kohës: futja e organizimit të më shumë kohë do të thotë më pak kohë për të kërkuar një libër më vonë dhe anasjelltas.

Një tjetër kompromis i rëndësishëm mund të vërehet midis kohësdhe hapësirës së ruajtjes. Nëse kemi rafte të mjaftueshëm për të gjitha shkronjat e alfabetit, ne mund ta bëjmë futjen dhe heqjen shpejt, me koston e hapësirës. Po nëse rafti për shkronjën "D" është plot dhe më duhet të vendos librin e ri të Daniel Dennet që sapo bleva? A mund ta vendos atë në hapësirën e parë në raftin "F" dhe t'i shtyj përpara të gjithë librat e tjerë atje? Nëse e bëni këtë, po krijoni një përjashtim që do të duhet ta mbani mend. Sa më shumë ta bëni këtë, aq më pak të rëndësishme do të jenë shkronjat e rafteve, pasi duhet të supozoni se librat mund të jenë të tejmbushur në raftet e tjera. Imagjinoni çfarë ndodh pasi edhe 'F' të mbushet? Kjo mund të duket si një strategji e mirë afatshkurtër, por pasojat e saj afatgjata mund të minojnë të gjithë organizatën.

Shumë probleme në Shkencën Kompjuterike zgjidhen përmes thjesht organizimittë të dhënave në një mënyrë të zgjuar ose të përshtatshme, siç do të bënim me bibliotekën tonë personale. Kjo përfshin krijimin e algoritmeve, siç u shpjegua në postimin tonë të mëparshëm. Imagjinoni që në vend që të kujdeseni për bibliotekën tuaj, ju keni një asistent shumë të shpejtë dhe të përkushtuar, por ky person e merr gjithçka që thoni fjalë për fjalë, saktësisht dhe me zero sens të përbashkët.Kur largoheni nga një listën e udhëzimeve me detyra dhe rregulla, duhet të mendoni me kujdes për çdo hap. Ju duhet të shpjegoni se si e renditni një listë në mënyrë alfabetike, si duhet të grumbullohen librat, gjithçka. Sasia e librave që mund të ruhen në bibliotekë, sa e rregullt është, sa e lehtë është të gjesh diçka, gjithçka do të varet nga ndikimi afatgjatë i vendimeve tona dhe nga mënyra se si i kemi përshkruar ato tek asistenti ynë.

Komunikimi midis kostove të ruajtjes, kohës së futjes, heqjes dhe renditjes është thelbësor për t'i bërë disa probleme të zgjidhshme. Imagjinoni se sa të dhëna duhet të analizojë Google për të dhënë një rezultat kërkimi në më pak se një sekondë, për miliona njerëz në mbarë botën vazhdimisht. Biblioteka e Google është SHUMË e organizuar me zgjuarsi dhe ata kanë një ushtri asistentësh të udhëzuar mirë.

Deri në këtë pikë jam përpjekur të prezantoj butësisht disa nocione dhe linja pyetjesh që janë thelbësore për shkencën kompjuterike dhe algoritmet. Jemi mësuar të marrim vendime dhe të vlerësojmë ndikimin e tyre në jetën tonë të përditshme. Ne bëjmë plane për ditën, buxhetet dhe listat e detyrave. Këto janë të gjitha algoritme në mënyrën e tyre. Dallimi është se në Shkencën Kompjuterike duhet të fiksohemi pas detajeve, me mikromenaxhimit.

Shpresojmë që pas leximit të këtij postimi të ndiheni pak më intim, ose më mirë rehat me mënyrën se si funksionojnë kompjuterët. Në fund të fundit, është thjesht organizimi i librave! Ka ende disa tema që duhet të mbulojmë që përbëjnë pamjen tonë të madhe përpara se të shkojmë në AI. Në episodet e ardhshme do të jem më pak i paqartë dhe do të kaloj në shembuj më praktikë, numerikë.

Victor Schetinger, PhD në Shkenca Kompjuterike, Bashkëthemelues dhe CTO i Taalink