Adjazenzmatrix
Was ist eine Adjazenzmatrix?
Eine Adjazenzmatrix ist eine Matrix-Darstellung eines Graphen.
Sie zeigt, welche Knoten miteinander verbunden sind und – falls vorhanden – wie stark (Gewicht der Kante).
1. Ungewichteter, gerichteter Graph
Knoten: A, B, C
Kanten:
- A → B
- A → C
- B → C
Adjazenzmatrix:
| A | B | C | |
|---|---|---|---|
| A | 0 | 1 | 1 |
| B | 0 | 0 | 1 |
| C | 0 | 0 | 0 |
Hinweis:
1 = Es gibt eine gerichtete Kante von Zeile → Spalte
0 = Keine Verbindung
2. Gewichteter, gerichteter Graph
Knoten: A, B, C
Kanten mit Gewicht:
- A → B (10)
- A → C (5)
- C → B (3)
Adjazenzmatrix:
| A | B | C | |
|---|---|---|---|
| A | 0 | 10 | 5 |
| B | 0 | 0 | 0 |
| C | 0 | 3 | 0 |
Hinweis:
- Eintrag
[i][j] = wbedeutet: Es gibt eine gerichtete Kante voninachjmit Gewichtw.
3. Ungewichteter, ungerichteter Graph
Knoten: A, B, C
Kanten:
- A – B
- A – C
- B – C
Adjazenzmatrix:
| A | B | C | |
|---|---|---|---|
| A | 0 | 1 | 1 |
| B | 1 | 0 | 1 |
| C | 1 | 1 | 0 |
Hinweis:
Da der Graph ungerichtet ist, ist die Matrix symmetrisch zur Diagonalen.
4. Gewichteter, ungerichteter Graph
Knoten: A, B, C
Kanten mit Gewicht:
- A – B (10)
- A – C (5)
- B – C (3)
Adjazenzmatrix:
| A | B | C | |
|---|---|---|---|
| A | 0 | 10 | 5 |
| B | 10 | 0 | 3 |
| C | 5 | 3 | 0 |
Java-Code: Adjazenzmatrix-Klasse
public class Graph {
private int[][] matrix;
private int size;
public Graph(int size) {
this.size = size;
matrix = new int[size][size];
}
public void addDirectedEdge(int from, int to, int weight) {
matrix[from][to] = weight;
}
public void addUndirectedEdge(int from, int to, int weight) {
matrix[from][to] = weight;
matrix[to][from] = weight;
}
public void printMatrix() {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
Beispiel-Nutzung: Gerichteter, ungewichteter Graph
public class Main {
public static void main(String[] args) {
Graph g = new Graph(3);
// A = 0, B = 1, C = 2
g.addDirectedEdge(0, 1, 1); // A → B
g.addDirectedEdge(0, 2, 1); // A → C
g.addDirectedEdge(1, 2, 1); // B → C
g.printMatrix();
}
}
Ausgabe:
0 1 1
0 0 1
0 0 0
📌 Zusammenfassung
| Graph-Typ | Gewichtet | Gerichtet | Symmetrisch |
|---|---|---|---|
| Ungewichtet, ungerichtet | ❌ | ❌ | ✅ |
| Ungewichtet, gerichtet | ❌ | ✅ | ❌ |
| Gewichtet, ungerichtet | ✅ | ❌ | ✅ |
| Gewichtet, gerichtet | ✅ | ✅ | ❌ |