AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
AdjacencyMatrix.java
Go to the documentation of this file.
1package aud.graph;
2
3import java.util.Iterator;
4import java.util.Map;
5import java.util.TreeMap;
8
14public class AdjacencyMatrix<Edge>
15 extends SparseMatrix<Edge> implements Iterable<Edge> {
16
17
19 public AdjacencyMatrix(boolean symmetric) {
20 super(symmetric);
21 }
22
27 public void clearColumnAndRow(int idx) {
28 int[] ri=getColumnRowIndices(idx);
29 for (int k=0;k<ri.length;++k)
30 set(ri[k],idx,null);
31
32 if (!isSymmetricMatrix()) {
33 int[] ci=getRowColumnIndices(idx);
34 for (int k=0;k<ci.length;++k)
35 set(idx,ci[k],null);
36 }
37 }
38
44 @Override public Iterator<Edge> iterator() {
45 // inefficient!
46 if (isSymmetricMatrix()) {
47 // copy and remove_if
48 TreeMap<Coordinate,Edge> m=new TreeMap<Coordinate,Edge>(mat_);
49 for (Iterator<Map.Entry<Coordinate,Edge>> ii=m.entrySet().iterator();
50 ii.hasNext();) {
51 Map.Entry<Coordinate,Edge> entry=ii.next();
52 Coordinate c=entry.getKey();
53 if (c.i>c.j)
54 ii.remove();
55 }
56 return m.values().iterator();
57 }
58 else
59 return mat_.values().iterator();
60 }
61}
Sparse adjacency matrix.
void clearColumnAndRow(int idx)
Set all entries in row idx and column idx to null.
Iterator< Edge > iterator()
Get iterator over all edges.
AdjacencyMatrix(boolean symmetric)
create empty matrix
Row/column coordinates (i,j).
Definition: Coordinate.java:11
int[] getColumnRowIndices(int j)
get row indices in column j as array
TreeMap< Coordinate, T > mat_
Simple sparse matrix data structure.
boolean isSymmetricMatrix()
Was matrix created explicitly as symmetric matrix?
int[] getRowColumnIndices(int i)
get column indices in row i as array
sparse matrices for encoding adjacency
Definition: Coordinate.java:1
Graph data structures and algorithms.
AuD lecture: Data structures, algorithms, examples.
Definition: A234Tree.java:1