Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5ae8c0d2ad | ||
|
e6c365aecf | ||
|
3b4a6f74b6 | ||
|
bbe304606a | ||
|
f9f636c6f3 | ||
|
41680b3893 | ||
|
2de0ac5a02 | ||
|
2448464ed4 | ||
|
98688a467d | ||
|
e49f7569f8 |
24
csv/24n.csv
Normal file
24
csv/24n.csv
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
1;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;1;0;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;1;1;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;1;1;0;1;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;0;0;0;1;1;1;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;1;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;1;0;1;0;0;0;1;0;0;1;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;1;0;1;1;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;1;0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;1;0;0;0;1;1;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;1;0;0;0;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;1;0;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;1;0;1;0;0
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;1;1
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;1
|
||||||
|
0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;1;0
|
|
50
csv/50n.csv
Normal file
50
csv/50n.csv
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
0;1;1;0;0;0;0;1;0;1;0;1;0;0;1;1;1;1;0;1;1;1;1;1;0;1;0;0;1;1;0;1;0;1;0;0;0;1;1;0;1;0;0;1;0;0;0;0;0;0
|
||||||
|
0;0;1;0;1;0;0;1;1;1;0;1;1;0;1;1;0;0;1;0;1;0;1;0;0;0;1;0;0;1;0;1;1;0;0;0;1;0;0;0;1;0;1;0;1;0;1;0;1;1
|
||||||
|
1;0;0;1;0;0;0;1;0;1;1;1;1;0;0;1;0;1;1;1;0;1;1;1;1;0;0;1;1;1;1;1;1;0;0;1;0;0;1;1;0;1;0;0;1;0;0;0;1;0
|
||||||
|
1;1;1;0;0;0;1;1;0;1;1;1;1;1;0;1;1;0;1;1;0;0;0;1;1;0;1;1;1;0;0;0;0;0;0;1;1;1;0;0;1;0;0;1;0;0;1;0;0;0
|
||||||
|
1;0;1;0;0;0;1;0;1;1;0;1;0;1;0;1;0;0;0;1;1;1;1;1;1;0;0;1;1;1;1;1;0;0;0;1;1;1;1;1;1;0;1;1;0;0;0;0;1;1
|
||||||
|
0;0;0;1;1;0;1;1;0;1;0;1;1;1;0;1;0;1;1;1;0;1;0;0;1;1;0;1;1;0;0;0;1;1;0;1;0;1;0;0;1;1;0;1;1;0;0;1;0;0
|
||||||
|
0;0;0;0;0;0;0;1;1;0;0;1;1;0;1;1;0;0;0;1;0;0;0;0;0;0;1;1;1;0;0;1;0;1;0;1;0;0;1;1;1;0;0;1;1;0;1;1;0;1
|
||||||
|
1;0;0;1;1;0;0;0;0;0;1;0;1;0;0;1;1;1;0;1;1;0;1;0;0;1;0;1;1;0;0;0;0;0;0;1;0;1;1;1;1;0;0;0;1;1;1;1;1;0
|
||||||
|
1;0;0;1;0;0;0;0;0;1;0;0;1;0;1;1;0;0;0;0;1;0;1;0;1;1;0;1;0;1;0;1;1;1;0;1;0;0;0;0;0;1;1;1;0;0;1;1;0;1
|
||||||
|
1;0;0;1;0;1;1;0;0;0;0;1;1;0;0;0;1;1;1;0;0;1;1;1;0;1;0;0;0;1;0;1;0;1;1;0;1;1;0;1;0;1;1;1;1;1;0;1;0;1
|
||||||
|
0;0;0;0;1;1;1;1;0;1;0;1;1;0;1;0;1;1;0;1;0;0;0;1;1;1;1;0;0;0;1;0;1;0;1;0;0;0;0;0;1;0;1;1;0;0;0;0;1;0
|
||||||
|
1;1;1;0;0;1;0;0;1;1;1;0;0;0;0;1;1;0;0;0;1;0;1;1;1;0;1;0;1;1;1;0;0;1;0;1;0;1;1;1;1;0;0;1;1;1;0;1;0;0
|
||||||
|
1;0;1;1;1;1;0;0;0;1;1;1;0;0;0;1;0;0;1;0;1;1;1;1;0;0;0;0;0;0;1;0;1;1;1;1;0;0;0;0;1;0;1;1;0;1;1;1;0;1
|
||||||
|
1;1;0;0;0;0;1;0;0;1;1;0;0;0;0;0;0;0;0;1;1;0;0;1;1;0;0;1;1;1;0;1;0;0;0;1;1;1;0;1;1;0;0;1;1;1;1;1;0;1
|
||||||
|
0;1;0;0;0;0;1;0;0;1;1;0;0;1;0;1;1;1;0;0;0;1;0;1;1;1;0;0;0;1;0;0;0;1;1;1;0;0;0;0;1;0;0;1;0;1;1;1;0;1
|
||||||
|
0;1;1;1;1;1;0;1;1;0;0;0;0;1;0;0;0;1;1;0;0;0;1;1;1;1;0;1;0;0;0;0;1;1;1;1;0;0;1;0;1;0;1;1;0;1;1;1;0;1
|
||||||
|
0;1;1;0;1;1;0;0;0;0;0;0;0;1;0;1;0;0;0;1;0;0;1;0;0;0;0;0;1;1;1;0;1;1;1;1;0;1;0;1;0;0;0;0;0;0;0;0;1;0
|
||||||
|
0;1;0;0;0;0;1;1;0;1;0;0;1;1;0;0;1;0;1;1;1;1;0;1;0;1;1;0;0;0;1;1;1;0;1;0;0;1;0;0;0;1;1;0;1;0;0;0;0;1
|
||||||
|
1;0;0;0;0;0;1;1;1;0;1;1;0;1;1;0;0;1;0;0;1;0;1;0;0;1;0;0;0;1;1;1;0;0;0;0;0;1;0;0;0;0;1;0;1;1;1;1;0;1
|
||||||
|
1;1;1;0;1;1;0;1;0;1;1;0;0;1;1;0;1;0;0;0;1;0;1;0;1;0;1;1;0;1;0;1;0;1;1;0;1;0;1;0;0;1;1;0;0;1;1;0;1;0
|
||||||
|
0;1;0;0;0;0;0;1;1;0;1;0;1;0;1;0;1;1;0;0;0;1;0;1;1;1;0;1;0;1;0;1;0;1;1;1;0;1;0;0;1;0;0;0;0;0;0;1;1;1
|
||||||
|
1;1;0;0;0;0;0;0;0;1;0;0;0;0;0;1;0;1;1;1;1;0;0;1;1;0;0;1;1;0;1;1;1;1;1;0;0;0;1;0;0;0;1;1;1;0;0;0;0;1
|
||||||
|
1;0;1;1;0;0;0;1;1;1;0;1;0;1;0;1;0;0;1;0;0;0;0;1;0;0;1;0;1;1;0;0;1;1;1;1;1;1;0;1;1;1;0;0;1;0;0;0;0;0
|
||||||
|
0;0;0;1;1;1;0;1;1;1;1;1;1;0;0;0;0;1;1;0;0;0;0;0;0;0;0;1;0;0;0;1;1;1;1;1;0;0;0;1;1;0;1;1;1;0;0;1;0;1
|
||||||
|
0;0;0;1;0;1;0;1;0;1;1;1;0;0;1;0;0;0;1;0;1;0;0;0;0;0;0;1;1;0;0;0;1;1;0;1;1;1;1;0;1;1;0;0;1;1;1;1;0;0
|
||||||
|
1;1;1;1;1;1;0;0;0;1;1;0;1;1;1;0;1;1;1;0;1;0;0;1;1;0;0;0;0;0;0;1;1;1;0;1;1;0;1;1;0;1;1;1;0;1;0;1;0;0
|
||||||
|
1;1;1;1;0;1;1;1;1;1;1;0;0;1;0;0;0;0;1;0;0;0;0;0;0;1;0;1;1;0;0;0;1;1;1;1;0;1;0;0;0;1;0;1;0;1;1;0;0;0
|
||||||
|
0;0;0;1;0;1;0;0;0;0;1;1;0;0;0;0;1;1;0;0;1;1;0;1;1;1;1;0;1;1;1;0;0;0;0;1;1;1;1;1;0;0;0;0;0;1;1;0;1;0
|
||||||
|
1;1;1;0;0;0;1;1;1;1;0;1;1;1;1;1;1;1;1;1;0;1;0;0;1;0;1;1;0;1;1;1;1;1;1;1;0;1;0;0;1;0;1;1;0;0;1;1;1;1
|
||||||
|
0;0;1;0;1;1;0;1;0;0;0;1;0;0;0;0;1;1;1;1;0;0;0;0;0;0;0;1;1;0;0;1;0;0;1;1;1;1;0;0;0;1;0;0;1;1;0;1;1;0
|
||||||
|
1;1;0;1;0;1;0;0;1;0;1;0;0;0;1;0;1;1;0;1;1;0;0;1;0;1;0;1;1;0;0;1;1;1;1;0;1;0;0;1;0;0;1;0;1;0;1;1;1;1
|
||||||
|
1;0;1;0;0;0;1;0;1;1;1;0;1;1;1;0;1;1;0;1;0;0;1;0;0;1;1;1;1;0;1;0;1;0;1;1;1;1;0;1;1;0;0;0;0;1;0;1;0;0
|
||||||
|
0;0;1;1;1;1;0;0;0;0;1;0;0;0;1;1;0;0;1;1;0;0;0;1;1;0;0;1;0;0;1;1;0;0;1;0;1;0;0;0;1;0;1;0;1;1;1;0;0;1
|
||||||
|
1;1;1;1;1;1;1;1;0;0;1;1;0;1;0;1;1;0;0;0;0;1;1;1;0;0;1;0;1;0;1;0;0;0;1;0;0;0;1;1;0;1;1;1;1;0;1;1;1;1
|
||||||
|
0;1;0;0;0;0;0;0;0;1;1;0;0;0;1;0;1;0;1;0;0;0;0;0;1;0;0;0;1;0;0;1;1;0;0;1;0;0;0;0;1;0;1;1;0;0;1;1;0;1
|
||||||
|
1;0;0;0;1;0;1;1;1;0;1;0;0;1;0;1;1;0;0;1;0;0;1;0;0;1;1;0;0;0;1;1;0;0;1;0;1;0;1;1;1;1;1;1;0;0;0;1;0;1
|
||||||
|
0;0;0;1;0;0;1;0;1;1;1;1;0;1;0;1;0;1;1;1;0;0;0;0;1;1;1;1;1;0;1;0;1;1;0;1;0;0;0;0;0;0;1;0;0;1;1;0;1;0
|
||||||
|
1;0;0;0;0;0;0;1;0;0;1;1;1;1;1;0;0;0;0;0;1;1;0;0;1;1;1;0;1;0;0;0;1;0;0;1;1;0;0;0;1;1;0;1;0;1;1;0;1;0
|
||||||
|
1;0;1;0;1;1;1;0;1;0;0;0;1;1;1;0;0;1;0;0;0;0;1;0;0;0;1;0;1;0;1;1;1;0;1;0;1;1;0;0;0;1;0;0;0;1;0;1;1;1
|
||||||
|
0;1;1;1;1;0;0;1;0;0;1;0;1;1;1;1;1;0;1;1;1;1;0;1;0;1;0;0;1;0;1;0;0;0;0;0;1;0;1;0;1;0;1;0;1;1;0;1;1;0
|
||||||
|
1;1;1;1;1;1;0;1;0;0;1;0;1;0;0;1;0;1;0;0;0;0;1;1;0;0;0;0;1;0;0;0;1;1;1;0;1;1;1;1;0;0;0;1;1;1;0;0;0;1
|
||||||
|
1;1;0;0;0;0;1;0;0;0;1;1;1;1;0;0;1;0;0;1;1;1;0;1;0;0;1;0;1;1;1;0;1;1;0;1;1;0;1;0;0;0;0;1;0;0;1;0;0;0
|
||||||
|
0;0;1;0;1;0;0;0;0;0;0;0;1;1;0;0;0;0;0;1;1;1;1;0;1;1;0;1;1;1;0;1;1;0;0;1;1;0;1;1;0;0;0;0;0;1;0;1;1;1
|
||||||
|
1;1;0;1;0;1;0;1;0;1;1;0;0;0;0;0;1;1;1;1;0;1;1;1;0;1;1;0;1;0;1;1;1;0;0;0;0;0;1;0;0;0;1;0;0;0;0;1;0;0
|
||||||
|
1;0;0;0;1;1;0;1;0;0;1;1;0;0;1;0;0;0;1;1;1;0;0;0;0;1;1;0;1;1;1;1;1;1;1;0;0;1;1;1;1;0;1;1;0;0;1;0;1;0
|
||||||
|
0;1;0;0;1;1;0;0;1;0;0;1;1;1;0;0;1;1;1;1;1;0;0;1;0;1;0;1;0;0;1;0;0;1;1;0;1;0;1;0;0;0;0;1;1;0;0;1;1;0
|
||||||
|
0;0;1;0;0;1;1;0;0;0;0;1;0;0;1;1;0;1;0;1;0;0;0;0;0;1;0;1;1;0;0;1;0;0;0;0;0;0;0;0;0;1;0;1;1;0;0;1;1;1
|
||||||
|
0;0;1;1;0;0;1;1;1;1;1;1;1;1;0;1;1;0;0;0;1;1;1;1;0;1;0;1;0;1;1;0;0;0;1;0;0;1;1;0;1;0;1;0;0;0;1;0;1;0
|
||||||
|
0;0;0;1;0;0;0;1;0;0;1;1;0;1;0;1;0;0;1;0;1;1;1;0;0;0;0;0;1;0;1;1;0;0;1;1;0;0;0;1;0;1;1;1;0;1;1;0;0;1
|
||||||
|
1;0;0;0;0;1;0;1;0;0;0;0;0;0;1;1;1;1;1;1;1;0;0;0;1;1;1;0;1;1;1;0;1;0;1;0;1;0;1;1;1;1;0;1;0;1;0;0;0;0
|
|
7
csv/5n.csv
Normal file
7
csv/5n.csv
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;0;0
|
||||||
|
0;0;0;0;0;0;0
|
||||||
|
0;0;0;0;1;0;0
|
||||||
|
0;1;0;1;0;0;0
|
||||||
|
0;0;0;0;0;0;1
|
||||||
|
0;0;0;0;0;1;0
|
|
5
csv/art-brck.csv
Normal file
5
csv/art-brck.csv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
0;0;1;1;0
|
||||||
|
0;0;1;1;0
|
||||||
|
1;1;0;1;0
|
||||||
|
1;1;1;0;1
|
||||||
|
0;0;0;1;0
|
|
5
csv/empty.csv
Normal file
5
csv/empty.csv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
0;0;0;0;0
|
||||||
|
0;0;0;0;0
|
||||||
|
0;0;0;0;0
|
||||||
|
0;0;0;0;0
|
||||||
|
0;0;0;0;0
|
|
5
csv/graph.csv
Normal file
5
csv/graph.csv
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
0;0;1;0;0
|
||||||
|
0;0;1;0;0
|
||||||
|
1;1;0;1;1
|
||||||
|
0;0;1;0;1
|
||||||
|
0;0;1;1;0
|
|
@ -20,12 +20,12 @@ public class Graph {
|
|||||||
public Graph(String file) {
|
public Graph(String file) {
|
||||||
adjazenzMatrix = new Matrix(file);
|
adjazenzMatrix = new Matrix(file);
|
||||||
calculateDistanzMatrix();
|
calculateDistanzMatrix();
|
||||||
calculateWegMatrix();
|
calculateWegMatrix(adjazenzMatrix);
|
||||||
calculateExzentrizitäten();
|
calculateExzentrizitäten();
|
||||||
calculateProperties();
|
calculateProperties();
|
||||||
findComponents();
|
findComponents();
|
||||||
findBridges(file);
|
findBridges();
|
||||||
findArticulations(file);
|
findArticulations();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void calculateDistanzMatrix() {
|
public void calculateDistanzMatrix() {
|
||||||
@ -57,22 +57,22 @@ public class Graph {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void calculateWegMatrix() {
|
public void calculateWegMatrix(Matrix matrix) {
|
||||||
wegMatrix = new Matrix(adjazenzMatrix.getRowLength(), adjazenzMatrix.getColumnLength());
|
wegMatrix = new Matrix(matrix.getRowLength(), matrix.getColumnLength());
|
||||||
Matrix potenzMatrix = adjazenzMatrix;
|
Matrix potenzMatrix = matrix;
|
||||||
|
|
||||||
for(int columnIndex=0; columnIndex < wegMatrix.getColumnLength(); columnIndex++) {
|
for(int columnIndex=0; columnIndex < wegMatrix.getColumnLength(); columnIndex++) {
|
||||||
for(int rowIndex=0; rowIndex < wegMatrix.getRowLength(); rowIndex++) {
|
for(int rowIndex=0; rowIndex < wegMatrix.getRowLength(); rowIndex++) {
|
||||||
if(columnIndex == rowIndex) {
|
if(columnIndex == rowIndex) {
|
||||||
wegMatrix.insert(rowIndex, columnIndex, 1);
|
wegMatrix.insert(rowIndex, columnIndex, 1);
|
||||||
} else if(adjazenzMatrix.getValueAt(rowIndex, columnIndex) > 0 && wegMatrix.getValueAt(rowIndex, columnIndex) == 0) {
|
} else if(matrix.getValueAt(rowIndex, columnIndex) > 0 && wegMatrix.getValueAt(rowIndex, columnIndex) == 0) {
|
||||||
wegMatrix.insert(rowIndex, columnIndex, 1);
|
wegMatrix.insert(rowIndex, columnIndex, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int k = 2; k < wegMatrix.getRowLength(); k++) {
|
for(int k = 2; k < wegMatrix.getRowLength(); k++) {
|
||||||
potenzMatrix = potenzMatrix.multiply(adjazenzMatrix);
|
potenzMatrix = potenzMatrix.multiply(matrix);
|
||||||
|
|
||||||
for(int columnIndex=0; columnIndex < wegMatrix.getColumnLength(); columnIndex++) {
|
for(int columnIndex=0; columnIndex < wegMatrix.getColumnLength(); columnIndex++) {
|
||||||
for(int rowIndex=0; rowIndex < wegMatrix.getRowLength(); rowIndex++) {
|
for(int rowIndex=0; rowIndex < wegMatrix.getRowLength(); rowIndex++) {
|
||||||
@ -86,6 +86,7 @@ public class Graph {
|
|||||||
|
|
||||||
public void calculateExzentrizitäten() {
|
public void calculateExzentrizitäten() {
|
||||||
exzentrizitäten = new ArrayList<>(1);
|
exzentrizitäten = new ArrayList<>(1);
|
||||||
|
connected = true;
|
||||||
|
|
||||||
for(int rowIndex = 0; rowIndex < distanzMatrix.getRowLength(); rowIndex++) {
|
for(int rowIndex = 0; rowIndex < distanzMatrix.getRowLength(); rowIndex++) {
|
||||||
int exzentrizität = 0;
|
int exzentrizität = 0;
|
||||||
@ -110,7 +111,6 @@ public class Graph {
|
|||||||
|
|
||||||
radius = Integer.MAX_VALUE;
|
radius = Integer.MAX_VALUE;
|
||||||
diameter = -1;
|
diameter = -1;
|
||||||
connected = true;
|
|
||||||
centre = new ArrayList<>(1);
|
centre = new ArrayList<>(1);
|
||||||
|
|
||||||
for(int rowIndex = 0; rowIndex < exzentrizitäten.size(); rowIndex++) {
|
for(int rowIndex = 0; rowIndex < exzentrizitäten.size(); rowIndex++) {
|
||||||
@ -164,17 +164,18 @@ public class Graph {
|
|||||||
newComponents.add(component);
|
newComponents.add(component);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return newComponents;
|
return newComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void findBridges(String file) {
|
public void findBridges() {
|
||||||
|
Matrix tempMatrix = adjazenzMatrix.clone();
|
||||||
bridges = new ArrayList<>(1);
|
bridges = new ArrayList<>(1);
|
||||||
ArrayList<ArrayList<Integer>> newComponents;
|
ArrayList<ArrayList<Integer>> newComponents;
|
||||||
int[] bridge;
|
int[] bridge;
|
||||||
boolean contains;
|
boolean contains;
|
||||||
|
|
||||||
for(int rowIndex = 0; rowIndex < adjazenzMatrix.getRowLength(); rowIndex++) {
|
for(int rowIndex = 0; rowIndex < tempMatrix.getRowLength(); rowIndex++) {
|
||||||
for(int columnIndex = 0; columnIndex < adjazenzMatrix.getColumnLength(); columnIndex++) {
|
for(int columnIndex = 0; columnIndex < tempMatrix.getColumnLength(); columnIndex++) {
|
||||||
if(rowIndex == columnIndex) {
|
if(rowIndex == columnIndex) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -188,11 +189,10 @@ public class Graph {
|
|||||||
bridge[0] = rowIndex + 1;
|
bridge[0] = rowIndex + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tempMatrix.insert(rowIndex, columnIndex, 0);
|
||||||
|
tempMatrix.insert(columnIndex, rowIndex, 0);
|
||||||
|
|
||||||
adjazenzMatrix.insert(rowIndex, columnIndex, 0);
|
calculateWegMatrix(tempMatrix);
|
||||||
adjazenzMatrix.insert(columnIndex, rowIndex, 0);
|
|
||||||
|
|
||||||
calculateWegMatrix();
|
|
||||||
|
|
||||||
newComponents = findComponents(wegMatrix);
|
newComponents = findComponents(wegMatrix);
|
||||||
|
|
||||||
@ -208,25 +208,26 @@ public class Graph {
|
|||||||
bridges.add(bridge);
|
bridges.add(bridge);
|
||||||
}
|
}
|
||||||
|
|
||||||
adjazenzMatrix = new Matrix(file);
|
tempMatrix = adjazenzMatrix.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
calculateWegMatrix();
|
calculateWegMatrix(adjazenzMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void findArticulations(String file) {
|
public void findArticulations() {
|
||||||
|
Matrix tempMatrix = adjazenzMatrix.clone();
|
||||||
articulations = new ArrayList<>(1);
|
articulations = new ArrayList<>(1);
|
||||||
ArrayList<ArrayList<Integer>> newComponents;
|
ArrayList<ArrayList<Integer>> newComponents;
|
||||||
|
|
||||||
for(int i = 0; i < adjazenzMatrix.getRowLength(); i++) {
|
for(int i = 0; i < tempMatrix.getRowLength(); i++) {
|
||||||
for(int rowIndex = 0; rowIndex < adjazenzMatrix.getRowLength(); rowIndex++) {
|
for(int rowIndex = 0; rowIndex < tempMatrix.getRowLength(); rowIndex++) {
|
||||||
for(int columnIndex = 0; columnIndex < adjazenzMatrix.getColumnLength(); columnIndex++) {
|
for(int columnIndex = 0; columnIndex < tempMatrix.getColumnLength(); columnIndex++) {
|
||||||
adjazenzMatrix.insert(rowIndex, i, 0);
|
tempMatrix.insert(rowIndex, i, 0);
|
||||||
adjazenzMatrix.insert(i, columnIndex, 0);
|
tempMatrix.insert(i, columnIndex, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
calculateWegMatrix();
|
calculateWegMatrix(tempMatrix);
|
||||||
|
|
||||||
newComponents = findComponents(wegMatrix);
|
newComponents = findComponents(wegMatrix);
|
||||||
|
|
||||||
@ -234,9 +235,9 @@ public class Graph {
|
|||||||
articulations.add(i + 1);
|
articulations.add(i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
adjazenzMatrix = new Matrix(file);
|
tempMatrix = adjazenzMatrix.clone();
|
||||||
}
|
}
|
||||||
calculateWegMatrix();
|
calculateWegMatrix(adjazenzMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
@ -279,7 +280,10 @@ public class Graph {
|
|||||||
}
|
}
|
||||||
s += "}";
|
s += "}";
|
||||||
|
|
||||||
s += "\nArtikulationen: " + articulations.toString();
|
s += "\nArtikulationen: ";
|
||||||
|
if(articulations != null)
|
||||||
|
s += articulations.toString();
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,10 @@
|
|||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Random;
|
||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
|
||||||
public class Matrix {
|
public class Matrix {
|
||||||
private int[][] matrix;
|
private int[][] matrix;
|
||||||
@ -10,6 +13,19 @@ public class Matrix {
|
|||||||
|
|
||||||
public static void main(String[] args) {}
|
public static void main(String[] args) {}
|
||||||
|
|
||||||
|
public Matrix(int rowLength, int columnLength, boolean random) {
|
||||||
|
if(!random) {
|
||||||
|
matrix = new int[rowLength][columnLength];
|
||||||
|
this.rowLength = rowLength;
|
||||||
|
this.columnLength = columnLength;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
matrix = new int[rowLength][columnLength];
|
||||||
|
this.rowLength = rowLength;
|
||||||
|
this.columnLength = columnLength;
|
||||||
|
randomAdjazenzMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
public Matrix(String file) {
|
public Matrix(String file) {
|
||||||
readCSV(file);
|
readCSV(file);
|
||||||
}
|
}
|
||||||
@ -79,6 +95,49 @@ public class Matrix {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Matrix clone() {
|
||||||
|
int[][] clone = new int[rowLength][columnLength];
|
||||||
|
|
||||||
|
for(int columnIndex=0; columnIndex < columnLength; columnIndex++) {
|
||||||
|
for(int rowIndex=0; rowIndex < rowLength; rowIndex++) {
|
||||||
|
clone[rowIndex][columnIndex] = matrix[rowIndex][columnIndex];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Matrix(clone);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void randomAdjazenzMatrix() {
|
||||||
|
Random r = new Random();
|
||||||
|
for(int columnIndex=0; columnIndex < columnLength; columnIndex++) {
|
||||||
|
for(int rowIndex=0; rowIndex < rowLength; rowIndex++) {
|
||||||
|
if(rowIndex == columnIndex) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
matrix[rowIndex][columnIndex] = r.nextInt(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteToCsv(String filename) {
|
||||||
|
String s = "";
|
||||||
|
|
||||||
|
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filename))) {
|
||||||
|
for(int columnIndex=0; columnIndex < columnLength; columnIndex++) {
|
||||||
|
s = "";
|
||||||
|
for(int rowIndex=0; rowIndex < rowLength; rowIndex++) {
|
||||||
|
s += matrix[columnIndex][rowIndex];
|
||||||
|
if(rowIndex < rowLength - 1) {
|
||||||
|
s += ";";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bw.write(s + "\n");
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
String s = "";
|
String s = "";
|
||||||
for(int columnIndex=0; columnIndex < columnLength; columnIndex++) {
|
for(int columnIndex=0; columnIndex < columnLength; columnIndex++) {
|
||||||
|
@ -1,6 +1,53 @@
|
|||||||
public class TestGraph {
|
public class TestGraph {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Graph g = new Graph("");
|
// test1();
|
||||||
|
// test2();
|
||||||
|
// test3();
|
||||||
|
// test4();
|
||||||
|
test5();
|
||||||
|
}
|
||||||
|
|
||||||
|
static String pathToProgramRoot = "/home/rene/projects/Java/graphprogram";
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is a small not connected graph with articulations and bridges
|
||||||
|
*/
|
||||||
|
public static void test1() {
|
||||||
|
Graph g = new Graph(pathToProgramRoot + "/csv/5n.csv");
|
||||||
|
System.out.println(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bigger graph with bridges and many articulations
|
||||||
|
*/
|
||||||
|
public static void test2() {
|
||||||
|
Graph g = new Graph(pathToProgramRoot + "/csv/24n.csv");
|
||||||
|
System.out.println(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Graph where each vetex is not connected to anything
|
||||||
|
*/
|
||||||
|
public static void test3() {
|
||||||
|
Graph g = new Graph(pathToProgramRoot + "/csv/empty.csv");
|
||||||
|
System.out.println(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* small connected graph with one articulation and one bridge
|
||||||
|
*/
|
||||||
|
public static void test4() {
|
||||||
|
Graph g = new Graph(pathToProgramRoot + "/csv/art-brck.csv");
|
||||||
|
System.out.println(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* randomly generated graph with x nodes
|
||||||
|
*/
|
||||||
|
public static void test5() {
|
||||||
|
Graph g = new Graph(pathToProgramRoot + "/csv/50n.csv");
|
||||||
System.out.println(g);
|
System.out.println(g);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,14 @@
|
|||||||
public class TestMatrix {
|
public class TestMatrix {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
Matrix matrix = new Matrix("");
|
// test1();
|
||||||
|
// test2();
|
||||||
|
createCsv();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void test1() {
|
||||||
|
String pathToProgramRoot = "/home/rene/projects/grpahprogram";
|
||||||
|
|
||||||
|
Matrix matrix = new Matrix(pathToProgramRoot + "/csv/graph.csv");
|
||||||
Matrix scalarProduct;
|
Matrix scalarProduct;
|
||||||
|
|
||||||
System.out.println("RowLength: " + matrix.getRowLength());
|
System.out.println("RowLength: " + matrix.getRowLength());
|
||||||
@ -11,4 +19,14 @@ public class TestMatrix {
|
|||||||
scalarProduct = matrix.multiply(matrix);
|
scalarProduct = matrix.multiply(matrix);
|
||||||
System.out.println("\nScalarProduct A²: \n" + scalarProduct);
|
System.out.println("\nScalarProduct A²: \n" + scalarProduct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void test2() {
|
||||||
|
Matrix bruh = new Matrix(10, 10, true);
|
||||||
|
System.out.println(bruh);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void createCsv() {
|
||||||
|
Matrix bruh = new Matrix(50, 50, true);
|
||||||
|
bruh.WriteToCsv("csv/50n.csv");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user