La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Un problema Progettare un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito –Ciclo infinito: per esempio, eseguire le.

Presentazioni simili


Presentazione sul tema: "Un problema Progettare un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito –Ciclo infinito: per esempio, eseguire le."— Transcript della presentazione:

1 Un problema Progettare un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito –Ciclo infinito: per esempio, eseguire le istruzioni con numeri 1000, 1001, …, 1010, poi sempre tornare all’istruzione 1000, poi ripetere 1001, …, 1010, poi tornare all’istruzione 1000 … ecc. Supponiamo che un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito esiste –Programma LC(P,x), dove P è un altro programma e x è l’input del programma P –Il risultato di LC(P,x) è “Sì” se, quando P è eseguito su x, fa un ciclo infinito –Altrimenti il risultato di LC(P,x) è “No”

2 Un problema Supponiamo che esiste un programma CD(P): –Calcola LC(P,P) –Se il risultato di LC(P,P) è “Sì”, termina con il risultato “Sì” –Altrimenti, torna al punto del CD(P) dopo il calcolo di LC(P,P) Ans=LC(P,P) Ans? Termina con risultato Ans “No” “Sì” CD(P)

3 Un problema Eseguire CD su se stesso: che cos’è il risultato di CD(CD)? –Se il risultato di LC(CD,CD) è “No”: vuol dire che CD non ha un ciclo infinito con input CD –Poi CD(CD) fa un ciclo infinito (in rosso) –Il risultato di LC è scorretto Ans=LC(P,P) Ans? Termina con risultato Ans “No” “Sì” CD(P)

4 Un problema Eseguire CD su se stesso: che cos’è il risultato di CD(CD)? –Se il risultato di LC(CD,CD) è “Sì”: vuol dire che CD ha un ciclo infinito con input CD –Poi CD(CD) non fa un ciclo infinito (in rosso) –Il risultato di LC è scorretto (di nuovo) Ans=LC(P,P) Ans? Termina con risultato Ans “No” “Sì” CD(P)

5 Un problema Non è possibile trovare un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito Per molti problemi che possono essere descritti formalmente, non possiamo trovare programmi per la loro soluzione Per altri problemi, possiamo trovare programmi per la loro soluzione, ma non programmi efficienti –Programma efficiente: il numero di istruzioni eseguiti è una funzione polinomiale della dimensione del input al programma –Per esempio: non sì può trovare un programma efficiente per trovare l’insieme meno costoso di biglietti aerei per fare un viaggio a n città


Scaricare ppt "Un problema Progettare un programma per calcolare se un qualsiasi altro programma contiene un ciclo infinito –Ciclo infinito: per esempio, eseguire le."

Presentazioni simili


Annunci Google