Teorijska računarska nauka

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

Teorijska računarska nauka Teorijska računarska nauka, ili TCS, podskup je opšte računarske nauke i matematike koji se fokusira na više matematematičkih i računarskih tema, uključujući i teoriju računanja.

Umetničko predstavljanje Turingove mašine. Turingova mašina koristi se za modelovanje opštih računarskih uređaja. TCS pokriva široku lepezu tema, uključujući algoritme, računarsku složenost, paralelno distributivno računanje, probabilističko računanje, kvantno računanje, teoriju automatizacije, teoriju informacija, kriptografiju, program semantike i strukture podataka, mašinsko učenje, računarsku biologiju, računsku ekonomiju, geometriju, računarsku teoriju brojeva i algebru. Rad na ovom području često se razlikuje po naglasku na matematičkoj tehnici i strogosti.

Na ovoj listi ACM-ov časopis Transakcije o teoriji računanja uključuje teoriju kodiranja i teoriju računarskog učenja, kao i teorijske aspekte računarske nauke u područjima kao što su baze podataka, pronalaženje informacija, ekonomski modeli i mreže. Uprkos tom širokom opsegu, "teorijski ljudi" u računarskoj nauci se identifikuju kao različiti od "primenjenih ljudi". Prvi se karakterišu kao da rade "(temeljniju)" nauku "koja leži u oblasti računalstva." Drugii "primenjeni ljudi" sugerišu da je nemoguće odvojiti teoriju i primenu. To znači da takozvani "teorijski ljudi" redovno koriste eksperimentalne nauke u manje teorijskim oblastima kao što je istraživanje softverskih sistema. To takođe znači da postoji više koordiniranja, nego međusobno isključive konkurencije između teorije i primene.


Istorija računarstva[уреди]

Dok su logičko zaključivanje i matematički dokaz postojali ranije, Kurt Godel je 1931. dokazao svojom teoremom nepotpunosti da postoje osnovna ograničenja u vezi s tim da se izjave mogu dokazati ili odbaciti.

Ovi događaji doveli su do savremenog proučavanja logike i računanja, a zapravo i oblasti teorijske računarske nauke u celini. Teorija informacija je dodata matematičkoj teoriji komunikacije Clarie Shannon iz 1948. godine. U istoj deceniji, Donnald Hebb predstavio je matematički model učenja u mozgu. Uz montažu bioloških podataka koji podupiru ovu hipotezu sa nekim izmenama, uspostavljena su polja neuronskih mreža i paralelna distribuirana obrada. Godine 1971. Stephen Cook i nezavisno radeći Leonid Levin dokazali su da postoje praktični relevantni problemi koji su NP-komletni - značajan rezultat računarske teorije složenosti. S razvojemm kvantne mehanike na početku 20. veka došlo je do koncepcije da se matematička operacija može izvesti na celoj talasoj funkciji čestica. Drugim rečima, mogla bi se istovremeno računati funkcije na više stanja. To je dovelo do koncepta kvantnog računara u drugoj polovini 20. veka koji je započeo 1990. kada je Peter Shor pokazao da se takve metode mogu koristiti za faktor velikih brojeva u polinomijalnom vremenu, koji bi ukoliko se implementira, učinio najsavremeniji kriptografski sistem javnog ključa beskorisno nesigurnim.

Savremena teorijska istraživanja računarstva je zasnovana na ovim osnovnim događajima, ali obuhvata i mnoge druge matematičke i interdisciplinarne probleme koji su postavljeni, kao što je prikazano u nastavku:

P→Q


P = NP Matematička logika Teorija automatizma Teorija brojeve Teorija grafova Kompatibilnost Teorija složenosti

GNITIRW-TERCES Г ├ x : Int Kriptografija Teorija tipa Teotija kategorije Računarska geometrija Kombinatorna optimizacija Kvantna komp. teotija

Algoritam[уреди]

Algoritam je korak-po-korak postupak rešavanja. Algoritmi se koriste za obračun, obradu podataka i automatsko zaključivanje.

