Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido

Ähnliche Präsentationen


Präsentation zum Thema: "EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido"—  Präsentation transkript:

1 EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido

2 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Gliederung Kapitel 13 (Knotenmarkierter) ungerichteter Graph –Definition –Eigenschaften ADTs für Knoten, Kante, Graph Implementierungen dazu Sehr einfacher Einsatz

3 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Aufgabe Definiere (knotenmarkierten) ungerichteten Graphen und entwickle dazu ADT und implementiere diesen.

4 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Beispiel:

5 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Definition: G = (V, E) heißt ungerichteter Graph mit Knotenmenge V und Kantenmenge E, falls jedes e E eine zweielementige Teilmenge von V ist. V ist endlich. Anmerkungen: –Falls {v, w} E, sind v und w durch eine ungerichtete Kante miteinander verbunden. Beachte: {v, w} und {w, v} beschreiben dieselbe Menge, also auch Kante. –Kanten von v zu sich selbst sind damit nicht zu erhalten!

6 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Beispiel: G 1 = (V 1,E 1 ) mit: V 1 = {1,....., 7} E 1 = {{1,2}, {1,6}, {2,3}, {2,7},{3,4},{4,5}, {5,6}, {5,7}}

7 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Definitionen: –Sei G = (V,E) ein ungerichteter Graph. – (v 0,...,v n ) heißt Pfad von v 0 nach v n für v i V, falls {v i-1, v i } E für 1 i n. –G heißt zusammenhängend, falls es zu zwei verschiedenen Knoten v und w stets einen Pfad von v nach w gibt. –

8 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Beispiel: G 2 = (V 2,E 2 ) mit: V 2 = {1,....., 7} E 2 = {{1,2}, {2,3},{4,5}, {5,6}, {5,7}} Pfad: {1,2,3} Nicht zusammenhängend

9 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Darstellung von Graphen Mengentheoretisch wie in Definition Adjazenzmatrix –Liegt zwischen i und j eine Kante, so setzt man a(i, j) = 1, sonst setzt man a(i, j) = 0. –Aufwand: Da nur für "Hälfte" oberhalb der Diagonale nötig: Benötige für n Knoten n*(n-1)/2 Speicherplätze für die Kanten, Jedoch: Meist sind Graphen eher spärlich besetzt. Adjazenzliste –Speichere alle Nachbarn eines Knotens in einer Liste.

10 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Beispiel: G 3 = (V 3,E 3 ) mit: V 3 = {4, 5, 6, 7} Mengentheoretisch: E 3 ={{4, 5}, {5, 6}, {5, 7}} Adjazenz-Matrix:Adjazenz-Liste: {5} 5 {4,6,7} 6 {5} 7 {5}

11 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph Hinzunahme weiterer Informationen: z.B. Definition: KG = (G, M, km) ist knotenmarkierter ungerichteter Graph genau dann, wenn: 1. G =(V,E) ist ungerichteter Graph 2. M Markierungsmenge 3. km: V --> M ist Knotenmarkierung Analog etwa: –Kantenmarkierte ungerichtete Graphen

12 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich Ungerichteter Graph (knotenmarkiert) Beispiel: KG 1 = (G 1, M 1, km 1 ) mit: G 1 : siehe vorher M 1 : Wörter über Alphabet km 1 : siehe nebenstehende Zeichnung Essen Dü Köln So D W H

13 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich ADT Knoten Knoten –Beschreibungs- komponenten: ID Markierung –Operationen: Erzeuge Knoten Setze Markierung Liefere ID Liefere Markierung struct Knoten { private: int ID; char * Markierung; public: void Erzeuge_Kn (int, char*); void Set_Marke (char*); int Get_ID (); char* Get_Marke (); };

14 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich ADT Kante Kante –Beschreibungs- komponenten: "Start"-Knoten "Ziel"-Knoten –Operationen: (Erzeuge Kante) Setze Startknoten Setze Zielknoten Liefere Startknoten Liefere Zielknoten struct Kante { private: Knoten * StartKn; Knoten * ZielKn; public: void Set_StartKn (Knoten *); void Set_ZielKn (Knoten *); Knoten * Get_StartKn (); Knoten * Get_ZielKn (); };

15 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich ADT Graph Graph Menge der Knoten Menge der Kanten –Operationen: Erzeuge (leeren) Graphen Füge Knoten/Kante ein Lösche Knoten/Kante Graph ist leer ? Enthält Knoten/ Kante x ? Gib den Graphen aus struct Graph { private: Knotenlistenelement* Knotenliste; Kantenlistenelement* Kantenliste; Kantenlistenelement* Hilf; public: void Init(); void Knoten_Einfuegen(int, char*); void Kante_Einfuegen(int, int); void Knoten_Loeschen(int); void Kante_Loeschen(int); bool Istleer(); bool IstKnotenda(int); bool IstKanteda(int, int); void Druck(); };

16 Kap 13: Ungerichtete GraphenVorl EINI-I"Prof. Dr. G. Dittrich ADT Graph Hilfsgrößen Graph Hilfsgrößen Knoten/Kanten zur Verwendung in Listen "einpacken" struct Knotenlistenelement { Knoten aktKnoten; Knotenlistenelement * naechsterKn; }; struct Kantenlistenelement { Kante aktKante; Kantenlistenelement * naechsteKa; }; Programm:


Herunterladen ppt "EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido"

Ähnliche Präsentationen


Google-Anzeigen