|
@@ -7,8 +7,8 @@ import Model.LayeredGraphNode;
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Der aus der Vorlesung bekannte Sweep Algorithmus zur Minnimierung von Kantenkreuzungen
|
|
|
|
- * Es wird immer genau ein sweep durchgeführt
|
|
|
|
|
|
+ * Der aus der Vorlesung bekannte Sweep Algorithmus zur Minimierung von Kantenkreuzungen
|
|
|
|
+ * Es wird immer genau ein sweep durchgef�hrt
|
|
* @author kolja
|
|
* @author kolja
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
@@ -25,7 +25,7 @@ public class SweepCrossingMinimizer {
|
|
graph.setOrderedLayer( reduceCrossingsBetweenLayers( l1, l2, false ), i ); // minnimiere die Kreuzungen zwischen den letzten beiden Layern
|
|
graph.setOrderedLayer( reduceCrossingsBetweenLayers( l1, l2, false ), i ); // minnimiere die Kreuzungen zwischen den letzten beiden Layern
|
|
}
|
|
}
|
|
for( int i = layers.size() - 2; i >= 0; i-- )
|
|
for( int i = layers.size() - 2; i >= 0; i-- )
|
|
- { // Gehe alle Layer rückwärts durch
|
|
|
|
|
|
+ { // Gehe alle Layer r�ckw�rts durch
|
|
ArrayList<LayeredGraphNode> l1 = layers.get( i + 1 );
|
|
ArrayList<LayeredGraphNode> l1 = layers.get( i + 1 );
|
|
ArrayList<LayeredGraphNode> l2 = layers.get( i );
|
|
ArrayList<LayeredGraphNode> l2 = layers.get( i );
|
|
graph.setOrderedLayer( reduceCrossingsBetweenLayers( l1, l2, true ), i ); // minnimiere die Kreuzungen zwischen den letzten beiden Layern
|
|
graph.setOrderedLayer( reduceCrossingsBetweenLayers( l1, l2, true ), i ); // minnimiere die Kreuzungen zwischen den letzten beiden Layern
|
|
@@ -38,13 +38,13 @@ public class SweepCrossingMinimizer {
|
|
* @param l1 Eine geordnete Liste mit Knoten aus dem ersten Layer
|
|
* @param l1 Eine geordnete Liste mit Knoten aus dem ersten Layer
|
|
* @param l2 Eine geordnete Liste mit Knoten aus dem zweiten Layer
|
|
* @param l2 Eine geordnete Liste mit Knoten aus dem zweiten Layer
|
|
* @param rev Gibt an, in welche Richtung die Kanten verlaufen (true, falls von l2 nach l1)
|
|
* @param rev Gibt an, in welche Richtung die Kanten verlaufen (true, falls von l2 nach l1)
|
|
- * @return Gibt eine Liste mit Gewichten zurück, nach denen die Knoten sortiert werden sollen
|
|
|
|
|
|
+ * @return Gibt eine Liste mit Gewichten zur�ck, nach denen die Knoten sortiert werden sollen
|
|
*/
|
|
*/
|
|
private ArrayList<Double> reduceCrossingsBetweenLayers( ArrayList<LayeredGraphNode> l1, ArrayList<LayeredGraphNode> l2, boolean rev)
|
|
private ArrayList<Double> reduceCrossingsBetweenLayers( ArrayList<LayeredGraphNode> l1, ArrayList<LayeredGraphNode> l2, boolean rev)
|
|
{
|
|
{
|
|
ArrayList< Double > gewicht = new ArrayList< Double >();
|
|
ArrayList< Double > gewicht = new ArrayList< Double >();
|
|
for( LayeredGraphNode n : l2 )
|
|
for( LayeredGraphNode n : l2 )
|
|
- { // Für jeden Knoten in Layer 2
|
|
|
|
|
|
+ { // F�r jeden Knoten in Layer 2
|
|
ArrayList< LayeredGraphEdge > edges = null;
|
|
ArrayList< LayeredGraphEdge > edges = null;
|
|
if( rev )
|
|
if( rev )
|
|
edges = n.getOutgoingEdges();
|
|
edges = n.getOutgoingEdges();
|
|
@@ -65,7 +65,7 @@ public class SweepCrossingMinimizer {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Zählt die Anzahl der Kantenkreuzungen in einem Graph
|
|
|
|
|
|
+ * Z�hlt die Anzahl der Kantenkreuzungen in einem Graph
|
|
* @param layers Eine Liste mit Sortierten Layern
|
|
* @param layers Eine Liste mit Sortierten Layern
|
|
* @return Die Anzahl der Kreuzungen
|
|
* @return Die Anzahl der Kreuzungen
|
|
*/
|
|
*/
|
|
@@ -83,7 +83,7 @@ public class SweepCrossingMinimizer {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * Zählt die Anzahl der Kantenkreuzungen zwischen zwei Layern (Es wird angenommen dass alle Kanten von l1 nach l2 verlaufen)
|
|
|
|
|
|
+ * Z�hlt die Anzahl der Kantenkreuzungen zwischen zwei Layern (Es wird angenommen dass alle Kanten von l1 nach l2 verlaufen)
|
|
* @param l1 Der erste Layer
|
|
* @param l1 Der erste Layer
|
|
* @param l2 Der zweite Layer
|
|
* @param l2 Der zweite Layer
|
|
* @return Die Anzahl der Kreuzungen
|
|
* @return Die Anzahl der Kreuzungen
|