Hi,
nach den Antworten in diesem Thema: http://www.easy-coding.de/java-nach-php-portieren-t3742.html#17442 habe ich den Versuch gemacht eine Routfindungsroutinge mit Hilfe von vb .net und des Dijkstra-Algorithmus zu machen. Kurz die Informationen die ich besitze. Ich habe einmal 5000 Datensätze mit Punkten und einmal 14000 Datensätze in denen die Verbindungen der 5000 Punkte (immer 1 zu 1) gelistet sind.
Problem ist nun das ich den kürzesten Weg von Punkt x nach Punkt y herrausfinden muss wobei die einzelnen Punkte alle exakt gleich weit von einander entfernt liegen.
Hier mal der Code, weiß allerdings nicht ob er so schon lauffähig ist, da ich die Daten im mom nicht habe um dies zu testen:
Alles anzeigen
nach den Antworten in diesem Thema: http://www.easy-coding.de/java-nach-php-portieren-t3742.html#17442 habe ich den Versuch gemacht eine Routfindungsroutinge mit Hilfe von vb .net und des Dijkstra-Algorithmus zu machen. Kurz die Informationen die ich besitze. Ich habe einmal 5000 Datensätze mit Punkten und einmal 14000 Datensätze in denen die Verbindungen der 5000 Punkte (immer 1 zu 1) gelistet sind.
Problem ist nun das ich den kürzesten Weg von Punkt x nach Punkt y herrausfinden muss wobei die einzelnen Punkte alle exakt gleich weit von einander entfernt liegen.
Hier mal der Code, weiß allerdings nicht ob er so schon lauffähig ist, da ich die Daten im mom nicht habe um dies zu testen:
Quellcode
- Public strpunkte(4999) As String
- Public Function strParse(ByVal Data, ByVal Trenn, ByVal Nr)
- On Error Resume Next
- Dim MainData() As String, SplitData() As String
- MainData = Split(Data, Trenn)
- SplitData = Split(MainData(Nr - 1), Trenn)
- strParse = SplitData(0)
- End Function
- Function einschreib(ByVal v As String, ByVal strecke As Integer)
- Dim start As Integer
- Dim punkt As String
- For start = 0 To 4999
- punkt = strParse(strpunkte(start), ";", 1)
- If punkt = v Then
- strpunkte(start) = punkt & ";" & strecke
- End If
- Next
- End Function
- Function relax(ByVal s As String, ByVal g As String)
- Dim u As String
- Dim v As String
- Dim Line As String
- Dim wert1 As String
- Dim wert2 As String
- Dim strecke As Integer
- strecke = 0
- Do
- If u = g Then Exit Do
- strecke = strecke + 1
- If u = "" Then
- u = s
- Else
- Dim sr As IO.StreamReader
- sr = New IO.StreamReader("C:\zweig.txt")
- Do
- Line = sr.ReadLine
- If IsNothing(Line) Or Line = 0 Then Exit Do
- wert1 = strParse(Line, ";", 1)
- wert2 = strParse(Line, ";", 2)
- If wert1 = u Then
- v = wert2
- einschreib(v, strecke)
- ElseIf wert2 = u Then
- v = wert1
- einschreib(v, strecke)
- End If
- Loop
- u = v
- End If
- Loop
- MsgBox(strecke)
- End Function
- Function Dijkstra(ByVal s As String, ByVal g As String)
- Dim i As Integer
- Dim Line As String
- Dim sr As IO.StreamReader
- sr = New IO.StreamReader("C:\werte.txt")
- i = 0
- Do
- Line = sr.ReadLine
- If IsNothing(Line) Or Line = 0 Then Exit Do
- If Line = s Then
- strpunkte(i) = Line & ";0"
- Else
- strpunkte(i) = Line & ";5000"
- End If
- i = i + 1
- Loop
- relax(s, g)
- End Function
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dijkstra("1", "2")
- End Sub