Avatar billede trp79 Nybegynder
13. april 2004 - 21:03 Der er 10 kommentarer og
2 løsninger

Hjælp til algoritme

Hejsa
Jeg mangler en algoritme/metode til at udregne den korteste (i km) rute.

Jeg har afstandende mellem x antal firmaer.
Der er ikke altid lige langt fra a til b, som b til a, fx pga. ensrettede veje mv.
Ruten starter altid fra det samme sted - og slutter også dette sted.

Er der nogen der har en ide til, hvordan man finder ud af det på smartest mulig vis?

Stil gerne spørgsmål, hvis jeg mangler at give oplysninger - jeg er dog formentlig først ved en pc igen i morgen aften.


Mvh
Torben
Avatar billede retry Nybegynder
13. april 2004 - 21:06 #1
Avatar billede viciodk Praktikant
13. april 2004 - 21:10 #2
Vil du finde den samlet set korteste rute hvis en bil skal besøge alle firmaerne og så vende tilbage til udgangspunktet? Man kan bevise, at der ikke findes nogen effektiv algoritme for dette, da det er et såkaldt NP-komplet problem som omtales som den meget kendte trading salesman problemstilling.
Avatar billede viciodk Praktikant
13. april 2004 - 21:14 #3
Men til at finde den korteste afstand mellem to punkter kan du f.eks. bruge A*-algoritmen. Jeg går dog ikke ud fra at det denne du søger.

http://en.wikipedia.org/wiki/A_Star_Search_Algorithm
Avatar billede vis_dk Nybegynder
13. april 2004 - 21:15 #4
Hvis du bare skal fra et sted til et andet, så kan du opstille problemet som en retningsbestemt graf og bruge Dijkstra's shortest path algoritme.
Avatar billede trp79 Nybegynder
14. april 2004 - 08:57 #5
Ja det er "den samlet set korteste rute hvis en bil skal besøge alle firmaerne og så vende tilbage til udgangspunktet" jeg vil finde.
Hvis der ikke findes nogen effektiv algoritme for det, vil det så sige, at så kan man ligeså godt selv lave en algoritme, der gennemgår samtlige mulige kombinationer?
Avatar billede conrad Nybegynder
14. april 2004 - 11:58 #6
Du bevæger dig ind på grafteoriens enorme og komplicerede område. Der er masser af effektive algortimer til at løse TSP bare ikke nogen der er så effektive som det forventes at de kan blive (polynomial tid). Du kan derfor sagtens finde gode algoritmer til løsning af TSP. Held og lykke :)
Avatar billede jakoba Nybegynder
14. april 2004 - 17:37 #7
Dit problem hedder "salesmans problem" (som allerede retry siger) det er et klassiskt problem i datalogi fordi det er lykkedes at bevise at der ikke findes nogen klar algoritmisk metode at finde den korteste rute.

For at være sikker på at finde den korteste må man beregne alle ruter og sammenligne. Med 4-10 kunder der skal besøges er det nemt nok, men med 2000-5000 bliver testeriet så omfattende at det er helt uantageligt (programmet vil tage flere år at køre).

Men der er forsket en del i det, og selv og man ikke kan finde DEN korteste, er der mange måder at finde en af de korter. så jeg vil også anbefale den der søgning.

mvh JakobA
Avatar billede trp79 Nybegynder
20. april 2004 - 18:37 #8
Tak for hjælpen - jeg må vist til at læse lidt om forskellige algoritmer.
Kan jeg ikke få jer til at smide et svar, så må jeg dele pointene i mellem jer.

jakoba du siger at 4-10 kunder ikke er noget problem, men hvor langt skal man før det bliver for meget? Det er måske et vidt spørgsmål, men jeg tror aldrig jeg vil komme til at lave beregninger for mere end i hvert fald maksimalt 40 kunder.
Avatar billede retry Nybegynder
20. april 2004 - 19:05 #9
svar
Avatar billede jakoba Nybegynder
20. april 2004 - 21:09 #10
Med N kunder antallet af mulige ruter N! (N fakultet, dvs N *(N-1) *(N-2) ... *2 *1)  når der er N kunder. Og køretiden på 'prøv dem alle' bliver proportional med det tal.
md 40 kunder bliver det i størrelsesordenen 100000000000000000000000000000000000 ruter der skal udregnes og sammenlignes. ( et meget groft gæt, men vi kan nok være enige om at det er mange :-))

mvh JakobA
Avatar billede conrad Nybegynder
21. april 2004 - 08:26 #11
et meget lille svar
Avatar billede trp79 Nybegynder
20. maj 2004 - 10:26 #12
Ups sorry - det er vist ved at være på tide at jeg accepterer jeres svar!

Tak for hjælpen :)

Mvh
Torben
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