Hallo zusammen,
ich bin neu hier und möchte mich zunächst kurz Vorstellen: Tobias, 26, Elektrotechniker im Master.
Das Problem mit dem ich zu euch komme begründet sich aus meiner Unwissenheit zum Thema der Suchalgorithmen. Ich habe Elektrotechnik studiert und leider nicht Informatik. Ich habe zwar C und Java gelernt aber von solchen Algorithmen lernt man da leider nichts. Für meine küftige Masterarbeit muss ich Stromleitungen auswerten und analysieren. Bevor das geschieht, müssen die Daten aufbereitet und sortiert werden (worum es hier geht).
Ich hoffe, dass man solche Sachen bei einem Informatik-Studium (oder Ähnlichem) lernt, bzw. ihr habt ja sicher einiges an Erfahrung Achja und ich werde mir für die MA C# aneignen und meine Analyse dort programmieren.
Meinen Recherchen nach eignen sich diverse Suchalgorithmen und ich hätte gern eine Einschätzung eurerseits ob das, was ich mir ausgedacht habe, überhaupt Sinn macht oder ob es einfachere praktikablere Lösungsansätze gibt.
Also es geht um folgendes Problem:
Die Daten eines Stromnetzes sind in einer Accessdatenbank abgelegt. Eine Stromleitung besteht aus vielen Abschnitten, verbunden über Knoten, jede Verknüpfung zwischen Leitung und Knoten hat eine Terminal ID. Im Anhang befindet sich ein Schemabild, wie Knoten, Terminal und Element (die Leitung) in der Datenbank abgelegt werden.
Schaut man sich das Schema oben an, so sieht man, dass vom oberen zum unteren Knoten (von Knoten 6 nach Knoten 10) 3 "selektive Leitungen" existieren (die Leitung rechts ist eine "Stichleitung", dazu gleich mehr)
Auf den jeweiligen selektiven Leitungen gibt es Abhänge, die irrelevant sind, wie die Leitungen 4 und 10+12.
Meine Idee war folgende: ich nutze den Bellman Ford- Algorithmus, ausgehend von Knoten 6 und dann kenne ich die kürzeste Entfernung zum Knoten 10. Ich passe den Algorithmus so an, dass jedes Teilstück der Leitung gespeichert wird. Erkenne ich also die Kürzeste Leitung, so speichere ich mir diese ab und lösche die Leitungen der kürzesten Leitung aus der Adjanzenzmatrix und lasse den Algorithmus wiederholt laufen bis her keine Verbindung mehr findet?
Ich habe schon ein Beispiel mit dem Bellman Ford programmiert und ich habe die kürzeste Leitung erkannt. Das Speichern und löschen der Elemente dürte ja kein Problem sein. Die Frage wäre eher die Performance? Kleine Netze bestehen aus 300/400 Abschnitten. Bei großen Netzen dementsprechend mehr. Die Frage ist, ob der Algorithus geeignet ist? 300^3 multipliziert mit der Anzahl der selektiven Leitungen...!?
Zu der Stichleitung ganz rechts: Hierbei ist es wichtig, dass der entfernteste Punkt gefunden wird. Hierzu habe ich mir bisher noch keine genaueren Gedanken gemacht, da ich mit dem ersten Thema schon sehr beschäftigt bin. Bei nur einer Stichleitung lässt sich das ja wunderbar auch über den Bellman Ford Algorithmus erkennen. Sind mehrere Vorhanden wird es wiederum tricky.
Ganz unten befindet sich eine Grafik, wie ein Reales Ortsnetz aussehen kann, links Schematisch vereinfacht. Zu erkennen sind die unzähligen abzweigungen, die ignoriert werden müssen.
Also wiederholt die Frage: eignet sich der Bellmann Ford Algorithmus überhaupt? wäre ein anderer Algorithmus wie Dijkstra oder A Stern schneller oder einfacher? oder gibt es andere Lösungsansätze die euch spontan einfallen?
anbei eine Excel-Datei mit dem Beispiel
Vielen Dank schon einmal
Grüße Tobias
ich bin neu hier und möchte mich zunächst kurz Vorstellen: Tobias, 26, Elektrotechniker im Master.
Das Problem mit dem ich zu euch komme begründet sich aus meiner Unwissenheit zum Thema der Suchalgorithmen. Ich habe Elektrotechnik studiert und leider nicht Informatik. Ich habe zwar C und Java gelernt aber von solchen Algorithmen lernt man da leider nichts. Für meine küftige Masterarbeit muss ich Stromleitungen auswerten und analysieren. Bevor das geschieht, müssen die Daten aufbereitet und sortiert werden (worum es hier geht).
Ich hoffe, dass man solche Sachen bei einem Informatik-Studium (oder Ähnlichem) lernt, bzw. ihr habt ja sicher einiges an Erfahrung Achja und ich werde mir für die MA C# aneignen und meine Analyse dort programmieren.
Meinen Recherchen nach eignen sich diverse Suchalgorithmen und ich hätte gern eine Einschätzung eurerseits ob das, was ich mir ausgedacht habe, überhaupt Sinn macht oder ob es einfachere praktikablere Lösungsansätze gibt.
Also es geht um folgendes Problem:
Die Daten eines Stromnetzes sind in einer Accessdatenbank abgelegt. Eine Stromleitung besteht aus vielen Abschnitten, verbunden über Knoten, jede Verknüpfung zwischen Leitung und Knoten hat eine Terminal ID. Im Anhang befindet sich ein Schemabild, wie Knoten, Terminal und Element (die Leitung) in der Datenbank abgelegt werden.
Schaut man sich das Schema oben an, so sieht man, dass vom oberen zum unteren Knoten (von Knoten 6 nach Knoten 10) 3 "selektive Leitungen" existieren (die Leitung rechts ist eine "Stichleitung", dazu gleich mehr)
Auf den jeweiligen selektiven Leitungen gibt es Abhänge, die irrelevant sind, wie die Leitungen 4 und 10+12.
Meine Idee war folgende: ich nutze den Bellman Ford- Algorithmus, ausgehend von Knoten 6 und dann kenne ich die kürzeste Entfernung zum Knoten 10. Ich passe den Algorithmus so an, dass jedes Teilstück der Leitung gespeichert wird. Erkenne ich also die Kürzeste Leitung, so speichere ich mir diese ab und lösche die Leitungen der kürzesten Leitung aus der Adjanzenzmatrix und lasse den Algorithmus wiederholt laufen bis her keine Verbindung mehr findet?
Ich habe schon ein Beispiel mit dem Bellman Ford programmiert und ich habe die kürzeste Leitung erkannt. Das Speichern und löschen der Elemente dürte ja kein Problem sein. Die Frage wäre eher die Performance? Kleine Netze bestehen aus 300/400 Abschnitten. Bei großen Netzen dementsprechend mehr. Die Frage ist, ob der Algorithus geeignet ist? 300^3 multipliziert mit der Anzahl der selektiven Leitungen...!?
Zu der Stichleitung ganz rechts: Hierbei ist es wichtig, dass der entfernteste Punkt gefunden wird. Hierzu habe ich mir bisher noch keine genaueren Gedanken gemacht, da ich mit dem ersten Thema schon sehr beschäftigt bin. Bei nur einer Stichleitung lässt sich das ja wunderbar auch über den Bellman Ford Algorithmus erkennen. Sind mehrere Vorhanden wird es wiederum tricky.
Ganz unten befindet sich eine Grafik, wie ein Reales Ortsnetz aussehen kann, links Schematisch vereinfacht. Zu erkennen sind die unzähligen abzweigungen, die ignoriert werden müssen.
Also wiederholt die Frage: eignet sich der Bellmann Ford Algorithmus überhaupt? wäre ein anderer Algorithmus wie Dijkstra oder A Stern schneller oder einfacher? oder gibt es andere Lösungsansätze die euch spontan einfallen?
anbei eine Excel-Datei mit dem Beispiel
Vielen Dank schon einmal
Grüße Tobias