[weet niet zeker of dit hier thuishoort.. maar ook niet waar het anders thuis zou horen ;)]
stel, ik heb een aantal punten, creatief genaamd 1 t/m 6, die op een bepaalde positie staan in een 2d veld. dit zijn de lichtgroene punten op het plaatje. elk van deze punten moet op een van de donkere punten terechtkomen. (hierbij mogen er geen 2 groene punten op 1 donker punt terechtkomen)

nu mogen ze niet zomaar allemaal een willekeurig punt zoeken, de opdracht is om de verdeling te vinden waarbij de afstand die het punt dat de langste afstand moet 'afleggen' kleiner is dan bij welke andere verdeling dan ook
het correcte resultaat wordt dan:

dit klinkt een beetje vaag wellicht, dus bij wijze van uitleg: stel dat punt 1 niet naar het linksonderste, maar naar het middenonderste punt was gegaan. hierdoor zou bijv punt 3 daar niet meer terecht kunnen, die zou dan juist naar de linksonderste 'base' moeten. de afstand die 3 hierdoor moet afleggen wordt groter dan de afstand die 1 (samen met 2 de langste reiziger) moet afleggen in het 'correcte' plaatje, dus is deze oplossing niet goed.
als er meerdere oplossingen zijn die voldoen aan de hoofdvoorwaarde, dan moet degene worden gekozen die de kleinste cumulatieve afstand heeft (alle puntreisjes opgeteld). immers, anders zouden 4 en 5 in mijn voorbeeld ook elkaars targets kunnen kiezen, ondanks dat dat onnodig langere reisjes voor ze oplevert.
nu het daadwerkelijke probleem: hoe programmeer ik dit? (qua algoritme/pseudocode/principe) na flink wat peinzen kom ik er niet uit
enige manier die deze oplossing geeft die ik kan verzinnen is brute-force alle mogelijkheden uitproberen..
..en dat is natuurlijk niet de bedoeling
*edit: voor de overdadigheid: ik zoek een oplossing die bij welk een begindistributie (qua posities) van groene puntjes dan ook werkt, niet een die alleen voor dit voorbeeld werkt
stel, ik heb een aantal punten, creatief genaamd 1 t/m 6, die op een bepaalde positie staan in een 2d veld. dit zijn de lichtgroene punten op het plaatje. elk van deze punten moet op een van de donkere punten terechtkomen. (hierbij mogen er geen 2 groene punten op 1 donker punt terechtkomen)

nu mogen ze niet zomaar allemaal een willekeurig punt zoeken, de opdracht is om de verdeling te vinden waarbij de afstand die het punt dat de langste afstand moet 'afleggen' kleiner is dan bij welke andere verdeling dan ook
het correcte resultaat wordt dan:

dit klinkt een beetje vaag wellicht, dus bij wijze van uitleg: stel dat punt 1 niet naar het linksonderste, maar naar het middenonderste punt was gegaan. hierdoor zou bijv punt 3 daar niet meer terecht kunnen, die zou dan juist naar de linksonderste 'base' moeten. de afstand die 3 hierdoor moet afleggen wordt groter dan de afstand die 1 (samen met 2 de langste reiziger) moet afleggen in het 'correcte' plaatje, dus is deze oplossing niet goed.
als er meerdere oplossingen zijn die voldoen aan de hoofdvoorwaarde, dan moet degene worden gekozen die de kleinste cumulatieve afstand heeft (alle puntreisjes opgeteld). immers, anders zouden 4 en 5 in mijn voorbeeld ook elkaars targets kunnen kiezen, ondanks dat dat onnodig langere reisjes voor ze oplevert.
nu het daadwerkelijke probleem: hoe programmeer ik dit? (qua algoritme/pseudocode/principe) na flink wat peinzen kom ik er niet uit
enige manier die deze oplossing geeft die ik kan verzinnen is brute-force alle mogelijkheden uitproberen..
..en dat is natuurlijk niet de bedoeling
*edit: voor de overdadigheid: ik zoek een oplossing die bij welk een begindistributie (qua posities) van groene puntjes dan ook werkt, niet een die alleen voor dit voorbeeld werkt
[ Voor 14% gewijzigd door Verwijderd op 02-11-2010 17:51 ]