Decidibilità === ::: warning Potrebbe mancare qualcosa ::: [linee guida di martinenghi](https://martinenghi.faculty.polimi.it/courses/api/Decidib.pdf) ## Decidibilità - un **problema di decisione** è tale se ha due sole possibili risposte: sì o no (1 o 0) - Una domanda/problema **chiuso** è sempre decidibile ## Semidecidibilità - se c'è un algoritmo che dice di sì se la risposta è sì - può andare in loop se la risposta è no ## Insiemi ricorsivi un insieme S è **ricorsivo** o **decidibile** se la sua funzione caratteristica $c_s(x)$ è computabile. $$c_s(x) = \begin{cases} 1 & x \in S \\ 0 & x \notin S \end{cases}$$ ## Insiemi ricorsivamente enumerabili S è RE o semidecidibile se e solo se: - $S = \emptyset$ - S è l'immagine di una funzione $g_S$ totale e computabile - $$S = I_{g_S} = \{x | x = g_s(y), y \in \mathbb{N}\} \implies S = \{ g_s(0),g_s(1),g_s(2),... \}$$ L'equazione qui sopra giustifica il termine enumerazione. la semidecibilità deriva dal fatto che enumerando gli elementi di S, prima o poi si trova x e si riceve una risposta positiva. Per il caso $x \notin S$ non si ha una risposta in tempo finito. ## Teorema sulle funzioni totali Per ogni $S$, se 1. $i \in S$ implica che $f_i$ sia totale 2. per ogni funzione $f$ totale e computabile, esiste un $i \in S$ tale che $f = f_i$ allora S non è ricorsivamente enumerabile Un caso specifico è $S_{tot} = \{x | f_x \text{ è totale }\}$, che soddisfa le ipotesi del teorema e quindi **non** è ricorsivamente enumerabile. ## Condizione necessaria e sufficiente per la RE Un insieme S è ricorsivamente enumerabile se e solo se 1. $S = D_h$ per qualche funzioni parziale computabile $h$; ossia $S = \{x | h(x) \neq \bot \}$ 2. $S = I_g$ per qualche funzione parziale computabile $g$ ## Teorema 1/2 + 1/2 = 1 1. $S$ ricorsivo $\implies$ $S$ ricorsivamente enumerabile 2. $S$ ricorsivo $\iff$ sia $S$ che $S^C$ sono RE ( $S^C = \mathbb{N} - S$) ## Teorema di Rice sia $F$ un insieme di funzioni computabili. L'insieme $S$ degli indici delle TM che calcolano le funzioni di $F$, $S = \{x | f_x \in F\}$ è decidibile se e solo se - $F = \emptyset$ - F è l'insieme di tutte le funzioni computabili ## Problemi risolvibili e irrisolvibili relativi ai linguaggi ### Macchine di Turing - non si può decidere se $x \in L(M)$ per una qualsiasi MT *M* ed una qualsiasi stringa $x \in V_T^*$ - Il problema di *stabilire se un dato linguaggio è vuoto* è indecidibile, se si considerano i linguaggi accettati dalle MT La dimostrazione segue dall'halting problem ### Automi a stati finiti - I linguaggi accettati dagli AF sono *ricorsivi*, cioè il problema dell'appartenenza è decidibile. Per ogni stringa $x$ e per ogni AF *A* è banale decidere se $\delta^*(q,x) \in F$. Basta far funzionare A fino a che $\delta$ non è più definita (caso 1) oppure la lettura di $x$ viene completata(caso 2). - E' decidibile stabilire se, per un dato AF *A*, L(A) = $\emptyset$ ### Automi a pila - I linguaggi accettati dagli AP sono *ricorsivi*