Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

[Esercizio]gioco della moneta truccata


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 6 risposta/e

#1
|system88|

|system88|

    Moderatore globale

  • Moderatore
  • 4133 Messaggi:

Vi voglio proporre la soluzione che ho adottato per risolvere il problema assegnato dal professore ed anche la relativa analogia che, secondo me, può essere fatta con la teoria dell'informazione! 

Sono ben graditi pareri di ogni sorta, purchè costruttivi e/o soluzioni alternative!

 

 

Abbiamo 4 monete: A B C D, una è sicuramente falsa e pesa o più o meno rispetto alle altre 3. Abbiamo una moneta di test E che sappiamo essere sicuramente vera.

Trovare la moneta falsa nel minor numero di passaggi possibile e dire se è più leggera o pesante rispetto alle monete originali.

Abbiamo, inoltre, a disposizione una bilancia che può dare i seguenti valori:
 

- piatti equilibrati

-piatto dx più pesante

-piatto sx più pesante

 

La soluzione la spoilero così se qualcuno non vuole vederla può farne a meno!

Spoiler




Esistono solo due modi per scrivere un programma senza errori.
Ma e' solo il terzo modo quello che funziona realmente.

#2
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:

Forse la si può fare sempre con soli 2 passi, ma la domanda è: si possono pesare due monete per piatto o solo una? :D

 

Spoiler


#3
|system88|

|system88|

    Moderatore globale

  • Moderatore
  • 4133 Messaggi:

Ci avevo pensato anche io, però non so se è concesso pesare due monete per volta... ci troviamo, comunque, sul numero minimo!


Esistono solo due modi per scrivere un programma senza errori.
Ma e' solo il terzo modo quello che funziona realmente.

#4
D

D

    Administrator

  • Amministratore
  • 1000032 Messaggi:

Gli algoritmi che sono riuscito a tirare fuori sono due, ed in ogni caso il primo non funziona completamente.

Il primo 

 
if(A==B)
{

if(A==C)
{
return D;
}
else
{
return C;
}

}else{

if (A==C)
{
return B;
}
else
{
return A;
}

}

Con questa versione dell'algoritmo eseguo solamente due pesate nel caso peggiore, ma nel caso in cui la moneta falsata è la D non riesco a dire se essa sia più pesante o meno. In tale versione inoltre non uso la moneta equilibrata che porta un tasso di informazione nullo (è deterministica)

 

Nell'altro caso invece 

 
if((a+b)==(d+e))
return c;
else if((a+c)==(d+e)
return b;
else if((a==e)
return d; 
else
return a

In questo caso qui l'idea è:

1) Creo due coppie di elementi ed in una c'è necessariamente la moneta equilibrata. Se si verifica l'evento bilancia equilibrata, ho beccato la moneta, altrimenti no. Rieseguo la pesata accoppiando due delle tre monete rimanenti con le due che so essere equilibrate. Se ripesando ho nuovamente l'equilibrio allora è sicuramente la moneta che non ho considerato ad essere falsata. Altrimenti al risultato della pesata posso ottenere due risultati: se il lato a sx si abbassa o è perchè in quel lato c'è la moneta falsata ed è più pesante oppure è nel lato a dx che abbiamo una moneta più leggera. Ovviamente il risultato si può leggere al contrario. A questo punto, tenendo conto del risultato confronto una delle due con l'equilibrata: se sono uguali so dire che la falsa è l'altra e so anche dire se lo è di più o di meno. Altrimenti so farlo ugualmente.

Non riesco però a concretizzare perchè in questo caso non sappiamo quale siano le probabilità legate alle varie monete ne possiamo supporlo perchè facendolo in qualche modo caratterizziamo completamente lo spazio.


Sono laureato, non studio più ad Unisa e non mi occupo più di r0x. Contattate StudentIngegneria per qualsiasi problema.


#5
|system88|

|system88|

    Moderatore globale

  • Moderatore
  • 4133 Messaggi:

credo sia legittimo, però, ipotizzare una sorgente equiprobabile, e diciamo che questa supposizione è avvalorata dal fatto che nessuno di noi riesce a scendere al di sotto di 2 passaggi che rappresenterebbe proprio l'entropia della sorgente con 4 simboli equiprobabili! 

Prova a rifare il ragionamento tenendo in conto questa supposizione e vedi che ti esce


Esistono solo due modi per scrivere un programma senza errori.
Ma e' solo il terzo modo quello che funziona realmente.

#6
D

D

    Administrator

  • Amministratore
  • 1000032 Messaggi:

Io credo che come ho detto dipende fondamentalmente da quale sia la cardinalità del nostro alfabeto. Se usiamo la moneta equilibrata gli elementi sono 5 e dunque servono 3 pesate per ottenere la risposta. Nel caso in cui invece non la usiamo, come si evince dal primo algoritmo, allora ne bastano due, con l'unica particolarità che nel caso peggiore di tutte non riesco a determinare la natura dell'ultima (sia essa più pesante o più leggera). Secondo me il ragionamento che bisogna fare è diverso: imporre che la moneta E ha probabilità 1 (e quindi entropia 0) e considerare il nostro spazio composto da 4 elementi di cui 3 con probabilità p/4 e uno con probabilità (1-3/4*p) e partire da questo per formalizzare matematicamente la cosa.


Sono laureato, non studio più ad Unisa e non mi occupo più di r0x. Contattate StudentIngegneria per qualsiasi problema.


#7
|system88|

|system88|

    Moderatore globale

  • Moderatore
  • 4133 Messaggi:

che si debba considerare una cardinalità pari a 4 perchè la moneta E è deterministica, credo, sia fuori discussione! Resta, quindi, il dubbio sul fatto che si possa o meno asserire che la sorgente sia equiprobabile ed anche sul modo di pesare le monete! Una per piatto o a gruppi... Vediamo se esce fuori qualche altra soluzione e/o considerazione in merito altrimenti aspettiamo giovedì!


Esistono solo due modi per scrivere un programma senza errori.
Ma e' solo il terzo modo quello che funziona realmente.




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi