Utente:AmaliaSantocchio/sandbox

Wikibooks, manuali e libri di testo liberi.

Tempo e Spazio nella Computazione[modifica]

La teoria della complessità[modifica]

La teoria della complessità analizza le risorse necessarie a risolvere un problema; le più importanti sono:

  • tempo, cioè il numero di passaggi in un calcolo prima che la macchina si fermi;
  • spazio, cioè la capacità di immagazzinare dati di un calcolatore e, in un macchina di Turing, il numero di celle visitate.

Un altro approccio consiste nella misura della complessità di un oggetto in base alla grandezza del più piccolo programma che è in grado di descriverlo.

Notazioni tecniche[modifica]

Definiamo:

  • un alfabeto finito
  • il numero finito di elementi di
  • Problema un sottoinsieme di
  • Istanza un elemento di
  • Grandezza di un istanza , e la indichiamo con , la sua lunghezza
  • una macchina di Turing
  • una funzione da in ; la funzione è calcolabile da se per ogni stringa appartenente ad , si arresta sul valore
  • problema risolvibile se esiste un tale da riuscire a calcolare , la funzione caratteristica di

Computabilità[modifica]

I problemi risolvibili possono essere classificati in base al tempo e allo spazio richiesti per la loro risoluzione. Sia una funzione calcolabile, una stringa ed una macchina di Turing in grado di calcolarla; si dice che è calcolabile in un tempo dopo un certo numero di passaggi indicato con e calcolato moltiplicando una costante e . Quindi è una funzione calcolabile se esiste una macchina di Turing tale che data una stringa si fermi dopo riquadri sul suo nastro.

Sia un problema; si dice che esso sia risolvibile:

  • in un tempo se la sua funzione caratteristica è calcolabile in un tempo ;
  • in uno spazio se la sua funzione caratteristica è calcolabile in un tempo .

Esempi[modifica]

Siano un alfabeto composto da due simboli , l'insieme finito delle stringhe composte di e , il problema definito lasciando le stringhe palindrome di ; questo problema è risolvibile in un tempo controllando che la prima e l'ultima lettera siano uguali ed eliminandole fino ad azzerare le lettere o lasciarne solo una. Un algoritmo necessita di un numero di passaggi pari a per risolvere il problema, per qualche .

La tabella della verità è risolvibile in uno spazio e nel tempo .

Problemi risolvibili in un tempo polinomiale[modifica]

La classe dei problemi risolvibili in un tempo polinomiale è una tra le più complesse.

Una funzione è calcolabile in un tempo polinomiale se esiste un polinomio per cui è calcolabile in un tempo .

un problema è risolvibile in un tempo polinomiale se se la sua funzione caratteristica è calcolabile in un tempo polinomiale.