Како би ригорозно проучавали рачунање, рачунарски научници користе математичке апстракције, моделе рачунања. Неколико је формулација у употреби, али најчешће испитивана је Турингова машина.[2] Турингова машина се може схватити као лични рачунар опремљен меморијом бесконачног капацитета, иако може меморији приступати у малим дискретним деловима. Информатичари проучавају Турингову машину јер је она једноставна за формулацију и може бити анализирана и коришћена у доказивању резултата јер представља оно што многи сматрају најмоћнијим могућим „разумним“ моделом рачунања.[3] Иако се захтев за меморијом бесконачног капацитета може схватити као нефизикалан, за сваки стварно решен проблем Туринговом машином коришћена меморија ће увек бити коначна,[4] па сваки проблем који реши Турингова машина може решити и персонални рачунар са довољно уграђене меморије.
Гране
Теорија израчунљивости
Теорија израчунљивости се примарно бави питањем је ли проблем уопште решив на рачунару. Проблем заустављања је један од најважнијих резултата у теорији израчунљивости, јер представља пример конкретног проблема којег је и лако формулисати и немогуће решити користећи Турингову машину.[5] Већи је део теорије израчунљивости изграђен око резултата проблема заустављања.
Још један важан корак у теорији израчунљивости је била Рајсова теорема, који наводи да је за сва нетривијална својства парцијалних функција, неизвесно да ли Турингова машина израчунава парцијалне функције са тим својством.[6]
Теорија израчунљивости је уско везана са граном математичке логике званом теорија рекурзије, која отклања ограничење проучавања само модела рачунања који су блиски оним физикално остваривима.[7] Многи математичари и рачунски теоретичари који проучавају теорију рекурзије ће је назвати теоријом израчунљивости. Не постоји стварна разлика између двају поља.
Теорија комплексности
Теорија комплексности разматра не само може ли се проблем уопште решити на рачунару, већ и колико ефиксно може бити решен. Два главна аспекта су посматрана: временска сложеност и просторна сложеност, који респективно представљају број корака потребан да се рачунање обави, те количину меморије потребну за обављање рачунања.
Како би анализирали колико времена и простора дати алгоритам захтева, истраживачи изражавају време и простор захтеван за решавање проблема као функцију улазног проблема. На пример, проналажење неког појединог броја у дугој листи бројева постаје све теже како та листа расте. Ако кажемо да постоји н бројева у листи, тада, уколико листа није предсортирана или на неки начин индексирана, морамо испитати сваки број како бисмо пронашли број који тражимо. Стога кажемо да, како би решио овај проблем, рачунар мора обавити број корака који расте линеарно у односу на величину проблема.
Како би поједноставили овај проблем, истраживачи су прихватили велику О нотацију, која дозвољава поређење функција на начин који осигурава да појединачни аспекти конструкције машине не морају бити разматрани, већ само асимптотско понашање како проблеми постају све већи. Зато се у претходном примеру може рећи да проблем захтева н корака за решавање.
Можда најважнији од свих отворених проблема у рачунарству јесте питање могу ли одређене широке класе проблема означене као НП бити ефикасно решене.
Друге формалне дефиниције рачунања
Осим Турингове машине, користе се и други модели рачунања као што су: ламбда рачун, комбинаторска логика, μ-рекурзивна функција, Марковљев алгоритам, Регистарска машина, П′′,
Рачунање је почетни ламбда израз (или два ако се жели одвојити функција од њеног улаза) плус коначни след ламбда термина, од којих је сваки дедукован из претходног апликацијом бета редукције.
је концепт који има много сличности са -рачуном, али постоје и важне разлике (нпр. комбинатор фиксне тачке Y у комбинаторној логици има нормалну форму, али не и у -рачуну). Комбинаторна је логика развијена са великим амбицијама: разумевање природе парадокса, чињења основна математике економичнијима (концептуално), те елиминисање нотације варијабли (те тако осветљавајући њихову улогу у математици).
рачунање је μ-рекурзивна функција, тј. њен дефинирајући след, било која улазна вредност/вредности те след рекурзивних функција које се појављују у дефинирајућем следу са улазима и излазима. Стога, ако се у дефинирајућем следу рекурзивне функције појављују и , тада се могу појавити термини облика 'g(5)=7' или 'h(3,2)=10'. Сваки унос у овом следу треба бити апликација основне функције или следити из горњих уноса користећи композицију функција, примитивну рекурзију или μ-рекурзију. На пример, ако је , тада да би се појавио 'f(5)=3', горе се морају појавити термини попут 'g(5)=6' i 'h(3,6)=3'. Рачунање терминира само ако коначни термин даје вредност рекурзивне функције примењене на улазе.
је теоретски занимљива идеализација рачунара. Постоји више варијанти. У већини од њих, сваки регистар може да садржи природни број (неограничене величине), док су саме инструкције једноставне (обично тек неколицина њих), па нпр. постоје само декрементирање (комбиновано са условним скоком) и инкрементирање (и заустављање). Недостатак бесконачне (или динамички растуће) спољашње меморије (попут оне у Туринговим машинама) се може шватити као замена њене улоге техникама Геделовог обројавања.[8] Чињеница да сваки регистар садржи природни број допушта могућност представљања сложених конструката (нпр. низа, матрице итд.) одговарајућим великим природним бројем - неједнозначност и представљања и интерпретирања може бити успостављена на основама ових техника заснованих на теорији бројева.
Попут Турингових машина, P′′ користи бесконачну траку симбола (без случајног приступа) и поприлично минималистички скуп инструкција.[9][10] Али ове су инструкције врло различите, те стога, за разлику од Турингових машина, за P′′ није неопходно одржавати различито стање, јер сву функционалност „сличну меморији” може пружити само трака. Уместо преписивања тренутног симбола, може обавити инкрементирање модуларном аритметиком над њим. P′′ такође поседује пар инструкција за циклус, испитујући симбол празнине. Упркос својој минималистичкој природи, постао је родитељски формални језик оствареног и (за забаву) кориштеног програмског језика званог Брејнфак.
Као допуна општих рачунских модела, неки једноставнији рачунски модели су корисни за посебне, ограничене примене. Регуларни изрази, на пример, се користе за специфицирање узорака стринга у многим контекстима, од програмске подршке за канцеларијску продуктивност па до програмских језика. Други формализам математички истоветан регуларним изразима, коначни аутомати, се користи у дизајну електронских кругова и при решавању неких проблема. Контекстно независна граматика се користи приликом спецификације синтаксе програмских језика. Недетерминистички потисни аутомати су други формализам истоветан контекстно независним граматикама. Примитивно рекурзивне функције су поткласа рекурзивних функција.
Различити модели рачунања имају способност обављања различитих задатака. Један начин мерења моћи рачунског модела јесте проучавање класе формалних језика које модел може генерисати - ово води ка Чомскијевој хијерархији језика.[11]
^Rice, Henry Gordon (1953). „Classes of Recursively Enumerable Sets and Their Decision Problems”. Transactions of the American Mathematical Society. American Mathematical Society. 74 (2): 358—366. JSTOR1990888. doi:10.2307/1990888.
^Böhm, C.: "On a family of Turing machines and the related programming language", ICC Bull. 3, 185-194, July 1964.
^Böhm, C. and Jacopini, G.: "Flow diagrams, Turing machines and languages with only two formation rules", CACM 9(5), 1966. (Note: This is the most-cited paper on the structured program theorem.)
Hopcroft, John E.; Jeffrey D. Ullman (2006). Introduction to Automata Theory, Languages, and Computation (3rd изд.). Reading, MA: Addison-Wesley. ISBN978-0-321-45536-9..
Taylor, R. Gregory (1998). Models of Computation. New York: Oxford University Press.
Hartley Rogers, Jr (1987). Theory of Recursive Functions and Effective Computability. MIT Press. ISBN978-0-262-68052-3..
Hein, James L. (1996). Theory of Computation. Sudbury, MA: Jones & Bartlett. ISBN978-0-86720-497-1. A gentle introduction to the field, appropriate for second-year undergraduate computer science students.
Lewis, F. D. (2007). Essentials of theoretical computer science A textbook covering the topics of formal languages, automata and grammars. The emphasis appears to be on presenting an overview of the results and their applications rather than providing proofs of the results.
Davis, Martin; Sigal, Ron; Elaine J. Weyuker (1994). Computability, complexity, and languages: fundamentals of theoretical computer science (2nd изд.). Academic Press. ISBN978-0-12-206382-4.. Covers a wider range of topics than most other introductory books, including program semantics and quantification theory. Aimed at graduate students.