mercoledì 20 luglio 2016

Quesito con la Susi n. 934

Gianni e Susi sono a passeggio intorno ad una palazzina — quelle romantique! Ad un certo punto sentono un rumore di vetri infranti e decidono di non farsi gli affari loro: svoltato l'angolo vedono, proprio di fronte alla finestra rotta, una banda di quattro ragazzini armati di fionda.

Uno di loro è, evidentemente, il colpevole, e Susi e Gianni vorrebbero scoprire quale. Forse è la palazzina della nonna di Susi, oppure sono solo dei bravi cittadini desiderosi di evitare che menti tanto giovani credano che rompere finestre sia un divertimento legittimo. Si pagano gli errori così come le marachelle!

I quattro ragazzini hanno i loro nomi stampati sulle magliette (comunissimo in quel quartiere): Alfio, Biagio, Carlo e Dino.

Del serrato interrogatorio che Susi e Gianni hanno fatto noi sappiamo solo che ciascun ragazzino accusa un altro di essere “bugiardo”. Il che ci fa pensare che tutti si siano dichiarati innocenti; ipotizziamo anche che tutti sappiano chi sia il colpevole, ma invece di additarlo1 preferiscano fare il gioco di Gianni. E questo ci porta ad un tremendo sospetto: che Gianni abbia pagato i ragazzini per fare quella messinscena e mettere alla prova ancora una volta le doti della sua Susi!

Ma vediamo cosa dicono i pargoli.

Alfio e Carlo dicono che il bugiardo è Biagio.

Biagio dice che il bugiardo è Carlo.

Infine Dino dice che a mentire è Alfio.

Gianni sa che con queste informazioni l'unica cosa che si può sapere è quanti di loro non sono bugiardi. Quindi il quesito è questo: Quanti ragazzini non sono bugiardi?

Signori, fate il vostro gioco e trovate la soluzione!2 Anche se, per essere pignoli, ci sarebbe da fare qualche altro pensiero…3

Digressione

Questo “indovinello” è vecchio ed è stato reso ancora più popolare dal film Labyrinth.

Ci sono due porte, una conduce a morte certa e l'altra al castello che è al centro del labirinto. Per sapere quale sia la porta giusta, la protagonista può fare una e una sola domanda a uno dei due (quattro?) guardiani. Ma c'è un ma: uno di loro mente sempre, l'altro dice sempre la verità.

Dunque, qual è la domanda per conoscere con certezza quale sia la porta giusta (o quella sbagliata, ché fa lo stesso)?

La protagonista (Sarah) è sveglia e perciò sceglie un guardiano e gli fa:

Answer yes or no. Would he tell me that this door leads to the castle?

Naturalmente he è l'altro guardiano e this door è la porta dietro al guardiano a cui si è rivolta, ma potrebbe benissimo essere l'altra porta, non è importante.

La risposta è “yes” e perciò Sarah sceglie l'altra porta e spiega anche perché meglio di quanto potrei fare io.

Noi abbiamo determinato il numero di bugiardi e anche che, in base alle affermazioni fatte dai ragazzini, ci sono solo due combinazioni possibili di bugiardi.

Cosa possiamo scoprire di interessante con una sola domanda? Purtroppo non abbiamo due porte di cui una “giusta” e una “sbagliata”, bensì 4 ragazzini, di cui 1 “giusto” (il colpevole) e 3 “sbagliati”.

(In realtà ho aggiunto questa sezione per allungare il brodo!)

Soluzione informatica

Come ormai avete capito la strada più ovvia (che è anche, spesso e volentieri, la peggiore o la meno interessante) è quella di cercare le soluzioni adatte controllando tutte quelle potenziali e scartando quelle che non soddisfano quanto il problema ci rende noto.

C'è poco da dire: supponiamo che Alfio, Biagio, Carlo e Dino dicano tutti la verità… poi supponiamo che Alfio menta e gli altri no, poi che Algio e Biagio mentano e gli altri no… Ogni volta verifichiamo che quanto il problema ci dice sia compatibile con la nostra supposizione. Se troviamo un'incongruenza, scartiamo la soluzione. Altrimenti, quella trovata è veramente una soluzione.

Il controllo viene fatto così: se A dice la verità, chi ha additato come bugiardo deve essere bugiardo davvero, e nello stesso tempo chi accusa A di essere bugiardo deve essere un bugiardo; se invece A mente, allora chi lo accusa di essere un bugiardo non deve essere un mentitore, e colui che viene accusato da A di essere un bugiardo deve essere uno che dice la verità.

Il programmaccio in C (C99 per essere precisi) trova

Alfio lies
Biagio is honest
Carlo lies
Dino is honest

Alfio is honest
Biagio lies
Carlo is honest
Dino lies

Il che ci dà la risposta cercata: 2 ragazzini mentono, 2 dicono la verità.

