From 5a16504bd26a41f6873fb071a596aeb8785f471c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Fuhry?= Date: Mon, 22 May 2023 16:05:23 +0200 Subject: [PATCH] minor refactoring findBridges still doesn't work --- src/Graph.java | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/Graph.java b/src/Graph.java index cddd86c..d62f8c3 100644 --- a/src/Graph.java +++ b/src/Graph.java @@ -5,10 +5,10 @@ public class Graph { private Matrix adjazenzMatrix; private Matrix distanzMatrix; private Matrix wegMatrix; - private boolean zusammenhaengend; + private boolean connected; private ArrayList exzentrizitäten; private int radius; - private int durchmesser; + private int diameter; private ArrayList centre; private ArrayList> components; private ArrayList bridges; @@ -24,7 +24,7 @@ public class Graph { calculateExzentrizitäten(); calculateProperties(); findComponents(); - //findBridges(); + findBridges(); findArticulations(file); } @@ -101,26 +101,26 @@ public class Graph { public void calculateProperties() { radius = Integer.MAX_VALUE; - durchmesser = -1; - zusammenhaengend = true; + diameter = -1; + connected = true; centre = new ArrayList<>(1); for(int rowIndex = 0; rowIndex < exzentrizitäten.size(); rowIndex++) { - if(exzentrizitäten.get(rowIndex) > durchmesser) { - durchmesser = exzentrizitäten.get(rowIndex); + if(exzentrizitäten.get(rowIndex) > diameter) { + diameter = exzentrizitäten.get(rowIndex); centre.clear(); centre.add(rowIndex + 1); } if(exzentrizitäten.get(rowIndex) < radius) { radius = exzentrizitäten.get(rowIndex); } - if(exzentrizitäten.get(rowIndex) == durchmesser) { + if(exzentrizitäten.get(rowIndex) == diameter) { centre.add(rowIndex + 1); } } if(radius == 0) { - zusammenhaengend = false; + connected = false; } } @@ -168,27 +168,28 @@ public class Graph { ArrayList> newComponents; int[] bridge; - for(int columnIndex = 0; columnIndex < wegMatrix.getColumnLength(); columnIndex++) { - for(int rowIndex = 0; rowIndex < wegMatrix.getRowLength(); rowIndex++) { + for(int rowIndex = 0; rowIndex < adjazenzMatrix.getRowLength(); rowIndex++) { + for(int columnIndex = 0; columnIndex < adjazenzMatrix.getColumnLength(); columnIndex++) { bridge = new int[2]; bridge[0] = columnIndex + 1; bridge[1] = rowIndex + 1; - wegMatrix.insert(rowIndex, columnIndex, 0); - wegMatrix.insert(columnIndex, rowIndex, 0); + adjazenzMatrix.insert(rowIndex, columnIndex, 0); + adjazenzMatrix.insert(columnIndex, rowIndex, 0); + + calculateWegMatrix(); newComponents = findComponents(wegMatrix); - //System.out.println(Arrays.toString(bridge)); if(newComponents.size() > components.size()) { - //System.out.println("bruh"); bridges.add(bridge); } - wegMatrix.insert(rowIndex, columnIndex, 1); - wegMatrix.insert(columnIndex, rowIndex, 1); + adjazenzMatrix.insert(rowIndex, columnIndex, 1); + adjazenzMatrix.insert(columnIndex, rowIndex, 1); } } + calculateWegMatrix(); } public void findArticulations(String file) { @@ -213,6 +214,7 @@ public class Graph { adjazenzMatrix = new Matrix(file); } + calculateWegMatrix(); } public String toString() { @@ -220,14 +222,14 @@ public class Graph { s += "Adjazenzmatrix:\n" + adjazenzMatrix + "\nDistanzmatrix:\n" + distanzMatrix + "\nWegmatrix:\n" + wegMatrix; - if(!zusammenhaengend) { + if(!connected) { s += "\nExzentrizitäten/Radius/Durchmesser: Kein zusammenhängender Graph"; } else { - s += "\nExzentrizitäten: " + exzentrizitäten.toString() + "\nRadius: " + radius + "\nDurchmesser: " + durchmesser; + s += "\nExzentrizitäten: " + exzentrizitäten.toString() + "\nRadius: " + radius + "\nDurchmesser: " + diameter; } s += "\nZentrum: "; - if(!zusammenhaengend) { + if(!connected) { s += "Kein zusammenhängender Graph"; } else { s += centre;