cerca
Informatica Teorica - Teoremi della gerarchia
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.IT-TeoremiDellaGerarchia History

Hide minor edits - Show changes to output

Changed line 28 from:
Per qualunque funzione spazio costruibile f:N->, esiste un linguaggio A decidibile in uno spazio O(f(n)) ma non in uno spazio o(f(n)).
to:
Per qualunque funzione spazio costruibile f:N->N, esiste un linguaggio A decidibile in uno spazio O(f(n)) ma non in uno spazio o(f(n)).
Changed line 68 from:
Per qualunque funzione tempo costruibile f:N->, esiste un linguaggio A decidibile in un tempo O(t(n)) ma non in uno spazio o(t(n)/log t(n)).
to:
Per qualunque funzione tempo costruibile f:N->N, esiste un linguaggio A decidibile in un tempo O(t(n)) ma non in uno spazio o(t(n)/log t(n)).
Changed line 7 from:
%center% %sottotitolo% Appunti & Dimostrazioni del 19 Maggio
to:
%center% %sottotitolo% Appunti & Dimostrazioni del 26 Maggio
Added lines 1-81:
(:title Informatica Teorica - Teoremi della gerarchia:)
[[Torna alla pagina di Informatica Teorica-> Informatica Teorica]]
----

%titolo%''':: Informatica Teorica - Teoremi della gerarchia ::'''

%center% %sottotitolo% Appunti & Dimostrazioni del 19 Maggio

!!Teoremi della gerarchia
I '''teoremi della gerarchia''' confermano una banale intuizione: più tempo e spazio hanno a disposizione le MdT, e più il numero dei problemi che riescono a risolvere aumenta. Si parla di "gerarchie" perché questi teoremi dimostrano che non tutte le classi di tempo e spazio complessità sono uguali, ma alcune sono più ampie di altre.

Diamo due definizioni, rispettivamente nello spazio e nel tempo:

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Una funzione f:N->N, dove f(n) è almeno O(logn), è chiamata '''spazio costruibile''' se la funzione che mappa la stringa 1'^n^' alla rappresentazione binaria di f(n) è computabile in O(f(n)) spazio.
>><<

Ciò significa che f è spazio costruibile se esiste una MdT M di spazio O(f(n)) che termina sempre con la rappresentazione binaria di f(n) quando ha in input una stringa 1'^n^'.

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Una funzione t:N->N, dove t(n) è almeno O(n*logn), è chiamata '''tempo costruibile''' se la funzione che mappa la stringa 1'^n^' alla rappresentazione binaria di t(n) è computabile in tempo O(t(n)).
>><<

Similmente a prima, la funzione t è tempo costruibile se esiste una MdT M di tempo O(t(n)) che termina sempre con la rappresentazione binaria di t(n) quando ha in input una stringa 1'^n^'.

!!Teorema 1 - sulla gerarchia nello spazio
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Per qualunque funzione spazio costruibile f:N->, esiste un linguaggio A decidibile in uno spazio O(f(n)) ma non in uno spazio o(f(n)).
>><<

'''Cenni di dimostrazione'''

Per la nostra dimostrazione introdurremo un algoritmo D che decide il linguaggio A in O(f(n)) spazio, e un algoritmo M che decide un qualsiasi linguaggio B in o(f(n)) spazio. Il decisore D dovrà essere perciò costruito in modo da garantire che A sia diverso da un qualunque B. Vediamo come.

Ad entrambi i decisori viene dato in pasto lo stesso ingresso, che consiste nella descrizione di M seguita da un 1 e da un certo numero di 0, ovvero: [@w=<M>10*@]. In linea di principio, se M riesce a terminare entro il limite di spazio o(f(n)), allora D deve rifiutare per rimarcare il fatto che accetta linguaggi differenti dall'altro; e viceversa. La prima cosa che dovrà fare D sarà quindi calcolare lo spazio all'interno del quale risolvere il problema, poi verificare che l'ingresso w sia nel formato corretto, e infine fare il running di M. Ultimo accorgimento: poiché D è un decisore bisogna dare garanzia che termini, ma dato che M potrebbe andare in loop fissiamo un numero massimo di passi (proporzionale a 2'^o(f(n))^') entro cui D deve dare una risposta. Perciò il decisore arriverà a uno stato finale solo se impiega al più 2'^f(n)^' iterazioni.

>>left bgcolor=#fbf3ff width=auto border='2px solid #cccccc' padding=5px<<
D = "su ingresso w:
# sia n la lunghezza di w;
# calcola f(n) usando spazio-costruibilità. Se nei passi successivi si usa spazio maggiore di quello calcolato, allora RIFIUTA (perché stiamo andando oltre il limite consentito);
# se w non è nella forma <M>10'^*^' per una MdT M, allora RIFIUTA;
# simula M su w e conta il numero di passi. Se il contatore è maggiore di 2'^f(n)^', allora RIFIUTA (perché stiamo andando in loop);
# se M accetta, allora RIFIUTA; altrimenti ACCETTA."
>><<

Per grazia ricevuta (dalla Trucco), possiamo affermare senza ulteriori dimostrazioni o spiegazioni che l'algoritmo appena descritto ci garantisce che se il linguaggio è riconosciuto in O(f(n)) allora non lo è in o(f(n)), dimostrando così il teorema.

!!!Corollari al Teorema 1
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Per qualsiasi coppia di funzioni f'_1_',f'_2_':N->N, dove f'_1_'(n) è o(f'_2_'(n)) ed f'_2_' è spazio costruibile,
%center%Attach:IT-corolSC1a.gif
>><<

Grazie a questo corollario possiamo individuare diverse classi di spazio complessità. Ad esempio, possiamo dimostrare che una funzione n'^c^' è spazio costruibile per ogni numero naturale c. Quindi per ogni coppia di numeri naturali c'_1_'<c'_2_' possiamo dire che:
%center%Attach:IT-corolSC1b.gif

Con un minimo di sforzo aggiuntivo si può mostrare che n'^c^' è spazio costruibile anche per ogni numero razionale c>0.

Se osserviamo che tra due numeri razionali c'_1_' e c'_2_' si possono sempre trovare due numeri reali e'_1_'<e'_2_' tali che e'_1_'<c'_1_'<c'_2_'<e'_2_', otteniamo un secondo corollario al teorema 1 che introduce una nuova gerarchia all'interno della classe PSPACE.

>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Per qualsiasi coppia di numeri reali 0&#8804;e'_1_'&#8804;e'_2_',
%center%Attach:IT-corolSC2.gif
>><<

!!Teorema 2 - sulla gerarchia nel tempo
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Per qualunque funzione tempo costruibile f:N->, esiste un linguaggio A decidibile in un tempo O(t(n)) ma non in uno spazio o(t(n)/log t(n)).
>><<

!!!Corollario al Teorema 2
>>left bgcolor=#f5f9fc width=auto border='2px solid #cccccc' padding=5px<<
Per qualsiasi coppia di funzioni t'_1_',t'_2_':N->N, dove t'_1_'(n) è o(t'_2_'(n))/log t'_2_'(n)) e t'_2_' è tempo costruibile,
%center%Attach:IT-corolTC.gif
>><<

Del Teorema 2 e rispettivo corollario non sono richieste dimostrazioni.\\
Andate in pace.

----
[[Torna alla pagina di Informatica Teorica-> Informatica Teorica]]