Il programmaccio:


  1. Ai tre innocenti non conviene mentire, per cui additerebbero tutti lo stesso ragazzino, il colpevole, e questo sarebbe l'unico ad additare qualcun altro e dire che gli altri mentono… Se fossero tutti solidali, nessuno additerebbe nessuno, e nessuno accuserebbe un altro di mentire: su che cosa, e a che pro? La tipica minaccia “nessun colpevole, tutti colpevoli” basterebbe per far cantare gli innocenti che troverebbero ingiusto essere puniti per qualcosa che non hanno fatto. Potrebbero decidere di subire la punizione solo se pensassero di poter ottenere dal colpevole una ricompensa che la renda accettabile. Naturalmente la situazione è solo un pretesto per il quesito ed è necessaria, come al solito, una provvidenziale sospensione dell'incredulità. Per dare un senso alle accuse di essere bugiardo è necessario immaginare che tutti si siano dichiarati innocenti e che tutti, pur non volendo additare il colpevole chiaramente, decidano di dire chi sta mentendo e chi no… Ma ognuno calandosi nella parte di quello che mente sempre o che non mente mai… Un altro dettaglio inverosimile… Ma è un gioco e perciò giochiamo.

  2. Supponiamo che l'accusa di essere bugiardo si riferisca proprio al fatto di essere bugiardi. Allora procediamo così: supponiamo che Alfio non menta. Allora deve essere vero che Biagio è un bugiardo. Se è vero che Biagio è un bugiardo, allora Carlo non mente. Infine Dino, per via dell'ipotesi di partenza, sta mentendo. Quindi abbiamo 2 bugiardi (Biagio e Dino). Ora supponiamo invece che Alfio menta: non è vero che Biagio è un bugiardo. Di conseguenza anche Carlo sta mentendo, mentre Biagio dice il vero (infatti Carlo sta mentendo) e Dino pure, per l'ipotesi fatta prima. Abbiamo di nuovo 2 bugiardi (Alfio e Carlo). Potete verificare facilmente che arriviamo alle stesse conclusioni se partiamo da un altro ragazzo, per esempio da Dino. In sostanza le affermazioni sono compatibili solo finché i bugiardi sono le coppie indicate. La risposta è perciò questa: ci sono due ragazzino che non sono bugiardi. La chiave sono Biagio e Carlo che si accusano a vicenda rendendo così impossibile che siano tutti e due bugiardi o tutte e due onesti.

  3. A me viene da dire subito subito che l'accusa “bugiardo” dovrebbe riferirsi alla dichiarazione di innocenza: abbiamo ipotizzato che tutti i ragazzini si siano dichiarati innocenti. Sappiamo però che c'è un colpevole e quindi sicuramente c'è almeno un bugiardo, il colpevole. Ha mentito sul fatto di essere innocente, ma questo non lo obbliga a mentire su chi stia mentendo accusando un altro (non lui!) di essere bugiardo… di aver mentito sul fatto di essere innocente. Il gioco non vuole questo, ovviamente, ma è bene tenerlo a mente nel caso ci dovessimo trovare in una situazione reale (cosa? quando?…): la risposta dipende dalla domanda e “sei bugiardo” è un modo breve per dire che hai mentito su qualcosa, non certo che menti sempre su tutto! Invece di incastrare logicamente le affermazioni, provate ad ipotizzare il colpevole e immaginare che l'accusa «X è un bugiardo» si riferisca all'innocenza (X ha mentito sul fatto di essere innocente). Cioè in pratica immaginate la seguente situazione. Susi chiede ad Alfio: sei stato tu a rompere il vetro? Alfio risponde: no, non sono stato io. Susi fa la stessa domanda a Biagio, Carlo e Dino, e tutti rispondono allo stesso modo. Allora Susi chiede: chi di voi è il bugiardo? Perché Susi sa che c'è un solo colpevole, e quindi un solo bambino che ha mentito dichiarandosi innocente. È a questo punto che Alfio accusa Biagio di essere il bugiardo, dunque il colpevole. Carlo fa lo stesso e accusa di nuovo Biagio. Biagio non ci sta e dice che il bugiardo, cioè il colpevole, è Carlo. Fin qui, tutto torna: Alfio e Carlo si sono dichiarati innocenti, e se Biagio è il colpevole hanno detto il vero. Biagio invece ha mentito, e continua a mentire quando dice che il bugiardo è Carlo. Torna. Però arriva Dino, che ha detto il vero quando si è dichiarato innocente ma ora mente accusando Alfio invece di Biagio. In questo frangente Dino mente, e così abbiamo due bugiardi, cioè Dino e Biagio. Gli altri due, Alfio e Carlo, hanno detto la verità sia dichiarandosi innocenti sia additando Biagio. Questo risultato è lo stesso trovato al primo livello, cioè osservando solo la coerenza logica degli asserti «X è un bugiardo». Ora supponiamo di prendere per buona l'accusa di Biagio: è Carlo il colpevole — e quindi quello che ha mentito dichiarandosi innocente. Carlo gli rimanda indietro l'accusa e quindi mente due volte. Se Carlo è colpevole, Alfio non ha mentito dichiarandosi innocente, ma mente accusando Biagio di essere il bugiardo (cioè il colpevole). Abbiamo già due bugiardi. Che dire di Dino? Quando dice che Alfio è un bugiardo si riferisce all'accusa che Alfio sta facendo a Biagio, oppure al fatto che Alfio si sia dichiarato innocente? Nel primo caso, Dino, veramente innocente, non sta mentendo: sta dicendo che Alfio mente sul fatto che il bugiardo sia Biagio. Quindi dice il vero e abbiamo due bugiardi (Alfio e Carlo che accusa ingiustamente Biagio) e due che stanno dicendo il vero. Tuttavia abbiamo usato un'interpretazione ad hoc per Dino. Se interpretassimo il suo «Alfio è un bugiardo» come «Alfio ha mentito dicendo di essere innocente», allora dovremmo dire che anche Alfio mente in questo frangente. Avremmo tre bugiardi e un solo bambino che dice la verità sia sul fatto di essere lui l'innocente, sia su chi ha detto di esserlo e non lo è. Dunque con questo approccio abbiamo un risultato che dipende dall'interpretazione. Perciò diciamo che non è l'approccio giusto. (Fate da voi il caso in cui il colpevole sia Dino e verificate che non mi sia perso…)

Nessun commento:

Posta un commento

Sii educato, costruisci con cura le frasi, rifletti prima di pubblicare, evita parolacce e offese dirette, non uscire dal tema, cerca di non omettere la punteggiatura, evita errori ortografici, rileggi quel che hai scritto.