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

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
Ein- und Ausgabe von Dateien
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Claudio Moraga; Gisbert Dittrich
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Claudio Moraga; Gisbert Dittrich
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 4 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 2 Gisbert Dittrich; Claudio Moraga FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 11 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Vorlesung Binärer Suchbaum II-
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Algorithmen und Datenstrukturen 1 SS 2002
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
 Präsentation transkript:

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

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Gliederung Kapitel 9 Einfache Dateibehandlung Beispiel: Wörter zählen –Problem, Datenstruktur –Einfügen: Strategie + Implementierung –Alphabetisch geordnete Ausgabe: Strategie + Impl. Durchlaufstrategien –In die Tiefe Inorder Präorder Postorder –In die Breite

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Dateien Einfache Dateibehandlung –(externe Dateien, Öffnen, Lesen/Schreiben, Schließen). –Am Beispiel: Problem, die Wörter in einem gegebenen Text zu zählen und sie mit ihrer Häufigkeit alphabetisch geordnet auszugeben. Zunächst: Dateien Lies aus einer Eingabe-Datei, schreibe in eine Ausgabe-Datei. Am elementaren Beispiel. Programm

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Dateien #include bindet die Bibliothek zur Dateibehandlung ein Bindung von Datei-Variablen (im Programm) an Dateien (im Dateisystem) beim Öffnen der Datei. ifstream *Eingabedatei; EingabeDatei = new ifstream (inpDat); Benutzung von Dateien: wie Standard Ein-/Ausgabe –ifstream : Eingabe - ofstream : Ausgabe Benutzung: wie cin –*Eingabedatei >> gelesen;

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Dateien Testen: !(*Eingabedatei).eof() (liefert "true" genau dann, wenn das Ende der Datei noch nicht erreicht ist; eof: end of file) Analog: ofstream *AusgabeDatei; Werden Dateien zum Schreiben geöffnet, so geht meist ihr vorheriger Inhalt verloren.

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Wörter zählen Problem: –zähle die Wörter in einem gegebenen Text, –gib sie mit ihrer Häufigkeit alphabetisch geordnet aus. Datenstruktur: –binärer Suchbaum (--> Wörter lassen sich ordnen) –erweitert um einen Zähler.

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Datenstruktur zum Zählen von Wörtern text zaehler LSohnRSohn struct BinBaum { char text[maxLen]; int zaehler; BinBaum * LSohn, *RSohn; } ;

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Strategie zum Einfügen Suchen nach einer Zeichenkette im binären Suchbaum –Zeichenkette nicht gefunden: neuen Knoten einfügen, Zähler zu 1 initialisieren –Zeichenkette gefunden: Zähler um 1 erhöhen

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich void strcpy(char *, char *); int strcmp(char *, char *); BinBaum * Einfuegen(BinBaum *B, char * k) { if (B == NULL) { BinBaum *Hilf = new BinBaum; strcpy(Hilf->text, k); Hilf->zaehler = 1; Hilf->LSohn = Hilf->RSohn = NULL; return Hilf; } else { int Vergl = strcmp(B->text,k); if (Vergl < 0) B->RSohn = Einfuegen(B->RSohn, k); else if (Vergl > 0) B->LSohn = Einfuegen(B->LSohn, k); else if (Vergl == 0) B->zaehler += 1; return B; } Text noch nicht gesehen Text bekannt: einfügen, Zähler erhöhen

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Alphabetisch geordnete Ausgabe Behauptung: Nachfolgender Durchlauf liefert als Resultat: –geordnete Ausgabe Durchlaufstrategie: –Durchlaufe den binären Suchbaum mit Wurzel w rekursiv wie folgt: Durchlauf durch den linken Unterbaum von w Ausdruck (der Nutzinfo) der Wurzel w Durchlauf durch den rechten Unterbaum von w

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Beispiel (Baumdurchlauf)

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Beweis Durch vollständige Induktion nach der Anzahl der Knoten –Der Induktionsbeginn (kein Knoten) ist erfüllt –Der Induktionsschritt: der linke Unterbaum wird geordnet ausgegeben (IV), dann wird die Wurzel ausgegeben, dann wird der rechte Unterbaum geordnet ausgegeben (IV). (Die Wurzel steht bzgl. der Ordnung "in der Mitte".)

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Programmtext: Ausdrucken void KnotenDruck(BinBaum *, ofstream *); void Ausdrucken(BinBaum *K, ofstream *aus) { if (K != NULL) { Ausdrucken(K->LSohn, aus); KnotenDruck(K, aus); Ausdrucken(K->RSohn, aus); } } Programm

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Anmerkungen Zugriff auf Ein- und Ausgabedateien wird über Zeiger auf ifstream- und ofstream- Variablen bewirkt. Initialisierungen –EingabeDatei = new ifstream(inpDat); –AusgabeDatei = new ofstream(outpDat); Varianten (Ausgabedateien als Konstante bekannt) z.B.: –ofstream *Ausgabe = new ofstream("von.aus");

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich BinBaum * Einfuegen(BinBaum *, char *); BinBaum * Einlesen(ifstream *inp) { BinBaum *bst = NULL; char gelesen[maxLen]; *inp >> gelesen; while (!(*inp).eof()) { bst = Einfuegen(bst, gelesen); *inp >> gelesen; } return bst; } Feinheiten: *inp und (*inp).eof()

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Analog: Ausgabe void Schreiben(char *, int, ofstream *); void KnotenDruck(BinBaum *T, ofstream *aus){ Schreiben(T->text, T->zaehler, aus); } void Schreiben( char * s, int k, ofstream *aus ){ *aus << k << "\t\t\t" << s << endl; }

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Durchlauf durch Bäume Diese Art des Durchlaufs heißt Inorder-Durchlauf. w BLinksBRechts Inorder () Inorder(Wurzel BLinks) Druck(w) Inorder(Wurzel BRechts) =

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich w BLinksBRechts Präorder () Präorder(Wurzel BLinks) Druck(w) Präorder(Wurzel BRechts) =

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich w BLinks BRechts Postorder ( ) Postorder(Wurzel BLinks) Druck(w) Postorder(Wurzel BRechts) =

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Durchlaufstrategien Strategie bei allen drei Durchlaufarten heißt Tiefensuche: Es wird zunächst in die Tiefe und nicht in die Breite gegangen. Alternative: Breitensuche Trage den Baum "schichtenweise" ab.

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Beispiel Breitensuche

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Idee zur Implementation Verwalte die Knoten in einer "Warteschlange" ein Knoten wird gedruckt seine Söhne werden in die Warteschlange eingefügt bis die Warteschlange leer ist Initialisierung der Warteschlange mit der Wurzel des Baums.

Kap 9: DurchlaufstrategienVorl EINI-I"Prof. Dr. G. Dittrich Beispiel