Algorithmus zum Zeichnen eines Komponentendiagramms

Gast #4137304
Lesenswert?
• ▲
▼
Hallo zusammen,

folgendes Problem liegt mir vor:

- Gegeben ist ein Komponentendiagramm einer Modellbasierten Software.
- Dieses enthält Komponenten mit beliebig vielen (>0) Schnittstellen.
- Eine Komponente wird im Diagramm dargestellt durch ein Rechteck.
- Schnittstellen sind Sender, Receiver, Server und Clients.
- Sender und Clients befinden sich am rechten Rand der Komponente.
- Receiver und Server befinden sich am Linken Rand der Komponente.
(Minimalbeispiel siehe Bild im Anhang)
- Abhängigkeiten bestehen zwischen Sendern und Receivern oder Servern 
und Clients. Diese werden durch gerichtete Kanten (gestrichelte Pfeile) 
dargestellt.

Ich suche nun einen Algorithmus, der mir ein Diagramm erzeugt, in 
welchem die Komponenten möglichst geschickt angeordnet sind (geschickt 
im Sinn von möglichst kurze Kanten mit möglichst wenig Kreuzungen) und 
der mir die Kanten so zeichnet, dass diese nicht über die Komponenten 
gezeichnet werden (wie im Minimalbeispiel) sondern daneben und wenn es 
Knicke gibt, so sollen diese rechtwinklig sein.

Im Moment ist mein Ansatz, das Ganze wie einen Graphen mit Knoten (= 
Komponenten) und Kanten (= Abhängigkeiten) zu behandeln und einen 
optimalen Graphen zu finden.

Als Problem dabei sehe ich allerdings noch folgende Dinge:

- Ich habe bei meinen Knoten (= Komponenten) ja mehrere, verschiedene 
Schnittstellen, d.h. nicht alle Abhängigkeiten verlaufen direkt in den 
Knoten sondern in eine bestimmte Schnittstelle.
- Meine Knoten (= Schnittstellen) haben ja eine gewisse räumliche 
Ausdehnung.

Ich hab mir schon gewisse Materialien zum Thema Graphenzeichnen 
durchgelesen, allerdings bin mir grad bzgl. der Auswahl des 
Optimierungsalgorithmus zur Positionierung der Knoten und weiterhin zu 
den o.a. Problemen noch unsicher.

Hat vllt. jemand von euch ein paar Tipps für mich?

Vielen Dank im Voraus!

Freundlicher Gruß
Oli

Ps: Ich hab das Ganze jetzte mal in dieses Forum gepostet, da ich mit C# 
programmiere. Aber das ist ja, denke ich, erst mal gar nicht so wichtig.
Angehängte Dateien:
Gast #4137460
Lesenswert?
• ▲
▼
Ist doch letztendlich das selbe Problem, wie ein Autorouter eines 
Platinenlayouts. Die Kollegen im Platinen-Forum vertreten die Meinung, 
keiner der Algorithmen liefert da ein zufriedenstellendes Ergebnis.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.