Soluții corecte: Ionel Vasile Pit-Rada, Jean Henry Berevoescu, Zoltan Szabo, Nicu Scutaru , Aurel Ionescu . Demonstratii complete am primit de la primii 3 rezolvitori.

 

Ionel Vasile Pit-Rada:

Pentru o lista de 5 valori distincte exista 5!=120 permutari distincte din care exact una verifica ordinea crescatoare. Daca algoritmul cu cantariri  s-ar termina dupa k pasi, atunci putem distinge doar 2^k cazuri, deoarece la fiecare cantarire putem avea doar 2 posibilitati. Trebuia sa avem 2^k>=120, deci k>=7. Acesta este teoretic cel mai mic numar posibil de cantariri prin care se poate rezolva problema, dar oare se poate rezolva problema cu 7 cantariri? Putem demonstra prin prezentarea unui algoritm corect care sa rezolve prin cel mult 7 cantariri.

Prezentarea algoritmului:
Cele 5 monede le etichetam cu etichetele m1,m2,m3,m4,m5.
Vom utiliza la prima etapa 2 cantariri, (m1,m2) si (m3,m4),
Astfel am determinat ordinea corecta a greutatilor monedelor m1,m2 si respectiv m3,m4.
Reetichetam cele patru monede cu literele a,b,c,d astfel incat sa avem a<b si c<d.
Efectuam cantarirea (b,d).
(1)Daca b<d, atunci avem a<b<d si c<d
(2)Daca b>d, atunci avem c<d<b si a<b si vom face reetichetarea a<->c, b<->d, si dupa reetichetare obtinem tot a<b<d si c<d
Moneda m5 o reetichetam cu e.
Dupa 3 cantariri avem situatia a<b<d si c<d si despre moneda e inca nu stim nimic.
Cu ajutorul cautarii binare vom gasi din cel mult 2 cantariri pozitia corecta a monedei e printre monedele ordonate a<b<d. Comparam (b,e), apoi daca b<e comparam (d,e), iar daca e<b comparam (a,e). 
Astfel am obtinut una dintre 4 ordonari posibile e<a<b<d, a<e<b<d, a<b<e<d si a<b<d<e. 
Deoarece avem ca c<d, atunci pozitia corecta a monedei c se va afla in una dintre secventele e<a<b, a<e<b, a<b<e sau a<b si astfel, tot cu cautare binara, putem determina pozitia corecta a monedei c in cel mult 2 cantariri. In total se folosesc deci cel mult 7 cantariri.

 

Zoltan Szabo:

Fie M o mulțime cu n elemente distincte.  Pentru  a identifica un element x al mulțimii, putem să punem întrebări de forma „x aparține submultimii SM?”. Răspunsul poate fi DA sau NU, și în funcție deacesta putem identifica una dintre submulțimile SM sau M-SM care conține elementul și, implicit, putem continua căutarea prin descompunerea submulțimii respective în alte două submulțimi. Astfel, dacă numărul de elemente card(M)=2k, atunci prin înjumătățire repetată, cu k=log2(n) întrebări putem identifica elementul x.

Dacă extindem proprietatea pentru orice număr natural n, atunci există un număr natural k, astfel ca 2k-1< n <= 2kiar cazul cel mai nefavorabil se poate rezolva din încercări.

 Reflectând la cele spuse mai sus și la problema noastră, vedem că cele 5 monede se pot aranja în 5!=1*2*3*4*5=120 de moduri distincte. Întrucât 64 = 2< 120 <= 27= 128, dacă reușim să găsim întrebări care să descompună optim mulțimea noastră în alte două submulțimi, atunci problema necesită minim 7 încercări. Deci nu există soluție cu 6 încercări.

În continuare voi prezenta o soluție ce conține 7 întrebări (cântăriri).

Cântărirea 1. Punem pe balanță câte o monedă și identificăm moneda mai grea, pa care o notăm cu A, iar pe cealaltă o notăm cu B. Secvența AB citită de la stânga la dreapta conține cele două monede în ordine descrescătoare.

Cântărirea 2. Punem pe balanță câte o monedă dintre cele rămase și identificăm moneda mai grea, pa care o notăm cu C, iar pe cealaltă o notăm cu D. Secvența  CD citită de la stânga la dreapta conține cele două monede în ordine descrescătoare.

A cincea monedă o vom nota cu X. Cunoaștem următoarele secvențe: AB, CD și X

În cazul în care vrem să generăm cazurile posibile a celor 4 monede A,B,C,D în ordine descrescătoare, păstrând proprietățile de mai sus vom identifica 6 cazuri distincte.

ABCD, ACBD, ACDB, CABD, CADB, CDAB

În fiecare din aceste cazuri moneda X se poate insera în 5 poziții diferite, de exemplu pentru primul caz obținem: ABCDX, ABCXD, ABXCD, AXBCD, XABCD

Deci mai avem în total 6*5=30 de cazuri. În continuare vom prezenta un tabel cu ultimele 7 întrebări. Fiecare întrebare se va pune condiționat de răspunsul primit cu un pas anterior, deci rezultatul poate fi obținut cu ajutorul următorului tabel: