Newsgroup: it.hobby.enigmi
Titolo: ???

Salve a tutti. Qualcuno conosce il seguente enigma e ne conosce la
soluzione? A me pare un vero e proprio mistero...
Ci sono tre oracoli divini, che possiamo chiamare, per esempio A, B, C. Uno
di loro dice sempre e solo il vero, un altro dice sempre e solo il falso e
il terzo dice il vero o il falso in modo completamente, radicalmente
imprevedibile (diciamo, tanto per intendersi, che getta ogni volta
segretamente una moneta e dice il vero se viene croce). Il nostro compito è
di smascherare la vera identità di tutti e tre questi oracoli facendo solo
tre domande che ammettano ciascuna una risposta costituita da un semplice
«sì» o un semplice «no».
Per un verso siamo fortunati, perché gli oracoli capiscono perfettamente
l'italiano, e quindi accetteranno qualsiasi nostra domanda. Per un altro
verso, però, siamo sfortunati, perché ci risponderanno nella loro lingua,
nella quale le parole per il «sì» e per il «no» sono «ja» e «da» e non
sappiamo, purtroppo, quali di questi due suoni divini significa «sì» e quale
significa «no»; come fare? Quali domande rivolgere ai tre oracoli, per
smascherarli?


Non ho controllato il tutto a fondo ma mi pare che questo possa funionare,
fammi sapere se ti torna.
Chiamiamo i tre oracoli A, B e C ed il loro "tipo" V, F e R (random) 
Se si suppone che R tiri una moneta (o equivalente) e poi si comporti
o come V o F nel rispondere alla domanda, proverei con qualcosa del
genere:
Chiedere ad  A
"Se invece di questa domanda ti avessi chiesto se e' piu' probabile
avere una risposta vera da B piuttosto che da C, mi avresti risposto
'ja'"?
se A e' V mi dira "ja" se la "sottodomanda" e' vera  indipendentemente
dal significato di "ja" (se "ja" e' si ovviamente la risposta e' "ja/si"
e se "ja" e no la risposta sara' "ja/no") e dira' "da" se e' falsa.
se A e' F e la "sottodomanda" e' vera , facciamo l'ipotesi che "ja" sia
si allora la sua risposta (falsa) sarebbe stata "da/no" quindi la
risposta alla domanda totale dovrebbe essere 'no' ma mentendomi direbbe
"ja/si". Se "ja" e no allora la "sottorisposta" era "ja/no" e la
risposta alla domanda totale "si" ma mentendomi dira' "ja/no". 
Quindi comunque la risposta sara' "ja" se B e' piu veritiero di C.
Se A e' R e come ho detto si suppone che decida di comportarsi come V o
F in modo random si ricade i uno dei casi precedenti. Il "Se invece di
questa domanda ti avessi chiesto..." appunto dovrebbe assicurare che la
"sottodomanda" e la domanda vengano affrontate allo stesso modo.
Quindi qualsiasi sia A e qualsiasi sia il significato di "ja" riesco a
sapere se B e' piu' veritiero di C. Se rivolgo la stessa domanda a C (
cambiando C in A nella sottodomanda) riesco a sapere se B e' il piu'
veritiero (risposte "ja" "ja") piu' menzognero ("da" "da") o nel mezzo,
(un "ja" ed un "da"). 
La terza domanda a questo punto e' ovvia, nei primi due casi  basta chiedere
a B "se ti avessi chiesto e A e' di tipo R mi avresti risposto "ja"?
(Dato che non si sa cosa vuol dire "ja" bisogna sempre usare questo
trucco). Se la risposta e' "ja" allora i tre oracoli sono A=R B=V e C=F
nel primo caso e A=F B=V e C=R mentre se la risposta e' "da" sarebbero
invertiti i tipi di A e C nei due casi.
Nel terzo caso sappiamo che B e' piu veritiero di C e' piu' falso di A
se le risposte sono state "ja" "da" e viceversa se le risposte sono
state "da" ja" in tutti e due i casi non servono altre domande e i tipi
sono, rispettivamente A=V B=R C=F ed A=F B=R C=V.
Ciao,
     GianPiero

smascherarli?
Soluzione: (spero che ve la caviate con i linguaggi matematici....)
hyp: conf_i configurazione iesima dei tre oracoli nell'ordine di risposta
alle
    domande, con 1 <= i <= 3!  (cioè esistono 3*2*1=6 combinazioni degli
    oracoli), e i <> j se e solo se conf_i <> conf_j; a,b le due possibili
    risposte degli oracoli (di cui vogliamo anche definire la traduzione);
    seq_k sequenza kappesima delle tre risposte degli oracoli, con
    1 <= k <= 2^3 (cioè esistono al massimo 2^3=8 possibili risposte
    per una qualsiasi terna di domande), e k <> z se e solo se seq_k<>seq_z.
tesi: esiste una sequenza di 3 domande da porre agli oracoli per
identificarli
    univocamente.
dimostrazione: se esiste una serie di 3 domande che identifica univocamente
    la conf_i ma degli oracoli allora devono esistere almeno altrettante
    seq_k ime differenti fra loro (o non potrai mai dire conoscendo le loro
    risposte, quale era l'oracolo che ti ha risposto per primo, o per
secondo,
    o per terzo, dato che possono dire soltanto 'a', o 'b'); tutte le
possibili
    seq_k ime sono però soltanto:
    aaa    aab    aba    abb    baa    bab    bba    bbb
    di cui   aaa  e   bbb   non sono accettabili, perchè non si potranno
    mai verificare continuativamente per una stessa conf_i ma (infatti
l'Oracolo C
    ad una stessa domanda può rispondere o 'a' o 'b' a seconda di ...come
    gli gira!); inoltre la conf_i ma e la conf_(8-i) si equivalgono (aab ed
    bba sono diverse nella lingua degli oracoli, ma per noi possono essere
    imprecisabilmente 'vera vera falsa' o 'falsa falsa vera'!). Dato che una
    implicazione del problema generale definisce un assurdo (cioè che non
    esistono 6 differenti seguenze di risposte, per qualunque terzetto di
    domande io mi inventi, tali da corrispondere neanche biunivocamente
    con i 6 possibili ordini di interrogatorio degli oracoli), il problema è
privo
    di soluzione.
    Se poi l'oracolo bugiardo ha il naso di pinocchio....dovevate dirmelo!