Achtung:

Dieses Wiki, das alte(!) Projektwiki (projektwiki.zum.de)
wird demnächst gelöscht.

Bitte sichere Deine Inhalte zeitnah,
wenn Du sie weiter verwenden möchtest.


Gerne kannst Du natürlich weiterarbeiten

im neuen Projektwiki (projekte.zum.de).

Umsetzung mit einer Adjazenzmatrix: Unterschied zwischen den Versionen

Aus Projektwiki - ein Wiki mit Schülern für Schüler.
Wechseln zu: Navigation, Suche
(Definition)
Zeile 5: Zeile 5:
  
 
==Darstellung==
 
==Darstellung==
In der Matrix wird gespeichert von welchen Knoten Kanten existieren und welche Gewichtung diese besitzen.
+
In der Matrix wird gespeichert zwischen welchen Knoten Kanten existieren und welche Gewichtung diese besitzen.
  
 
       LI|UL|SA|AU|MU|RO|RE|NU|HO|WU|FD|  
 
       LI|UL|SA|AU|MU|RO|RE|NU|HO|WU|FD|  
Zeile 27: Zeile 27:
  
 
Anmerkung:
 
Anmerkung:
bei diesem Beispiel handelt es sich um einen ungerichteten Graphen, da er über eine Diagonale (von links oben nach rechts unten) gespiegelt werden kann, d.h. alle Kanten sind in alle Richtungen "zugänglich"
+
Bei diesem Beispiel handelt es sich um einen ungerichteten Graphen, da alle Kanten in beide Richtung den gleichen Wert haben.
  
 
==Umsetzung im Quelltext==
 
==Umsetzung im Quelltext==
Zeile 33: Zeile 33:
 
<code>int [][] matrix;<br />
 
<code>int [][] matrix;<br />
 
KNOTEN [] knoten;<br /></code>
 
KNOTEN [] knoten;<br /></code>
 +
...und Andere...
 
===Initialisierung===
 
===Initialisierung===
 
<code>matrix = new int [maxanzahl][maxanzahl];<br />
 
<code>matrix = new int [maxanzahl][maxanzahl];<br />
Zeile 40: Zeile 41:
  
 
===Methoden===
 
===Methoden===
nach der Deklaration und Initialisierung der beiden Arrays und einigen weiteren notwendigen Attributen (z.B. aktuelle Anzahl Knoten in der Liste) können verschiedenste Methoden geschrieben werden:
+
die wichtigsten Methoden:
  
 
#[[/KnotenEinfuegen/]]
 
#[[/KnotenEinfuegen/]]

Version vom 11. Februar 2014, 21:08 Uhr

Inhaltsverzeichnis

Definition

Ein Graph wird in Java mit einer Adjazenzmatrix umgesetzt. Diese ist eine Tabelle, welche durch ein zwei-dimensionales Array umgesetzt wird: int [][] matrix; Die Spalten und Zeilen sind jeweils einem bestimmten Knoten zugeordnet.

Darstellung

In der Matrix wird gespeichert zwischen welchen Knoten Kanten existieren und welche Gewichtung diese besitzen.

      LI|UL|SA|AU|MU|RO|RE|NU|HO|WU|FD| 
   LI|-1| 2|  |  |  |  |  |  |  |  |  | 
   UL| 2|-1| 2| 2|  |  |  |  |  | 2|  | 
   SA|  | 2|-1|  |  |  |  |  |  |  |  | 
   AU|  | 2|  |-1| 2|  |  |  |  |  |  | 
   MU|  |  |  | 2|-1| 2| 2| 2|  |  |  | 
   RO|  |  |  |  | 2|-1|  |  |  |  |  | 
   RE|  |  |  |  | 2|  |-1| 2| 2|  |  | 
   NU|  |  |  |  | 2|  | 2|-1| 2| 2|  | 
   HO|  |  |  |  |  |  | 2| 2|-1| 2|  | 
   WU|  | 2|  |  |  |  |  | 2| 2|-1| 2| 
   FD|  |  |  |  |  |  |  |  |  | 2|-1|

Bedeutungen:

  • LI-UL-SA-... = Kurzbeschreibungen für die Städte
  • -1 = Es kann keine Kante Geben, da es keine Verbindung zwischen ein und der Selben Stadt existieren kann
  • | | = es existiert keine Kante
  • 2 = Beispiel für eine Gewichtung (es kann auch ein anderer Wert eingetragen werden)

Anmerkung: Bei diesem Beispiel handelt es sich um einen ungerichteten Graphen, da alle Kanten in beide Richtung den gleichen Wert haben.

Umsetzung im Quelltext

Deklarisierung

int [][] matrix;
KNOTEN [] knoten;
...und Andere...

Initialisierung

matrix = new int [maxanzahl][maxanzahl];
knoten = new KNOTEN[maxanzahl];
--> maxanzahl ist ein Parameter, der zum Erzeugen der Matrix benötigt wird.
aktAnzahlKn = 0;

Methoden

die wichtigsten Methoden:

  1. KnotenEinfuegen
  2. KnotenNummer
  3. KanteEinfuegen
  4. Ausgeben


...........noch in Bearbeitung............