Apskaičiuojama funkcija skaičiavimo sudėtingumo teorijos kontekste reiškia funkciją, kurią galima efektyviai apskaičiuoti naudojant algoritmą. Tai yra pagrindinė kompiuterių mokslo srities sąvoka ir atlieka svarbų vaidmenį suprantant skaičiavimo ribas.
Norėdami apibrėžti apskaičiuojamą funkciją, turime sukurti formalią sistemą, kuri leistų mums samprotauti apie skaičiavimo modelių galimybes ir apribojimus. Viena iš tokių sistemų yra Tiuringo mašina, kurią 1936 m. pristatė Alanas Turingas. Tiuringo mašina yra abstraktus matematinis modelis, susidedantis iš juostos, padalytos į langelius, skaitymo-rašymo galvutės ir būsenų rinkinio. Įrenginys veikia nuskaitydamas simbolį dabartiniame langelyje, pereidamas į naują būseną, pagrįstą dabartine būsena ir simboliu, ir pakeisdamas simbolį dabartiniame langelyje. Jis taip pat gali perkelti skaitymo ir rašymo galvutę vienu langeliu į kairę arba dešinę.
Turingo mašinų kontekste apskaičiuojama funkcija apibrėžiama kaip funkcija, kuriai egzistuoja Tiuringo mašina, kuri, gavusi bet kokią įvestį, sustabdo ir sukuria teisingą tos įvesties išvestį. Kitaip tariant, funkcija yra apskaičiuojama, jei yra algoritmas, galintis apskaičiuoti jos reikšmę bet kokiai įvesties įvesties atveju. Ši sąvoka yra glaudžiai susijusi su sprendžiamumo sąvoka, kuri reiškia galimybę nustatyti, ar tam tikra įvestis atitinka tam tikrą savybę.
Apskaičiuojamų funkcijų sąvoka gali būti toliau formalizuota naudojant laiko sudėtingumo sąvoką. Laiko sudėtingumas matuoja laiką, kurio algoritmui reikia problemai išspręsti, kaip įvesties dydžio funkciją. Laikoma, kad funkcija yra apskaičiuojama daugianario laiku, jei yra Tiuringo mašina, galinti apskaičiuoti funkciją keliais žingsniais, kurie yra daugianario įvesties dydžio. Apskaičiuojamos daugianario funkcijos laikomos efektyviomis, nes jų veikimo laikas didėja daugiausiai polinomiškai atsižvelgiant į įvesties dydį.
Norėdami iliustruoti apskaičiuojamų funkcijų sampratą, panagrinėkime funkciją, kuri nustato, ar tam tikras skaičius yra pirminis. Ši funkcija paima įvestį n ir grąžina teisingą, jei n yra pirminė, o kitu atveju klaidinga. Pirmumo testavimo funkcija yra apskaičiuojama, nes yra algoritmas, pvz., Eratosteno sietas, galintis nustatyti bet kurio nurodyto skaičiaus pirmumą.
Priešingai, apsvarstykite funkciją, kuri nustato, ar tam tikra programa sustoja tam tikroje įvestyje. Ši funkcija, žinoma kaip sustabdymo problema, nėra apskaičiuojama. Tai įrodė Alanas Turingas 1936 m., naudodamas techniką, žinomą kaip įstrižainė. Turingo įrodymas parodė, kad negali būti algoritmo, kuris bet kuriai programai ir įvesties atveju galėtų nuspręsti, ar programa sustos, ar veiks visam laikui.
Apskaičiuojama funkcija skaičiavimo sudėtingumo teorijos kontekste reiškia funkciją, kurią galima efektyviai apskaičiuoti naudojant algoritmą. Tai pagrindinė kompiuterių mokslo sąvoka ir glaudžiai susijusi su sprendžiamumo sąvoka. Skaičiuojamųjų funkcijų samprata formalizuota naudojant Tiuringo mašinas ir laiko sudėtingumą. Nors daugelis funkcijų yra apskaičiuojamos, yra ir funkcijų, tokių kaip stabdymo problema, kurių negalima apskaičiuoti.
Kiti naujausi klausimai ir atsakymai apie Skaičiuojamos funkcijos:
- Ką reiškia, kad skirtingi Turingo mašinų variantai yra lygiaverčiai skaičiavimo galimybėmis?
- Paaiškinkite ryšį tarp apskaičiuojamos funkcijos ir Turingo mašinos, galinčios ją apskaičiuoti, egzistavimo.
- Kokią reikšmę turi Turingo mašina, kuri visada sustoja skaičiuodama skaičiuojamą funkciją?
- Ar Tiuringo mašiną galima modifikuoti taip, kad ji visada priimtų funkciją? Paaiškinkite kodėl ar ne.
- Kaip Tiuringo mašina apskaičiuoja funkciją ir koks yra įvesties ir išvesties juostų vaidmuo?