/* * Author: tdanford * Date: Nov 9, 2008 */ package org.seqcode.gseutils.graphs; import java.util.*; import Jama.*; public class AdjacencyMatrix { private Matrix adj; private String[] vertices; public AdjacencyMatrix(Graph g) { Set<String> verts = g.getVertices(); vertices = verts.toArray(new String[0]); Arrays.sort(vertices); adj = new Matrix(vertices.length, vertices.length, 0.0); for(int i = 0; i < vertices.length; i++) { for(int j = 0; j < vertices.length; j++) { if(i == j) { adj.set(i, j, 1.0); } else { if(g.getNeighbors(vertices[i]).contains(vertices[j])) { adj.set(i, j, 1.0); } } } } } public void path() { adj = adj.times(adj); } public void path(int n) { for(int i = 0; i < n; i++) { path(); } } public int size() { return vertices.length; } public String vertex(int i) { return vertices[i]; } public boolean connected(int i, int j) { return adj.get(i, j) >= 0.5; } public int value(int i, int j) { return (int)Math.round(adj.get(i, j)); } public Matrix matrix() { return adj; } }