Algoritam je efikasna metoda koja se izražava kao konačna lista jasno definisanih instrukcija za izračunavanje funkcije. Polazeći od početnog stanja i početnog unosa (možda praznog), instrukcije opisuju računanje koje, kada se izvrši, prolazi kroz konačan broj dobro definisanih sukcesivnih stanja, a na kraju proizvodi "izlaz" i završava u konačnom završnom stanju. Prelaz iz jedneog stanja u drugo nije nužno determinističan; neki algoritmi, poznati kao randomizirani algoritmi, uključuju slučajni ulaz.

Struktura podataka[уреди]

Struktura podataka je poseban način organizovanja podataka u računaru kako bi se mogli efikasno koristiti.

Različite vrste struktura podataka odgovaraju različitim vrstama aplikacija, a neke su vrlo specijalizovane za određene zadatke. Na primer, baze podataka koriste indekse B-stabla za male procente prikupljanja podataka i kompajlera i koriste dinamičke tabele sa rešenjima kao tabele potražnje.

Računarska teorija složenosti Računarska teorija složenosti je grana teorije računarstva koja se fokusira na klasifikovanje računarskih problema u skladu sa njihovom težinom i povezivanje klasa jednih sa drugima. Problem se smatra nelogično teškim ako njegovo rešenje zahteva značajne resurse, bez obzira na algoritam koji se koristi. Teorija formalizuje ovu intuiciju, uvođenjem matematičkih modele računanja za proučavanje tih problema i kvantovanja količine resursa potrebnih za njihovo rešavanje, kao što su vreme i skladištenje. Takođe se koriste i druge mere složenosti, kao što su količina komunikacije (koristi se u komunikacijskoj složenosti), broj ulaza u sklopu (koristi se u složenosti sklopa) i broj procesora (koristi se u paralelnom računarstvu).


Distributivni račun[уреди]

Distribuirani proračun Uređivanje Distributivna računarska proučavanja distribuiraju sisteme. Distributivni sistem je softverski sistem u kojem komponente koje se nalaze na umreženim računarima komuniciraju i koordiniraju svoje postupke prenošenjem poruka. Komponente međusobno komuniciraju kako bi postigle zajednički cilj. Tri značajne karakteristike distributivnih sistema su: konkurentnost komponenti, nedostatak globalnog sata i nezavisni otkaz komponenata. Primeri distribuiranih sistema variraju od SOA-baziranih sistema preko masivnih multiplayer online do peer-to-peer aplikacija.

Paralelno računanje[уреди]

Paralelni obračun Uređivanje Paralelno računanje je oblik računanja u kojem se istovremeno izvodi više operacija. Funkcioniše na principu da se veliki problemi često mogu podeliti na manje, a zatim se paralelno rešavati. Postoji nekoliko različitih oblika paralelnog računanja: bitni nivo, nivo instrukcija, podaci i paralelizam zadataka. Kako je potrošnja energije (i time i zagrevanje) računara postalo zabrinjavajuće poslednjih godina, paralelno računanje postalo je dominantna paradigma u računarskoj arhitekturi, uglavnom u obliku višejezgrenih procesora. Paralelni računarski programi su teži za pisnje od sekvencijalnih, jer uvode nekoliko novih klasa potencijalnih softverskih grešaka. Komunikacija i sinhronizacija između različitih potprograma obično su neke od najvećih prepreka za dobijanje dobrih performansi paralelnog programa.

Najveće moguće ubrzanje jednog programa kao rezultat paralelizacije poznat je kao Amdahlov zakon.


Veoma velika integracija[уреди]

Veoma velika integracija (VLSI) je proces stvaranja integralnog kola (IC) kombinujući hilade tranzistora u jedan čip. VLSI je započeo sedamdesetih godina kada su se razvile složene poluprovodničke i komunikacijske tehnologije. Mikroprocesor je VLSI uređaj. Elektronsko kolo se može sastojati od procesora, RAM memorije, ROM memorije i dr. VLSI tehnologija omogićava da se sve ove tehnologije spakuju u jedan čip.

