You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
Java
46 lines
1.2 KiB
Java
package de.normalisiert.utils.graphs;
|
|
|
|
import java.util.Vector;
|
|
|
|
|
|
/**
|
|
* Calculates the adjacency-list for a given adjacency-matrix.
|
|
*
|
|
*
|
|
* @author Frank Meyer, web@normalisiert.de
|
|
* @version 1.0, 26.08.2006
|
|
*
|
|
*/
|
|
public class AdjacencyList {
|
|
/**
|
|
* Calculates a adjacency-list for a given array of an adjacency-matrix.
|
|
*
|
|
* @param adjacencyMatrix array with the adjacency-matrix that represents
|
|
* the graph
|
|
* @return int[][]-array of the adjacency-list of given nodes. The first
|
|
* dimension in the array represents the same node as in the given
|
|
* adjacency, the second dimension represents the indicies of those nodes,
|
|
* that are direct successornodes of the node.
|
|
*/
|
|
public static int[][] getAdjacencyList(boolean[][] adjacencyMatrix) {
|
|
int[][] list = new int[adjacencyMatrix.length][];
|
|
|
|
for (int i = 0; i < adjacencyMatrix.length; i++) {
|
|
Vector v = new Vector();
|
|
for (int j = 0; j < adjacencyMatrix[i].length; j++) {
|
|
if (adjacencyMatrix[i][j]) {
|
|
v.add(new Integer(j));
|
|
}
|
|
}
|
|
|
|
list[i] = new int[v.size()];
|
|
for (int j = 0; j < v.size(); j++) {
|
|
Integer in = (Integer) v.get(j);
|
|
list[i][j] = in.intValue();
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
}
|