From: Charles F. <cf...@us...> - 2006-06-28 02:03:52
|
Hi, Here is some sample untested code for createLaplacianMatrix it basically combines the diagonal with the negative adjacancy matrix. Charles /** * Returns the Laplacian matrix of the specified graph, defined as * the diagonal matrix minus the adjacency matrix. * * @return SparseDoubleMatrix2D */ public static SparseDoubleMatrix2D createLaplacianMatrix(Graph G, NumberEdgeValue nev) { if (nev == null) nev = new ConstantEdgeValue(1); int numVertices = G.getVertices().size(); SparseDoubleMatrix2D matrix = new SparseDoubleMatrix2D(numVertices, numVertices); Indexer id = Indexer.getIndexer(G); for (Iterator v_iter = G.getVertices().iterator(); v_iter.hasNext();) { Vertex v = (Vertex) v_iter.next(); matrix.set(id.getIndex(v), id.getIndex(v), v.degree()); for (Iterator o_iter = v.getOutEdges().iterator(); o_iter.hasNext(); ) { Edge e = (Edge)o_iter.next(); Vertex w = e.getOpposite(v); int j = id.getIndex(w); matrix.set(i, j, matrix.getQuick(i,j) - nev.getNumber(e).doubleValue()); } } return matrix; } -- We can't Provide you With a date But we do supply The best darn bait Burma-Shave http://burma-shave.org/jingles/1952/we_cant |