At finde en tur (SVÆR)

Tags:    php

Jeg har et lidt stort problem. Jeg er lidt nybegynder til Mysql - Kan finde ud af at hente og sende, til og fra mysql via PHP.

Problemet ligger i at jeg er ved at spille et spil, hvor der er ret mange veje man kan rejse på, og de er svære at huske. Til det er jeg igang med at lave et lille php script som skal kunne regne det ud for mig.

Jeg har lavet en lille table med række værdierne: id, from1, to1

Det jeg har gjort er at lægge disse ind i from1 og to1

Denon - Rience
Rience - Forty
Forty - Takel

Dette er en af rejserne som ligger i hver sin række.

Hvordan får jeg den til at udregne hvordan jeg kommer fra Denon til Takel Fx????

Og hvis der kommer flere ruter, hvordan får jeg den så til at vise den korteste???

- - - - - - -
Evilfish - Bliv ikke skræmt af navnet! :-)
www.1vs1.dk[Redigeret d. 04/10-02 17:16:32 af Rune Liljegren]



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Ok. Hvis jeg har forstået det rigtigt, skal du finde en "vej" mellem 2 destinationer, og du skal finde den kortest mulige vej.

Jeg kan skrive hvordan det kan gøres, og hvis du har brug for hjælp til selve kodningen kan jeg også give en hånd der.

Du har en base med id, startsted og destination:

Du har et aktuelt startsted ( der du vil starte fra )
Du har en endelig destination ( der du vil slutte )
Du har en midlertidlig destination ( der du kan komme til fra dit aktuelle startsted )

sålænge rejsen ikke er fundet gør du:

Først ser du om der findes 1 post hvor din nuværende midlertidlige destination er angivet som startsted og din endelige destination er destiantion.

Hvis det er ok, er rejsen færdig

Hvis ikke

Vælger du alle poster i databasen, der indeholder din midlertidlige destination som startsted og som har en destination, som du ikke har brugt før.

Så kører du igennem indtil du har fundet et mål.

Dette burde give den hurtigste rejse da den tager et spring ad gangen.

Det er klart, at ovenstående løkke struktur skal løbes igennem for alle poster i alle niveauer i din søgning for at give den optimale rejse.

eks

fra F -- A

F -- D
      [ D----- C ] denne destination vises i forvejen som et første hop og vises ikke
     D------ B
      D----------- E
F -- C
     C------- B
          B----------E
      C------- Z
          Z----------S
F -- B
     B-------- E
          E----------- A // fundet løkken sluttes
     B-------- Q
          Q-----------C

Håber du fanger ideen :)[Redigeret d. 09/10-02 00:42:17 af Loke Krongaard Hansen][Redigeret d. 09/10-02 00:43:46 af Loke Krongaard Hansen][Redigeret d. 09/10-02 00:44:13 af Loke Krongaard Hansen]



Problemet ligger i at jeg er ved at spille et spil, hvor der er ret mange veje man kan rejse på, og de er svære at huske. Til det er jeg igang med at lave et lille php script som skal kunne regne det ud for mig.

Og hvis der kommer flere ruter, hvordan får jeg den så til at vise den korteste???


Prøv at søge lidt på google efter shortest path algoritm. En gut ved navn Dijkstra har lavet sådan en fin lille algoritme du burde kunne bruge. Du kan evt. starte med at læse http://nostromo.ikasths.dk/docjava/datastrukturer/grafer/grafer.htm for at få en ide om hvad den går ud på på dansk - google finder stort set kun beskrivelser af den på engelsk...
Vil i øvrigt tro at den er ok svær at implementere...





Jeg har lavet en lille table med række værdierne: id, from1, to1

Det jeg har gjort er at lægge disse ind i from1 og to1

Denon - Rience
Rience - Forty
Forty - Takel

Dette er en af rejserne som ligger i hver sin række.

Hvordan får jeg den til at udregne hvordan jeg kommer fra Denon til Takel Fx????

Og hvis der kommer flere ruter, hvordan får jeg den så til at vise den korteste???


jeg vil da lige quote dig engang. Du har ikke noget at sammen ligne med, altså hvad angår afstand, og eventuelt en "placering", så jeg vil mene at det ikke er muligt pga. amnglende informationer.

Mvh Ralph B. Andreasen





jeg vil da lige quote dig engang. Du har ikke noget at sammen ligne med, altså hvad angår afstand, og eventuelt en "placering", så jeg vil mene at det ikke er muligt pga. amnglende informationer.

Mvh Ralph B. Andreasen


Afstand er ikke nødvendigt. Spillet hedder EVE, og man skal hoppe igennem såkaldte stargates. Det med hvilken tur der er kortest, skal betragtes som at jeg vil hen til et bestemt sted, med så få jumps som overhovedet muligt. Desto færre jo bedre og jo hurtigere.


- - - - - - -
Evilfish - Bliv ikke skræmt af navnet! :-)
www.1vs1.dk



Her er et eksempel på hvorden et kort ser ud: www.1vs1.dk/map.gif


Nu er det så at jeg har kortet, så jeg nemt kan finde vej. Men lads os sige vi ikke har. Vi starter i Edicel - Edicel er et system. I hvert system kan man finde en stargate som kan jumpe til de systemer den er connectet til. I dette tilfælde ved jeg, at den stargate der er i Edicel kan jumpe til Guerin og en anden der ikke er tegnet på kortet.

Jeg vil gerne til Pedimor. Når jeg så skriver Edicel som start position og Pedimor som destination, skal min mysql/php script regne ud at jeg skal følje følgende rute:

Edicel - Guerin
Guerin - Codon
Codon - Clauridin
Clauridin - Elegare
Elegare - Rulcamonwe
Rulcamonwe - Pedimor

Dette er kun en MEGET lille del, men hvis det fungere, jamen så skulle det virke overalt.

I min database har jeg 3 værdier: id, fra, til

Hvis jeg koder Codon og Rience's muligheder ser det sådan her ud:

id: fra: til:
1 Codon Rience
2 Codon Clauridin
3 Codon Guerin
4 Rience Codon
5 Rience Gwenennia

Osv. Med alle de andre...
- - - - - - -
Evilfish - Bliv ikke skræmt af navnet! :-)
www.1vs1.dk



Nååå det er sådan...

det burde kunne lade sig gøre... men hvordan ?

jeg beklager at jeg ikke ved det

Mvh Ralph B. Andreasen



t