Pràctica Dilema del Presoner - DTIC - Universitat Pompeu Fabra
Pràctica Dilema del Presoner - DTIC - Universitat Pompeu Fabra
Pràctica Dilema del Presoner - DTIC - Universitat Pompeu Fabra
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Programació II <strong>Pràctica</strong> <strong>Dilema</strong> <strong>del</strong> <strong>Presoner</strong><br />
#Estrategia Nom Autor #Confrontacions Guanyades Perdudes Empat Punts<br />
Estr.<br />
Totals<br />
... ... ... ... ... ... ... ...<br />
... ... ... ... ... ... ... ...<br />
Aquestes dades representen el número de confrontacions realitzades per cada estratègia.<br />
En el cas de implementar únicament les estratègies bàsiques, hi ha un total de 15<br />
possibles confrontacions. Després quantes confrontacions s’han guanyat (contant només<br />
el nombre de punts d’una confrontació concreta contra una estratègia determinada),<br />
quantes s’han perdut, i quantes s’han empatat. Finalment quina és l’acumulació de punts<br />
totals d’una estratègia, com a resultat de totes les confrontacions amb totes les<br />
estratègies.<br />
5.4. Ordenació <strong>del</strong> resultat<br />
La taula que mostra el resultat final ha de estar ordenada descendentment pel número de<br />
punts totals, de forma que aparegui primer la millor estratègia, és a dir, la guanyadora de<br />
la nostra competició.<br />
5.5. Anàlisi de l’eficiència<br />
Per a cada una de les estratègies que programeu heu d’analitzar la seva complexitat<br />
computacional (recordeu que com a mínim cal implementar les cinc estratègies descrites<br />
abans). Per exemple, de les estratègies descrites més amunt, la complexitat de “Segons-<br />
Majoria” és més alta que la de les altres, perquè?<br />
Aquesta anàlisi l’heu de incloure en la memòria de la pràctica.<br />
6. Requeriments Addicionals<br />
1. No podeu fer servir bucles (while, do-while ni for) per aquesta pràctica. Ho heu<br />
de fer tot amb recursivitat. Alguns algorismes són clarament recursius (per<br />
exemple, esbrinar totes les possibles confrontacions entre estratègies), alguns<br />
altres els sabríeu resoldre més fàcilment de forma iterativa, però com veureu tot<br />
algorisme iteratiu es pot escriure també recursivament. Pels objectius d’aquesta<br />
pràctica no hi ha elecció, s’ha de fer recursivament.<br />
2. No us podeu limitar a escriure totes les funcions en un sol fitxer de<br />
implementació (.c)<br />
És obligatori dividir el vostre projecte en fitxers de capçalera o definició (.h),<br />
per una banda, i els fitxers de implementació (.c) per l’altra.<br />
Els fitxers .h han de contenir les definicions de les funcions (nom de la funció, i<br />
<strong>del</strong>s paràmetres) i les estructures de dades. A més a més, heu de posar-hi els<br />
comentaris necessaris per explicar què fa cada funció.<br />
3. La memòria l’heu de gestionar de forma dinàmica. És a dir, si heu de crear<br />
vectors, no podeu suposar cap mida màxima en el moment d’escriure<br />
l’algoritme, sinó que aquesta depèn de l’execució (nombre d’estratègies, nombre<br />
de iteracions, etc).<br />
4. Cal que prepareu una memòria explicant la vostra pràctica. Aquesta<br />
explicació ha de incloure les estratègies utilitzades, amb una descripció <strong>del</strong> seu<br />
funcionament en cas que n’hi hagi alguna més apart de les cinc que s’han descrit<br />
més amunt. També heu de descriure les estructures de dades que heu utilitzat.<br />
Finalment heu de incloure una anàlisi de la complexitat computacional de les<br />
estratègies que heu fet servir.<br />
15 Gener 2007 <strong>Universitat</strong> <strong>Pompeu</strong> <strong>Fabra</strong> 6