Bertel Lund Hansen
2010-06-20 23:08:40 UTC
Hej alle
For sjovs skyld har jeg lavet et progranm der kan holde styr på
VM i fodbold. Det er relativt banalt.
Jeg har indført en farvning af holdene. Jeg er endt med 6 mulige
farver. Vi kan bruge bogstaver hvis det bliver nødvendigt at
betegne dem:
A Sikker 1.- eller 2.-plads, færdig med alle kampe
B Sikker 1.-plads, ikke færdig
C Sikker 2.-plads, ikke færdig
D Uafgjort, færdig
E Uafgjort, ikke færdig
F Ude uanset om færdig
Jeg har lavet en uperfekt algoritme hvor jeg for hvert hold
beregner bestcase og worstcase ved at oprette to arrays til
sortering. Begge arrays indeholder subarrays på formen:
array (score,måldiff,holdnr) // et array pr. hold.
I bestcase lægges holdenes opnåede værdier, men bedste
hypotetiske resultat for det hold hvis værdi skal findes.
Sorteringspositionen angiver den bedste placering som holdet har
mulighed for.
I worstcase lægges de bedst mulige værdier for holdene, men kun
opnåede resultater for det aktuelle hold.
Som hypotetisk målscore for en uspillet kamp bruger jeg 3-0.
Eksempel:
Hold Kampe V U T Mål Point
Uruguay: 2 1 1 0 3-0 4
Mexico: 2 1 1 0 3-1 4
Frankrig: 2 0 1 1 0-2 1
Sydafrika: 2 0 1 1 1-4 1
Der er 2 kampe tilbage i puljen.
Jeg dropper holdnummeret i eksempel-arrayene.
Bedst mulige placering for Uruguay:
Uruguay (4+3,3+3) // hypotetiske værdier. Resten er de opnåede
Mexico (4,2)
Frankrig (1,-2)
Sydafrika (1,-3)
Sorteret ligger de så
Uruguay(7,6)
Mexico(4,2)
Frankrig(1,-2)
Sydafrika(1,-3)
bestcase(Uruguay) = 1. plads
======================
Værst mulige placering for Uruguay:
Uruguay (4,3) // opnåede værdier. Resten er hypotetiske
Mexico (4+3,2+3)
Frankrig (1+3,-2+3)
Sydafrika (1+3,-3+3)
Sorteret ligger de så
Mexico(7,5)
Uruguay(4,3)
Frankrig(4,1)
Sydafrika(4,0)
worstcase(Uruguay) = 2. plads
======================
Min algoritme giver i worstcase alle andre hold maksimumscore
selv om den enes maksimum jo svarer den andens minimum (der er en
taber hvis der er en vinder).
Og så spørgsmålet:
Hvordan skal en algoritme skrues sammen hvis den skal være helt
præcis - altså tage hensyn til antallet af resterende kampe samt
til at hvis en får maksimum, må en anden nødvendigvis få minimum?
For sjovs skyld har jeg lavet et progranm der kan holde styr på
VM i fodbold. Det er relativt banalt.
Jeg har indført en farvning af holdene. Jeg er endt med 6 mulige
farver. Vi kan bruge bogstaver hvis det bliver nødvendigt at
betegne dem:
A Sikker 1.- eller 2.-plads, færdig med alle kampe
B Sikker 1.-plads, ikke færdig
C Sikker 2.-plads, ikke færdig
D Uafgjort, færdig
E Uafgjort, ikke færdig
F Ude uanset om færdig
Jeg har lavet en uperfekt algoritme hvor jeg for hvert hold
beregner bestcase og worstcase ved at oprette to arrays til
sortering. Begge arrays indeholder subarrays på formen:
array (score,måldiff,holdnr) // et array pr. hold.
I bestcase lægges holdenes opnåede værdier, men bedste
hypotetiske resultat for det hold hvis værdi skal findes.
Sorteringspositionen angiver den bedste placering som holdet har
mulighed for.
I worstcase lægges de bedst mulige værdier for holdene, men kun
opnåede resultater for det aktuelle hold.
Som hypotetisk målscore for en uspillet kamp bruger jeg 3-0.
Eksempel:
Hold Kampe V U T Mål Point
Uruguay: 2 1 1 0 3-0 4
Mexico: 2 1 1 0 3-1 4
Frankrig: 2 0 1 1 0-2 1
Sydafrika: 2 0 1 1 1-4 1
Der er 2 kampe tilbage i puljen.
Jeg dropper holdnummeret i eksempel-arrayene.
Bedst mulige placering for Uruguay:
Uruguay (4+3,3+3) // hypotetiske værdier. Resten er de opnåede
Mexico (4,2)
Frankrig (1,-2)
Sydafrika (1,-3)
Sorteret ligger de så
Uruguay(7,6)
Mexico(4,2)
Frankrig(1,-2)
Sydafrika(1,-3)
bestcase(Uruguay) = 1. plads
======================
Værst mulige placering for Uruguay:
Uruguay (4,3) // opnåede værdier. Resten er hypotetiske
Mexico (4+3,2+3)
Frankrig (1+3,-2+3)
Sydafrika (1+3,-3+3)
Sorteret ligger de så
Mexico(7,5)
Uruguay(4,3)
Frankrig(4,1)
Sydafrika(4,0)
worstcase(Uruguay) = 2. plads
======================
Min algoritme giver i worstcase alle andre hold maksimumscore
selv om den enes maksimum jo svarer den andens minimum (der er en
taber hvis der er en vinder).
Og så spørgsmålet:
Hvordan skal en algoritme skrues sammen hvis den skal være helt
præcis - altså tage hensyn til antallet af resterende kampe samt
til at hvis en får maksimum, må en anden nødvendigvis få minimum?
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/