Mašinsko učenje[уреди]

Učenje stroja Uređivanj Mašinsko učenje je naučna disciplina koja se bavi izradom i proučavanjem algoritama koji mogu učiti iz podataka. Mašinsko učenje može se smatrati delom informatičke nauke i statistike. Ono ima snažne veze s veštačkom inteligencijom i optimizacijom, koje daju metode, teoriju i primenu na terenu. Primeri aplikacija uključuju filtriranje neželjenih poruka, optičko prepoznavanje znakova (OCR), pretraživače i računarski vid. Mašinsko učenje ponekad se povezuje sa rudarenjem podataka, iako se to više fokusira na istraživačku analizu podataka. Računalna biologija Uređivanje Računarska biologija Računarska biologija uključuje razvoj i primenu analitičkih i teorijskih metoda, matematičkog modeliranja i računarske simulacijske tehnike za proučavanje bioloških, bihevioralnih i društvenih sistema. Područje je široko definisano i uključuje osnove računarstva, primenjene matematike, animacije, statistike, biohemije, hemije, biofizike, molekularne biologije, genetike, genomike, ekologije, evolucije, anatomije, neurologije i vizualizacije.


Računarska geometrija[уреди]

Računarska geometrija je grana računarskih nauka posvećena proučavanju algoritama koji se mogu izraziti u vidu geometrije. Neki čisto geometrijski problemi proizlaze iz proučavanja računarskih geometrijskih algoritama, a takvi se problemi takođe smatraju delom računarske geometrije. Dok je moderna računarska geometrija nedavno razvijena, klasicna geometrija je jedna od najstarijih oblasti računarstva, sa istorijom koja se proteže do antike. Drevna preteča je sanskrtska rasprava Shulba Sutra, ili "Pravila akorda", knjiga algoritama napisanih u 800. pne.

Druge važne primene računarske geometrije uključuju robotiku (probleme pri planiranju ividljivosti), geografski informacioni sistemi (geometrijsko lociranje i pretraživanje, planiranje rute), dizajn integralnih kola (dizajn i verifikacija IC geometrije), računarsko inženjerstvo (CAE) (mrežna generacija), računarska vizija (3D rekonstrukcija).

Teorija informacija[уреди]

