En l'àmbit de la teoria de la complexitat computacional, la relació entre una funció computable i l'existència d'una màquina de Turing que la pugui calcular és de fonamental importància. Per entendre aquesta relació, primer hem de definir què és una funció computable i com es relaciona amb les màquines de Turing.
Una funció computable, també coneguda com a funció recursiva, és una funció matemàtica que es pot calcular mitjançant un algorisme. És una funció per a la qual existeix una màquina de Turing que, donada qualsevol entrada, s'aturarà i produirà la sortida correcta per a aquesta entrada. En altres paraules, una funció computable és aquella que pot ser calculada eficaçment per una màquina de Turing.
Les màquines de Turing, en canvi, són dispositius informàtics teòrics que van ser introduïts per Alan Turing l'any 1936. Consten d'una cinta infinita dividida en cel·les, un capçal de lectura/escriptura que es pot moure al llarg de la cinta i un conjunt d'estats que governen el comportament de la màquina. La màquina llegeix els símbols de la cinta, realitza determinades accions en funció del seu estat actual i del símbol que llegeix i passa a un nou estat. Aquest procés continua fins que la màquina arriba a un estat d'aturada.
La relació entre una funció computable i l'existència d'una màquina de Turing que la pugui calcular es basa en el concepte de Turing-completitud. Es diu que una màquina de Turing és completa si pot simular qualsevol altra màquina de Turing. En altres paraules, una màquina completa de Turing pot calcular qualsevol funció que pugui ser calculada per qualsevol altra màquina de Turing.
Donada aquesta definició, podem dir que si una funció és computable, aleshores existeix una màquina de Turing que la pot calcular. Per contra, si una màquina de Turing pot calcular una funció, aleshores aquesta funció és computable. Aquesta relació es basa en el fet que les màquines de Turing són dispositius informàtics universals capaços de simular qualsevol altra màquina de Turing.
Per il·lustrar aquesta relació, considerem un exemple. Suposem que tenim una funció computable que suma dos nombres. Podem definir una màquina de Turing que pren dues entrades, mou el capçal de lectura/escriptura al primer número de la cinta, hi afegeix el segon número i dóna el resultat. Aquesta màquina de Turing pot calcular la funció d'addició, demostrant la relació entre una funció computable i l'existència d'una màquina de Turing que la pugui calcular.
La relació entre una funció computable i l'existència d'una màquina de Turing que la pugui calcular es basa en el concepte de Turing-completitud. Una funció computable és aquella que pot ser calculada eficaçment per una màquina de Turing, i una màquina de Turing és completa de Turing si pot simular qualsevol altra màquina de Turing. Per tant, si una funció és computable, existeix una màquina de Turing que la pot calcular, i viceversa.
Altres preguntes i respostes recents sobre Funcions computables:
- Què significa que les diferents variacions de les màquines de Turing siguin equivalents en capacitat informàtica?
- Quina és la importància que una màquina de Turing s'aturi sempre quan calcula una funció computable?
- Es pot modificar una màquina de Turing per acceptar sempre una funció? Explica per què o per què no.
- Com calcula una funció una màquina de Turing i quin és el paper de les cintes d'entrada i de sortida?
- Què és una funció computable en el context de la teoria de la complexitat computacional i com es defineix?