Nome
                       
Cognome
                       
Matricola
          
Soluzione esame 12/06/2024
DomandaRisposta
1

Fra i dati che si vuole memorizzare delle persone, c'è il loro introito annuo. I disoccupati non hanno nessun introito. Dato che le persone hanno gli stessi dati anagrafici dei disoccupati ma in più hanno anche l'introito annuo, ha senso realizzare la classe delle persone come Persona extends Disoccupato o no?

Tecnicamente sarebbe possibile: nella classe Disoccupato si inseriscono solo i dati anagrafici, che la classe Persona importa aggiungendovi l'introito annuo. Questo è però un errore metodologico, dato che le persone non sono un sottoinsieme dei disoccupati. Ha senso invece che la classe dei disoccupati venga realizzata come Disoccupato extends Persona.

2

Mostrare un esempio di una sequenza di quattro bit che viene trasmessa con l'aggiunta di un bit di parità, viene ricevuta con un bit di errore che però viene rilevato.

Scegliere una sequenza specifica. Dire qual è il valore del bit di parità. Scegliere un bit che viene ricevuto errato. Mostrare in che modo l'errore viene rilevato.

La sequenza di quattro bit è 0011. Il bit di parità vale 0 se la sequenza contiene un numero pari di 1, come in questo caso. Quindi la sequenza che viene trasmessa è 00110. Viene ricevuta invece la sequenza 00100 che contiene un errore nel quarto bit. Il controllo che viene effettuato in ricezione è che la sequenza abbia un numero pari di uni. Dato che gli uni sono invece in numero dispari, si conclude che la sequenza contiene almeno un errore.

3

Scrivere una funzione Python che verifica se un grafo è K3 o K4.

Il grafo deve contenere tre o quattro nodi e deve essere completo: deve contenere tutti gli archi fra tutti i nodi.

def verificak34(g):
	if len(g.nodi()) != 3 and len(g.nodi()) != 4:
		return False
	for a in g.nodi():
		for b in g.nodi():
			if a != b and not g.arco(a, b):
				return False
	return True
4

Disegnare l'automa che accetta stringhe di caratteri a, b e c che contengono da due a tre caratteri a.

[duetrea.fig]

Lo stato si sposta verso destra a ogni carattere a ricevuto. Dopo due o tre a ricevute si trova nel terzo o quarto stato, i due stati accettanti. Nell'ultimo non ci sono archi uscenti etichettati a, quindi una ulteriore a ricevuta porta al rifiuto della stringa.

5

Disegnare l'automa interno di una macchina di Turing che qualche volta non termina. Spiegare come procede, e perchè non termina.

[nontermina.fig]

Se il primo carattere vale 1, scrive 1 al suo posto e muove la testina a destra. Se il secondo carattere vale 0, scrive 0 al suo posto e muove la testina a destra. Si ritrova quindi esattamente al punto di partenza con lo stesso contenuto del nastro, per cui ripete all'infinito gli stessi passi senza mai raggiungere uno stato accettante o rifiutante.

NOTA: risposte prive di esauriente motivazione (es. i passaggi delle operazioni numeriche) verranno considerate nulle.