Avatar billede liv1987 Nybegynder
09. januar 2008 - 15:28 Der er 5 kommentarer

opgave hjælp!

er der nogen som kan hjælpe mig med denne her opgave! Bare forklare hvordan jeg kan gribe det an.

Eksempel Givet en delvist opbygget tur, så er omkostningen ved at indsætte byen j mellem byerne i og k givet ved
c(i; j; k) = d(i; j) + d(j; k) - d(i; k)

Heuristikken nærmeste-indsættelse består så i at
1. Vælg en startby.
2. Gentag indtil der ikke er flere ikke-besøgte byer
(a) Vælg den by og det indsættelsespunkt med den mindste omkostning
(b) Udfør indsættelsen
Som udgangspunkt skal du bruge by 1 som startby.


Opgave: Implementer nærmeste-indsættelse heuristikken. Vis køretiderne og de turlængder du finder
for de 5 store instanser i en tabel.
Avatar billede winners79 Nybegynder
09. januar 2008 - 17:31 #1
Uden at sige for meget, så handler det vel om at bruge en Graph
Avatar billede Slettet bruger
10. januar 2008 - 04:10 #2
Ligner da en simpel O(n^2) heuristik for TSP?

Du har en permutation P af byer, der repræsenterer en rute og en mængde V af ikke besøgte byer?

Udvælg en startby f.eks. by 1.
Lav en while løkke til punkt 2. Slut kriteriet er når V er tom. Ellers skal du bare for hver iteration vælge den by i V som minimerer c(i;j;k)...
Avatar billede Slettet bruger
10. januar 2008 - 04:16 #3
Du skal selvfølgelig nok også opdatere startbyen, med den nyligt valgte by fra V i hver iteration :?
Avatar billede Slettet bruger
10. januar 2008 - 04:18 #4
Eller nej .. .det er vist ikke nødvendigt. Mon ikke jeg bare skulle gå i seng :s
Avatar billede Slettet bruger
10. januar 2008 - 11:45 #5
Efter at have sovet på det er jeg kommet til at tænke på at algoritmen jo nok kører i tid O(n^3) i stedet. Så for at gøre det kort:

Input V - mængde af byer som ikke er besøgt
Output P - en permutation af byerne V

1) Flyt n fra V til P. Dette er start byen.
2) Hvis V er tom returner P.
3) For hver kant (i, k) fra P og for hver knude j fra V vælg det sæt der minimerer c(i; j; k).
4) Fjern det valgte j fra V og indsæt det mellem i og k, i P
5) Gentag fra punkt 2

I hvert gennemløb flyttes én by. Der tager tid O(n). Derudover ses på alle kanter i P og byer i V. Hvis der er x kanter i P er der n-x byer i V hvorfor dette skridt tager tid x*(n-x) = O(n^2). Hele algoritmen tager så tid O(n^3).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester