vb .net Dijkstra-Algorithmus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • vb .net Dijkstra-Algorithmus

    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:

    Quellcode

    1. Public strpunkte(4999) As String
    2. Public Function strParse(ByVal Data, ByVal Trenn, ByVal Nr)
    3. On Error Resume Next
    4. Dim MainData() As String, SplitData() As String
    5. MainData = Split(Data, Trenn)
    6. SplitData = Split(MainData(Nr - 1), Trenn)
    7. strParse = SplitData(0)
    8. End Function
    9. Function einschreib(ByVal v As String, ByVal strecke As Integer)
    10. Dim start As Integer
    11. Dim punkt As String
    12. For start = 0 To 4999
    13. punkt = strParse(strpunkte(start), ";", 1)
    14. If punkt = v Then
    15. strpunkte(start) = punkt & ";" & strecke
    16. End If
    17. Next
    18. End Function
    19. Function relax(ByVal s As String, ByVal g As String)
    20. Dim u As String
    21. Dim v As String
    22. Dim Line As String
    23. Dim wert1 As String
    24. Dim wert2 As String
    25. Dim strecke As Integer
    26. strecke = 0
    27. Do
    28. If u = g Then Exit Do
    29. strecke = strecke + 1
    30. If u = "" Then
    31. u = s
    32. Else
    33. Dim sr As IO.StreamReader
    34. sr = New IO.StreamReader("C:\zweig.txt")
    35. Do
    36. Line = sr.ReadLine
    37. If IsNothing(Line) Or Line = 0 Then Exit Do
    38. wert1 = strParse(Line, ";", 1)
    39. wert2 = strParse(Line, ";", 2)
    40. If wert1 = u Then
    41. v = wert2
    42. einschreib(v, strecke)
    43. ElseIf wert2 = u Then
    44. v = wert1
    45. einschreib(v, strecke)
    46. End If
    47. Loop
    48. u = v
    49. End If
    50. Loop
    51. MsgBox(strecke)
    52. End Function
    53. Function Dijkstra(ByVal s As String, ByVal g As String)
    54. Dim i As Integer
    55. Dim Line As String
    56. Dim sr As IO.StreamReader
    57. sr = New IO.StreamReader("C:\werte.txt")
    58. i = 0
    59. Do
    60. Line = sr.ReadLine
    61. If IsNothing(Line) Or Line = 0 Then Exit Do
    62. If Line = s Then
    63. strpunkte(i) = Line & ";0"
    64. Else
    65. strpunkte(i) = Line & ";5000"
    66. End If
    67. i = i + 1
    68. Loop
    69. relax(s, g)
    70. End Function
    71. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    72. Dijkstra("1", "2")
    73. End Sub
    Alles anzeigen