/** * */ package edu.nd.nina.experimental.alg; import java.util.*; import edu.nd.nina.*; /** * @author micha */ public abstract class IntArrayGraphAlgorithm<V, E> { //~ Instance fields -------------------------------------------------------- protected final List<V> _vertices; protected final int [][] _neighbors; protected final Map<V, Integer> _vertexToPos; //~ Constructors ----------------------------------------------------------- /** * @param g */ public IntArrayGraphAlgorithm(final Graph<V, E> g) { final int numVertices = g.vertexSet().size(); _vertices = new ArrayList<V>(numVertices); _neighbors = new int[numVertices][]; _vertexToPos = new HashMap<V, Integer>(numVertices); for (V vertex : g.vertexSet()) { _neighbors[_vertices.size()] = new int[g.edgesOf(vertex).size()]; _vertexToPos.put(vertex, _vertices.size()); _vertices.add(vertex); } for (int i = 0; i < numVertices; i++) { int nbIndex = 0; final V vertex = _vertices.get(i); for (E e : g.edgesOf(vertex)) { _neighbors[i][nbIndex++] = _vertexToPos.get(Graphs.getOppositeVertex(g, e, vertex)); } } } } // End IntArrayGraphAlgorithm.java