Teorija informacija je grana primenjene matematike, elektrotehnike i računarske nauke koja uključuje kvantovanje informacija. Teoriju informacija razvio je Claude E. Shannon kako bi pronašao osnovne granice na operacijama obrade signala, kao što su kompresija podataka, pouzdano čuvanje i komuniciranje podataka. Primena osnovnih tema teorije informacija uklučuje kompresiju podataka bez gubitaka (npr.ZIP datoteke), kompresiju gubitka podataka (npr.MP3 i JPEG) i kodiranje kanala (npr. Za Digital Subscriber Line (DSL). Njen je uticaj bio presudan za uspeh Voyagerovih misija u svemir, izum kompakt diska, mobilnih telefona, razvoj Interneta, proučavanje lingvistike i ljudske percepcije, razumevanje crnih rupa, i brojna druga područja. Važne oblasti teorije informacija su izvorno kodiranje, kodiranje kanala, algoritamska teorija složenosti, algoritamska teorija informacija, informacijsko-teorijska sigurnost i mere informacija.


Kriptografija[уреди]

Kriptografija je praksa i proučavanje tehnika sigurne komunikacije u prisustvu trećih strana (nazvanih protivnicima). Grubo govoreći, radi se o konstruirsanju i analiziranju protokola koji prevladavaju uticaj protivnika i koji se odnose na različite aspekte informacijske sigurnosti kao što su poverljivost podataka, integritet podataka, računarske lozinke, tačnost i neizvršenje. Savremena kriptografija se prepliće sa matematikom, računarstvom i elektrotehnikom. Primena kriptografije uključuje ATM kartice, i elektronsku trgovinu.

Kvantno računanje[уреди]

Kvantni izračun Uređivanj Kvantni računar je računarski sistem koji za obradu podataka direktno koristi kvantno-mehaničke pojave, kao što su superpozicija i zaplet. Dok digitalni računari zahtevaju da se podaci kodiraju u binarne cifre (bitove), od kojih je svaka uvek u jednoj od dva određena stanja (0 ili 1), kvantno računanje koristi qubits (kvantne bitove), koji mogu biti u superpozicijama stanja. Teorijski model je kvantna Turingova masina, poznat kao univerzalni kvantni računar. Područje kvantnog računanja prvi put su uveli Jurij Manin 1980. i Richard Feynman 1982Od 2014. godine, kvantno računanje je još uvek u povoju, ali izvedeni su eksperimenti u kojima su kvantne računarske operacije izvršene na vrlo malom broju qubita. Mnoge nacionalne vlade i agencije za finansiranje podržavaju kvantno računarsko istraživanje kao što je kriptoanaliza za razvoj kvantnih računara, kako za civilnu tako i za nacionalnu bezbedbost.

Informaciona složenost[уреди]

Informaciona kompleksnost (IBC) proučava optimalne algoritme i računarsku složenost za kontinuirane probleme. IBC proučava integraciju putanje, parcijalne diferencijalne jednačine, sisteme običnih diferencijalnih jednalina, nelinearne jednačine, integralne jednačine i vrlo visoku dimenzionalnu integraciju.

Računalna teorija brojeva Uređivanje Računarska teorija brojeva Računarska teorija brojeva, takođe poznata kao algoritamska teorija brojeva, je proučavanje algoritama za izvođenje brojnih teorijskih proračuna. Najpoznatiji problem u ovoj oblasti je faktorizacija celog broja.

Računarska algebra[уреди]

Simbolički proračun Uređivanje Računarska algebra, koja se naziva i simboličko računanje ili algebarsko računanje, je naučna oblast koja se odnosi na proučavanje i razvoj algoritama i softvera za rad sa matematičkim izrazima i drugim matematičkim objektima).

Semantika programa[уреди]

U teoriji programskog jezika, semantika je područje koje se bavi matematičkim istraživanjem značenja programskih jezika. To čini tako što ocenjuje značenje sintaktički pravilnih nizova definisanih određenim programskim jezikom. U slučaju ako bi procena bila da su nizovi sintaktički nepravilni, rezultat bi bio ne-izračunavanje.


Formalne metode[уреди]

Formalne metode predstavljaju posebnu tehniku baziranu na matematici a služe za specifikaciju, razvoj i verifikaciju softverskih i hardverskih sistema. Upotreba formalnih metoda za dizajn softvera i hardvera motivisano je očekivanjem da, kao i kod drugih inženjerskih disciplina, obavljanje odgovarajuće matematičke analize može doprineti pouzdanosti i kvalitetu dizajna.

Teorija automata[уреди]

Teorija automata je proučavanje apstraktnih mašina i automatizma, kao i računarskih problema koji se mogu rešiti koristeči ih.

Teorija kodiranja[уреди]

Teorija kodiranja je proučavanje osobina kodova i njihovih sposobnosti za određenu aplikaciju. Kodovi se koriste za kompresiju podataka, kriptografiju, ispravljanje grešaka, a od nedavno i kod mrežnog kodiranja. Kodovi se proučavaju u raznim naučnim disciplinama, kao što su teorija informacija, elektrotehnika, matematika i , radi oblikovanja efikasnih i pouzdanih metoda prenosa podataka.

Teorija mašinskog učenja[уреди]

Teorija računalnog učenja Uređivanje Teorijski rezultati mašinskog učenja uglavnom se bave tipom induktivnog učenja pod nazivom nadgledano učenje. U nadgledranom učenju algoritmu se daju uzorci koji su označeni na neki koristan način. Na primer, uzorci mogu biti opisi gljiva, a nalepnice mogu biti jesu ili nisu jestive. Algoritam uzima ove prethodno označene uzorke i koristi ih da indukuje klasifikator. Cilj nadgledanog učenja za algoritam je optimizacija nekog izvršavanja kao što je smanjenje broja grešaka na novim uzorcima.