Zeichenketten. Hauptseminar Hallo Welt! für Fortgeschrittene. SS Mai 2006 Tobias Hager.

Größe: px
Ab Seite anzeigen:

Download "Zeichenketten. Hauptseminar Hallo Welt! für Fortgeschrittene. SS 2006 10. Mai 2006 Tobias Hager. Tobias.Hager@e-technik.stud.uni-erlangen."

Transkript

1 Zeichenketten Hauptseminar Hallo Welt! für Fortgeschrittene SS Mai 2006 Friedrich-Alexander Universität Erlangen-Nürnberg

2 Gliederung 2 1. Motivation 2. Allgemeines zu Zeichenketten 3. String Matching - Naiver Algorithmus - Algorithmus von Knuth-Morris-Pratt - Boyer-Moore Algorithmus - Rabin-Karp Algorithmus 4. Tries - Suffix- - PATRICIA- 5. Zusammenfassung und Ausblick

3 Motivation 3 Suchen von Mustern gehört zu den grundlegenden Problemen der Informatik! Sicherer Umgang mit Zeichenketten ist auch von entscheidender Bedeutung für die erfolgreiche Teilnahme am ICPC! Beispiele: Internetsuchmaschinen durchsuchen eine riesige Menge von Zeichenketten: Gemeldete Domains 2005 in Deutschland ~ 8.8 Mio Suche von Mustern in einer DNA Sequenz: (menschliches Genom) 3 Milliarden Basenpaare! ~ Gene Durchschnittliche Genlänge: Basenpaare effiziente Algorithmen notwendig

4 Allgemeines zu Zeichenketten ASCII 4 ASCII = Amercian Standard Code for Information Interchange Darstellung durch 1 Byte, wobei erstes Bit immer auf 0 gesetzt ist Somit sind 2 7 = 128 Zeichen darstellbar Nicht druckbar sind die Zeichen 0 bis 31 und 127 Uneinheitliche Verwendung von \n (newline) und \r (carriage-return) Zeichentabelle abrufbar mit man ascii

5 Allgemeines zu Zeichenketten ASCII-Tabelle 5

6 Allgemeines zu Zeichenketten UNICODE & ISO Zeichen sind viel zu wenig Erweiterung nötig Anfangs viele verschiedene Standards Mittlerweile Unicode und ISO als Standard Vor dem Verarbeiten von elektronischen Texten muss der Zeichensatz eingestellt werden: - HTML: <meta http-equiv="content-type" content="text/html; charset=utf-8"> - Content-Type: text/plain;charset="iso "

7 Allgemeines zu Zeichenketten UNICODE für C/C++ 7 wide character type: wchar_t (2 Byte groß) In der Header-Datei whar.h sind die Funktionen zum Bearbeiten des Datentyps definiert Die alphabetische Sortierung ist bei Unicode aufwändiger als bei ASCII, da bei ASCII die Buchstaben und Ziffern sequentiell angeordnet sind und so schnell sortiert werden kann Beispiel: char string[] = "Hallo"; wchar_t wstring[] = L"Hallo"; Das L vor Zeichenkette sagt dem Compiler, dass es sich um eine Zeichenkette mit 2-Byte Elementen handelt Für weitere Infos siehe:

8 Allgemeines zu Zeichenketten UNICODE Java 8 In Java ist der Datentyp char 16 Bit groß Damit können von vornherein schon mehr Zeichen dargstellt werden Unicode ist darin bereits enthalten Ein spezielles Unicode-Zeichen kann mit \u0000 bis \uffff in einen String eingefügt werden ABER: Unicode 4.0 definiert wesentlich mehr als Zeichen Lösung: Supplementary Characters, die mit neuen Funktionen und Methoden auf vorzeichenbehafteteten 32 Bit Integer-Werten arbeiten

9 Allgemeines zu Zeichenketten Repräsentation im Rechner 9 1.) NULL-terminiertes Feld Zeichen werden sequentiell in einem Feld gespeichert, durch den NULL-Character \0 wird das Ende markiert Verwendung in C / C++ 2.) Feld plus Länge Java: Länge der Zeichenkette wird am Anfang des Feldes gespeichert Feld in Java natürlich nur intern, nach außen hin String-Objekt 3.) Verkettete Liste je Zeichen muss auch noch ein Zeiger auf das nächste Zeichen mit gespeichert werden

10 Allgemeines zu Zeichenketten Operationen (1) 10 Speicherbedarf Ermitteln der Stringlänge 1.) (Stringlänge + 1) * Zeichengröße 1.) O(n) (Bis zum NULL-Character durchzählen) 2.) (Stringlänge + 1) * Zeichengröße 2.) O(1) (Länge steht am Anfang des Feldes) 3.) (Zeichengröße + Zeigergröße) * Stringlänge 3.) O(n) (Bis zum NULL-Character durchzählen) 1.) Feld + \0 2.) Länge + Feld 3.) Verkettete Liste

11 Allgemeines zu Zeichenketten Operationen (2) 11 Zugriff auf ein beliebiges Zeichen Einfügen und Löschen 1.) O(1) 1.) O(n) (alle nachfolgende Zeichen verschieben) 2.) O(1) 2.) O(n) (alle nachfolgende Zeichen verschieben) 3.) O(n) 3.) O(1) (Zeiger neu setzen) 1.) Feld + \0 2.) Länge + Feld 3.) Verkettete Liste

12 String Matching Allgemein 12 Zeichenfolge: 1. Text Buchstaben, Sonderzeichen und Ziffern Der Text ist meist sehr umfangreich Effiziente Algorithmen notwendig 2. Binärfolge Darstellung durch Einsen und Nullen (spezielle Text-Zeichenfolge) häufig bei Darstellung von Grafiken / Bilderverarbeitung Spezielle Algorithmen notwendig

13 String Matching Allgemein 13 String Matching: Suche nach dem exakten Muster Pattern Matching: Suche nach einem ähnlichen Muster Zwei verschiedene Problemstellungen bei der Suche in einem Text: (beide Punkte können sowohl ähnliche als auch exakte Muster beinhalten) 1. Muster vorgegeben, mehrere Texte danach durchsuchen schneller Suchalgorithmus notwendig 2. Text vorgegeben und nach mehreren Muster durchsuchen (DNA) komplexere und aufwändiger Vorverarbeitung möglich wobei die häufigen Muster unbekannt sind nennt sich auch Warenkorbanalyse oder Association rule mining

14 String Matching Naive Suche Idee 14 Problem: Finde in einem Text der Länge N ein vorgegebenes Muster der Länge M Idee: Vergleiche je Schritt ein Zeichen des Musters und ein Zeichen des Textes. Bei einer Nichtübereinstimmung wird das Vergleichsfenster um eine Position nach rechts geschoben

15 String Matching Naive Suche Beispiel 15 Der Text wird von links nach rechts mit dem Muster verglichen Übereinstimmungen sind grün markiert Die rot markierten Buchstaben zeigen die Nichtübereinstimmungen, bei deren Auftreten das komplette Muster um eine Position nach rechts geschoben wird

16 String Matching Naive Suche Der Algorithmus 16 int naive (char *text, int N, char *muster, int M) { int i = 0, j = 0; /*Solange Text noch nicht am Ende und Muster nicht ganz durchlaufen*/ while (j < M && i < N) { if (text[i] == muster[j]) { i++; j++; } else { i = i - j + 1; // Verschiebung des Musters um eine Stelle j = 0; Textlänge N } Musterlänge M } } Normalerweise M<<N /*Gibt Position beim Match und -1 beim Mismatch zurück*/ if (j == M) { return i - M; } else { return -1; }

17 String Matching Naive Suche Zusammenfassung 17 Zeichenweiser Vergleich von Text und Muster Zurücksetzen auf Anfangsposition + 1, wenn Zeichen nicht übereinstimmen Keine Vorbereitungsphase Im schlimmsten Fall N-M+1 Durchläufe der while-schleife und M Durchläufe der if-abfrage Aufwand: Im Durchschnitt lineare Laufzeit Worst-Case: O(M*N) Vergleiche: Erwartet maximal 2*N+M Vergleiche Average-Case: O(N) Vorbereitungsphase: keine Zus. Speicheraufwand: keiner

18 String Matching Knuth-Morris-Pratt Idee 18 Wie kann der naive Algorithmus verbessert werden? Idee: Stimmt der Text mit dem Muster an Position i nicht mehr überein, wissen wir bereits wie die Zeichen vor Position i aussehen und müssen den Zeiger nicht mehr komplett zurück setzen Durch einige Überlegungen kann sogar erreicht werden, dass i überhaupt nicht mehr dekrementiert werden muss!

19 String Matching Knuth-Morris-Pratt Randberechnung 19 Ausnutzung der bereits erfolgreich verglichenen Zeichen Betrachtung, wo im Muster die übereinstimmenden Zeichen noch einmal vorkommen Der Rand ist ein Teilwort der Zeichenkette, das sowohl am Anfang als auch am Ende der Zeichenkette vorkommt Das leere Wort Epsilon hat keinen Rand Ein einzelner Buchstabe hat als Rand das leere Wort Dadurch Verschiebungen um größere Bereiche möglich Verbesserung der Laufzeit

20 String Matching Knuth-Morris-Pratt Randberechnung 20 An Position i+j ist eine Nichtübereinstimmung aufgetreten (rotes Kästchen) Die vorhergehenden Zeichen haben übereingestimmt (hellgrün) Haben diese Zeichen einen Rand (dunkelgrün), kann das Muster soweit nach rechts geschoben werden, bis die Ränder übereinstimmen Das Vergleichsfenster startet wieder an Position i+j im Text

21 String Matching Knuth-Morris-Pratt Randberechnung 21 aabaa j i rand[j] i=0;i=-1; ababa j i rand[j] i=-1; i=1; i=2; i=3; Ränder können sich überlappen!

22 String Matching Knuth-Morris-Pratt Randberechnung 22 void init_rand (int *rand, char *muster, int M) { int i = 0, j; rand[0] = -1; /*Epsilon hat keinen Rand*/ rand[1] = 0; /* Ein einzelner Buchstabe hat als Rand das leere Wort*/ } for (j = 2 ; j <= M; j++) { /*Prüfe ob bestehender Rand erweiterbar ist*/ while (i >= 0 && (muster[i]!= muster[j-1])) { i = rand[i]; } i++; rand[j] = i; }

23 String Matching Knuth-Morris-Pratt Der Algorithmus 23 int KMP (char *text, int N, char *muster, int M) { int i=0, j=0; int rand[m + 1]; init_rand (rand, muster, M); /*Vorverarbeitung: Ränder berechnen */ while (i <= N - M) { while (text[i + j] == muster[j]) { j++; if(j == M) { return i; // Stelle des Matches ausgeben } } } i = i + j rand[j]; /*j rand[j] > 0! */ j = max{0, rand[j]}; } return -1;

24 String Matching Knuth-Morris-Pratt Laufzeitanalyse 24 KMP ist geeignet für inkrementelle Suche (z.b. Firefox, Emacs) Der Suchalgorithmus findet bereits eingegebene Präfixe des Musters Die Randtabelle wird inkrementell für den bekannten Teil des Suchwortes berechnet und mit jedem neuen Zeichen erweitert Vergleiche: Tabellenberechnung 2*M-1 Vergleiche Aufwand: Worst-Case: O(N+M) KMP-Algorithmus 2*N-M+1 Vergleiche Insgesamt maximal 2*N+M Vergleiche Avarage-Case: O(N) Vorbereitsungsphase: O(M) Zus. Speicheraufwand: O(M)

25 String Matching Knuth-Morris-Pratt Zusammenfassung 25 Vergleicht von links nach rechts KMP behält lineare Laufzeit im Worst-Case bei Starke Verbesserung für selbstwiederholende Muster (Bitfolgen) Ansonsten keine nennenswerten Vorteile gegenüber Naiver Suche ABER: Sequentielles Durchlaufen ohne Zurücksetzen geeignet für Dateneinlesen von externen Geräten

26 String Matching Boyer-Moore Idee 26 Wie kann eine weitere Verbesserung erreicht werden? Idee: Vergleich von Muster und Text von rechts nach links! Den nächsten Schritt ausführen auf Basis des Musters des Zeichens das die Nichtübereinstimmung ausgelöst hat Voraussetzung: Das Zurücksetzen darf nicht kompliziert sein.

27 String Matching Boyer-Moore 27 Der Boyer-Moore Algorithmus setzt sich aus 2 Strategien zusammen: 1. Strategie für unpassende Zeichen (Bad-character-heuristics) Das Zeichen, das den Mismatch ausgelöst hat, kommt im Muster nicht vor Verschiebung um M Positionen möglich Das Zeichen, das den Mismatch ausgelöst hat, kommt im Muster vor Muster in Übereinstimmung mit diesem Zeichen bringen kommt das Zeichen mehr als ein Mal vor, wird das Muster mit dem am weitesten rechts stehenden Zeichen in Übereinstimmung gebracht

28 String Matching Boyer-Moore Vergleich e und r : e kommt im Muster an Position 2 vor Muster um 5 Positionen nach rechts schieben 2. Vergleich t und r : t kommt im Muster nicht vor Muster um 7 Positionen nach rechts schieben usw.

29 String Matching Boyer-Moore Gutes-Ende - Strategie (Good-suffix-heuristics) Das Suffix, das hinter dem Zeichen, welches den Mismatch ausgelöst hat, steht, kommt noch an anderer Stelle im Muster vor und kann bis dorthin verschoben werden Das Suffix kommt vollständig noch einmal im Muster vor

30 String Matching Boyer-Moore 30 Das Suffix kommt nur teilweise im Muster vor Das Suffix kommt nicht mehr im Muster vor Verschiebung um M Positionen nach rechts

31 String Matching Boyer-Moore Der Algorithmus 31 int BM (char *text, int N, char *muster, int M) { int i=0, j, temp1, temp2; int f[m+1], goodsuffix[m+1], badchar[asize]; } initsz (badchar, ASIZE, muster, M); /* Vorverarbeitung: */ initge1 (goodsuffix, f, muster, M); /* Schiebematrizen berechnen*/ initge2 (goodsuffix, f, muster, M); while (i <= N-M) { } return -1; /*ASIZE = Alphabetgröße*/ j = M-1; while (j >= 0 && (muster[j] == text[i+j])) j--; if (j < 0) { return i; /*Matchposition zurueck geben*/ } /*Wähle groesseren Shift aus beiden Strategien aus*/ i += max (j - badchar[text[i+j]- a ], goodsuffix[j+1]);

32 String Matching Boyer-Moore Bad-Character-Shift 32 void initsz (int *badchar, int asize, char *muster, int M) { int i; char a; /*Falls das Symbol im Muster nicht vorkommt hat es den Wert -1*/ for (i = 0; i < asize ; i++) { badchar[i] = -1; } /*Speichere den Shift für die am weitesten rechts stehenden Symbole des Musters*/ for (i = 0; i < M ; i++) { a = muster[i]; badchar[a - a ] = i; } }

33 String Matching Boyer-Moore Good-Suffix Shift 33 Fall 1: Das übereinstimmende Suffix kommt noch an anderer Stelle im Muster vor ähnlich KMP-Vorbereitungsphase, bestimme zu jedem Suffix die Ränder Zuordnung zwischen gegebenem Rand und kürzestem Suffix, das den Rand hat prüft ob sich ein bereits berechneter Rand fortsetzen lässt für ein Suffix das bei i beginnt, beinhaltet das Feld f[i] die Position seines breitesten Randes Fall 2: Nur ein Teil des übereinstimmenden Suffixes kommt noch im Muster vor belegt die noch freien Einträge von goodsuffix[] Fall 3: Das Suffix kommt gar nicht mehr im Muster vor Verschiebung um M Positionen

34 String Matching Boyer-Moore Gutes-Ende Shift Fall 1 34 void initge1 (int *shift, int *f, char *muster, int M) { int i, j; i = M; j = M +1; f[i] = j; /*Suffix Epsilon (Position M) wird auf M+1 gesetzt*/ } while (i > 0) { while (j <= M && (muster[i-1]!= muster[j-1])) { if (shift[j] == 0) shift[j] = j - i; j = f[j]; } i--; j--; f[i] = j; }

35 String Matching Boyer-Moore Gutes-Ende Shift Fall 2 35 void initge2 (int *shift, int *f, char *muster, int M) { int i,j; j = f[0]; /*f[0] ist breitester Rand des Musters*/ } for (i = 0 ; i <= M ; i++) { /*falls durch GE1 noch nichts eingetragen wurde*/ if (shift[i] == 0) shift[i] = j; if (i == j) j = f[j]; /*Umschalten auf nächstschmaleren Rand*/ }

36 String Matching Boyer-Moore Laufzeitanalyse 36 Vergleiche: Maximal 3(N + M) Textzeichenvergleiche Aufwand: Worst-Case: O(N*M)!! Average-Case: Best-Case: Vorbereitungsphase: O(N) O(N/M) O(M) Zus. Speicheraufwand: O(M)

37 String Matching Boyer-Moore Zusammenfassung 37 Vergleicht von rechts nach links!! Oftmals Verschiebungen um M Positionen möglich wegen der schlechten-zeichen und Guten-Ende - Strategie Im Worst-Case schlechter als KMP, in der Praxis schnellster String-Matching Algorithmus Besonders geeignet für Texte mit vielen Symbolen große Shifts Weniger geeignet für Bitmuster und DNA-Sequenzen, da wegen dem kleinen Alphabet nur wenige schlechte-zeichen Verschiebungen vorkommen und diese Muster oft Wiederholungen enthalten Schiebedistanzen werden kleiner mehr Vergleiche Häufige Verwendung für die Suche in Texteditoren

38 String Matching Rabin-Karp Idee 38 Gibt es vielleicht noch einen ganz anderen Ansatz? Idee: Aus dem Muster wird per Hash-Funktion ein Schlüssel berechnet. (Dieser passt in eine Speicherzelle schnelle Verarbeitung!) Vergleiche den Schlüssel eines Textabschnittes der Länge M mit dem Schlüssel des Muster Es wird quasi ein Fingerabdruck des Musters genommen! Voraussetzungen: Berechnung des Textschlüssels in O(1) Streufunktion muss sehr viele Werte liefern q muss >> M sein

39 String Matching Rabin-Karp Berechnung des Schlüssels 39 Vorbereitungsphase: Berechnung der beiden Schlüssel von Muster und den ersten M Zeichen des Textes Die Berechnung kann z.b. auch mittels dem Hornerschema erfolgen key = text[ i]* basis M 1 + text[ i + 1]* basis M text[ i + M 1] Suchphase: Der Schlüssel des Textes muss sich leicht aus dem Schlüssel des vorherigen Textabschnittes berechnen lassen key = ( key text[ i]* basis M 1 )* basis + text[ i + M ] Wegen der großen Zahlen muss man darauf achten, dass kein Überlauf eintritt!

40 String Matching Rabin-Karp Textschlüsselberechnung 40 Wegen der Streufunktion muss bei einer Übereinstimmung immer noch Zeichenweise verglichen werden, um sicher zu gehen, dass es sich um keine Kollision handelt! Beispiel: Text = q = 13 M = 5 key = keyneu = ( * 10000) * (mod 13) = ( 7 3 * 3 ) * (mod 13) = 8 (mod 13)

41 String Matching Rabin-Karp Beispiel mod 11 = 3

42 String Matching Rabin-Karp Der Algorithmus 42 int KR (char *text, int N, char *muster, int M) { int h1=0, h2=0, dm = 1, i; int q = ; //Primzahl für Streufunktion for (i = 1 ; i < M ; i++) /*Berechnung der höchsten Potenz*/ dm = basis *dm %q; for (i = 0 ; i < M ; i++) /*Berechnung des Musterschlüssels*/ h1 = (h1 * basis + muster[i] a ) % q; for (i = 0 ; i < M ; i++) /*Berechnung des ersten Textschlüssels*/ h2 = (h2 * basis + text[i] - a ) % q; } for (i = 0 ; i <= N M; i++) { if (h1 == h2 && memcmp(muster,text+i,m) == 0) return i; h2 = (h2 + basis * q - (text[i] a ) * dm) % q; h2 = (h2 * basis + (text[i + M] a ) ) % q; //h2 beinhaltet den Schlüssel zum aktuellen Textfenster } return -1;

43 String Matching Rabin-Karp Laufzeitanalyse 43 Aufwand: Worst-Case: Average-Case: Vorbereitungsphase: O(N*M) O(N+M) O(M) Zus. Speicheraufwand: keiner

44 String Matching Rabin-Karp Zusammenfassung 44 Vergleicht ähnlich dem naiven Algorithmus einzelne Textfenster Hashfunktion bildet Muster und Textfenster auf eine Zahl ab Benötigt keine Hashtabelle Hat in den allermeisten Fällen eine lineare Laufzeit Eignet sich auch für 2-dimensionales Matching

45 Tries 45 I think that I shall never see A poem lovely as a tree. Poems are made by fools like me, But only God can make a tree. Joyce Kilmer, "Trees," 1914

46 Tries 46 Wortverquickung von tree und re-trie-val (Suchen, Wieder finden) Ist eine Datenstruktur, in der eine Menge von Wörtern abgespeichert werden kann Schlüssel sind die Pfade von der Wurzel zu einem Blatt Kanten, die vom gleichen Knoten ausgehen müssen verschiedene Beschriftungen haben

47 Tries Beispiel 47

48 Suffix-Tries 48 Ein Suffix-Trie ist ein Trie für alle Suffixe des Wortes Suffix Index Damit kein Suffix Präfix eines anderen Suffixes ist wird $ ans Ende jedes Suffixes gehängt

49 Suffix-Tries Beispiel für abbaba$ 49

50 Suffix-Tries Anwendungen 50 Prüfen, ob Muster der Länge M Teilstring des Textes ist in O(M) Die Anzahl z der Muster in dem Text in O(M+z) finden Nach einem regulären Ausdruck in linearer Zeit suchen Nach einem Muster mit x Mismatchen suchen O(M*sigma+x+z) (Pattern Matching) Finden des längsten gemeinsamen Teilwortes aller Zeichenketten ( longest common substring problem ) in O(n) Das am häufigsten auftauchende Teilwort minimaler Länge in O(n) Beispiele: Bioinformatik DNA Analyse Datenkomprimierung (sich wiederholende Daten finden) Compilerbau: Precedural abstraction

51 Suffix-Tries Aufbau 51 Wie erstelle ich einen Suffix-Trie? Naiver Ansatz: Füge alle Suffixe vom größten bis zum kleinsten der Reihe nach ein Aufbauen des Suffix-Tries mit der naiven Methode: O(N³) Verbesserung: Speichere am Ende jedes Suffixes einen Verweis auf das nächste kürzere Suffix Aufbau zusammen mit Suffix-Links: O(N²) Größe des Suffix-Tries (Knotenanzahl): O(N²) Optimierung notwendig!

52 Suffix-Tries Aufbau mit Suffix-Links 52

53 PATRICIA-Tries 53 Practical Algorithm to Retrieve Information Coded in Alphanumeric Kompaktifizierung durch Zusammenfassen von Knoten mit nur einem Kind zu einer Kante kompaktifizierte Suffix-Tries nennt man Suffix-Trees Dadurch weniger Knoten, aber eine größere Kantenbeschriftung Lösung durch Verwendung von Referenzen Verbesserung des Platzbedarfs und der Laufzeit

54 PATRICIA-Tries Beispiel 54

55 Suffixtries Ukkonens Online Algorithmus 55 Sehr komplizierter Algorithmus, dafür Aufbau in linearer Zeit möglich Ansatz ist wie beim Suffix-Trie Das Suffix endet aber nicht zwangsläufig in einem Knoten Verbessert die Laufzeit durch Vorverarbeitung des Textes Aufbau des Suffix-Tries in O(N) Zusätzlicher Speicherplatz: O(N)

56 Zusammenfassung und Ausblick 56 Welcher Suchalgorithmus verwendet werden sollte hängt vom jeweiligen Anwendungsfall ab: Pattern-Matching String-Matching Einfachsuche Mehrfachsuche Beachte, ob sich der algorithmische Aufwand überhaupt lohnt! Für kurze Zeichenketten reicht eventuell schon der naive Algorithmus oder man strstr

57 Literaturverzeichnis Bücher 57 Volker Heun, Grundlegende Algorithmen, 2.Auflage, Friedr. Vieweg & Sohn Verlag Robert Sedgewick, Algorithmen, 1. Auflage, Addision-Wesley Cormen, Rivest, Stein,Leiserson, Introduction to Algorithms, 2nd Edition, MacGraw- Hill Book Company Uwe Schöning, Algorithmik, 1.Auflage, Spektrum Akademischer Verlag GmbH Skiena, Revilla, Programming Challenges, 1st Edition, Springer Verlag

58 Literaturverzeichnis Internet 58 [1]Skriptum zur Vorlesung Algorithmische Bioinformatik I/II, Volker Heun, TU München [2] Exakt String Matching Algorithms, Christrian Charras, Université de Rouen [3]Textsuch-Algorithmen, H.W. Lang, FH Flensburg [4]Allgemeines zu Zeichenketten und String-Matching

59 Grafikverzeichnis 59 Folie Grafiktitel Quelle 5 ASCII-Tabelle [4] 16 Naiver Algorithmus 20 Randverschiebung [1] Seite Bad-Character Shift 29 Good-Suffix-Shift [2] Boyer-Moore 40 Karp-Rabin 46 Monatsnamen-Trie [1] Seite Suffix-Trie [1] Seite Suffix-Links [1] Seite Patricia-Trie 2 [4] Suffix_tree

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt 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 - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Seite 1/7 Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.) Hier sehen Sie eine Anleitung wie man einen Serienbrief erstellt. Die Anleitung

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 15: Reguläre Ausdrücke und rechtslineare Grammatiken Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/25 Was kann man mit endlichen

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

FH-SY Chapter 2.4 - Version 3 - FH-SY.NET - FAQ -

FH-SY Chapter 2.4 - Version 3 - FH-SY.NET - FAQ - FH-SY Chapter 2.4 - Version 3 - FH-SY.NET - FAQ - Version vom 02.02.2010 Inhaltsverzeichnis 1. KANN ICH BEI EINER EIGENEN LEKTION NACHTRÄGLICH NOCH NEUE LERNINHALTE ( WAS WURDE BEHANDELT? ) EINFÜGEN?...

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: ralf@informatik.uni-bonn.de Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41

Zeichenketten. Michael Fularczyk Michael Fularczyk Zeichenketten / 41 Zeichenketten Michael Fularczyk 17.05.2011 Michael Fularczyk Zeichenketten 17.05.2011 1 / 41 Inhalt Zeichenketten Zeichensätze Darstellung Suchverfahren naive Stringsuche Knuth-Morris-Pratt Boyer-Moore

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73

Synchronisierung. Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73 Synchronisierung Kommunikationstechnik, SS 08, Prof. Dr. Stefan Brunthaler 73 Übertragungsprozeduren Die Übertragung einer Nachricht zwischen Sender und Empfänger erfordert die Übertragung des Nutzsignals

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Auswahlabfragen mit ACCESS

Auswahlabfragen mit ACCESS Auswahlabfragen mit ACCESS Abfragekriterien und Operatoren Beim Entwerfen von ACCESS-Auswahlabfragen (queries) sind definierte Abfragekriterien bzw. Operatoren zu benutzen. Ein Abfragekriterium ist eine

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

Informatik Grundlagen, WS04, Seminar 13

Informatik Grundlagen, WS04, Seminar 13 Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt

Mehr

Kapitel 3. Codierung von Text (ASCII-Code, Unicode)

Kapitel 3. Codierung von Text (ASCII-Code, Unicode) Kapitel 3 Codierung von Text (ASCII-Code, Unicode) 1 Kapitel 3 Codierung von Text 1. Einleitung 2. ASCII-Code 3. Unicode 2 1. Einleitung Ein digitaler Rechner muss jede Information als eine Folge von 0

Mehr

Erweiterungen Webportal

Erweiterungen Webportal Erweiterungen Webportal Adress-Suche Inaktive Merkmale und gelöschte Adresse Die Suche im Webportal wurde so erweitert, dass inaktive Adresse (gelöscht) und inaktive Merkmale bei der Suche standardmässig

Mehr

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

OECD Programme for International Student Assessment PISA 2000. Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland OECD Programme for International Student Assessment Deutschland PISA 2000 Lösungen der Beispielaufgaben aus dem Mathematiktest Beispielaufgaben PISA-Hauptstudie 2000 Seite 3 UNIT ÄPFEL Beispielaufgaben

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Approximation durch Taylorpolynome

Approximation durch Taylorpolynome TU Berlin Fakultät II - Mathematik und Naturwissenschaften Sekretariat MA 4-1 Straße des 17. Juni 10623 Berlin Hochschultag Approximation durch Taylorpolynome Im Rahmen der Schülerinnen- und Schüler-Uni

Mehr

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder

Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Übungskomplex Felder (1) Eindimensionale Felder Mehrdimensionale Felder Hinweise zur Übung Benötigter Vorlesungsstoff Ab diesem Übungskomplex wird die Kenntnis und praktische Beherrschung der Konzepte

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Brückenkurs Mathematik TU Dresden 2015 Lineare Gleichungssysteme Schwerpunkte: Modellbildung geometrische Interpretation Lösungsmethoden Prof. Dr. F. Schuricht TU Dresden, Fachbereich Mathematik auf der

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Grundlagen der Informatik I Informationsdarstellung

Grundlagen der Informatik I Informationsdarstellung Grundlagen der Informatik I Informationsdarstellung Einführung in die Informatik, Gumm, H.-P./Sommer, M. Themen der heutigen Veranstaltung. ASCIi Code 2. Zeichenketten 3. Logische Operationen 4. Zahlendarstellung

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Tutorium Algorithmen & Datenstrukturen

Tutorium Algorithmen & Datenstrukturen June 16, 2010 Binärer Baum Binärer Baum enthält keine Knoten (NIL) besteht aus drei disjunkten Knotenmengen: einem Wurzelknoten, einem binären Baum als linken Unterbaum und einem binären Baum als rechten

Mehr

Theoretische Grundlagen der Informatik

Theoretische Grundlagen der Informatik Theoretische Grundlagen der Informatik Vorlesung am 12.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung Problem: Um AutoCAD abwechselnd auf mehreren Rechnern einsetzen zu können konnte man bis AutoCAD 2000 einfach den Dongle umstecken. Seit AutoCAD 2000i

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten. Personenverzeichnis Ab dem Wintersemester 2009/2010 wird das Personenverzeichnis für jeden Mitarbeiter / jede Mitarbeiterin mit einer Kennung zur Nutzung zentraler Dienste über das LSF-Portal druckbar

Mehr

Anwendungsbeispiele Buchhaltung

Anwendungsbeispiele Buchhaltung Rechnungen erstellen mit Webling Webling ist ein Produkt der Firma: Inhaltsverzeichnis 1 Rechnungen erstellen mit Webling 1.1 Rechnung erstellen und ausdrucken 1.2 Rechnung mit Einzahlungsschein erstellen

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Erstellen der Barcode-Etiketten:

Erstellen der Barcode-Etiketten: Erstellen der Barcode-Etiketten: 1.) Zuerst muss die Schriftart Code-39-Logitogo installiert werden! Das ist eine einmalige Sache und muss nicht zu jeder Börse gemacht werden! Dazu speichert man zunächst

Mehr

Übungsaufgaben Tilgungsrechnung

Übungsaufgaben Tilgungsrechnung 1 Zusatzmaterialien zu Finanz- und Wirtschaftsmathematik im Unterricht, Band 1 Übungsaufgaben Tilgungsrechnung Überarbeitungsstand: 1.März 2016 Die grundlegenden Ideen der folgenden Aufgaben beruhen auf

Mehr

Datenaufbereitung in SPSS. Daten zusammenfügen

Datenaufbereitung in SPSS. Daten zusammenfügen Daten zusammenfügen I. Fälle hinzufügen Diese Schritte müssen Sie unternehmen, wenn die Daten in unterschiedlichen Dateien sind; wenn also die Daten von unterschiedlichen Personen in unterschiedlichen

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen Elektronik Praktikum / Digitaler Teil Name: Jens Wiechula, Philipp Fischer Leitung: Prof. Dr. U. Lynen Protokoll: Philipp Fischer Versuch: 3 Datum: 24.06.01 RS-Flip Flop, D-Flip Flop, J-K-Flip Flop, Zählschaltungen

Mehr

Vorabversion. Schulung am 06.08.13. www.winterhoff.de. Homepage Administration und Pflege

Vorabversion. Schulung am 06.08.13. www.winterhoff.de. Homepage Administration und Pflege Vorabversion Schulung am 06.08.13 www.winterhoff.de Homepage Administration und Pflege 1. Anmeldung auf der Homepage Die Anmeldung auf der Homepage erfolgt über den nachfolgenden Link durch Eingabe des

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Eigene Dokumente, Fotos, Bilder etc. sichern

Eigene Dokumente, Fotos, Bilder etc. sichern Eigene Dokumente, Fotos, Bilder etc. sichern Solange alles am PC rund läuft, macht man sich keine Gedanken darüber, dass bei einem Computer auch mal ein technischer Defekt auftreten könnte. Aber Grundsätzliches

Mehr

Access 2010. Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012. inkl. zusätzlichem Übungsanhang ACC2010-UA

Access 2010. Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012. inkl. zusätzlichem Übungsanhang ACC2010-UA Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli 2012 Access 2010 Grundlagen für Anwender inkl. zusätzlichem Übungsanhang ACC2010-UA 3 Access 2010 - Grundlagen für Anwender 3 Daten in Formularen bearbeiten

Mehr

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen Die folgenden Schritte sind für die Verbuchung von Studien- bzw. Prüfungsleistungen notwendig. Eine Online-Anleitung mit vielen weiterführenden

Mehr

Mining High-Speed Data Streams

Mining High-Speed Data Streams Mining High-Speed Data Streams Pedro Domingos & Geoff Hulten Departement of Computer Science & Engineering University of Washington Datum : 212006 Seminar: Maschinelles Lernen und symbolische Ansätze Vortragender:

Mehr

Informatikgrundlagen (WS 2015/2016)

Informatikgrundlagen (WS 2015/2016) Informatikgrundlagen (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

Mehr

Um eine Person in Magnolia zu erfassen, gehen Sie wie folgt vor:

Um eine Person in Magnolia zu erfassen, gehen Sie wie folgt vor: Personendaten verwalten mit Magnolia Sie können ganz einfach und schnell alle Personendaten, die Sie auf Ihrer Webseite publizieren möchten, mit Magnolia verwalten. In der Applikation Adressbuch können

Mehr

Hallo Welt für Fortgeschrittene

Hallo Welt für Fortgeschrittene Hallo Welt für Fortgeschrittene Zeichenketten von Christopher Saloman Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht 1. Was sind Zeichenketten und wofür braucht man sie? 2. Suchen

Mehr

IT-Basics 2. DI Gerhard Fließ

IT-Basics 2. DI Gerhard Fließ IT-Basics 2 DI Gerhard Fließ Wer bin ich? DI Gerhard Fließ Telematik Studium an der TU Graz Softwareentwickler XiTrust www.xitrust.com www.tugraz.at Worum geht es? Objektorientierte Programmierung Konzepte

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Lehreinheit E V2 Verschlüsselung mit symmetrischen Schlüsseln

Lehreinheit E V2 Verschlüsselung mit symmetrischen Schlüsseln V-Verschlüsslung Lehreinheit Verschlüsselung mit symmetrischen Schlüsseln Zeitrahmen 70 Minuten Zielgruppe Sekundarstufe I Sekundarstufe II Inhaltliche Voraussetzung V1 Caesar-Chiffre Für Punkt 2: Addieren/Subtrahieren

Mehr

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik

Hochschule München, FK 03 FA SS 2012. Ingenieurinformatik Hochschule München, FK 03 FA SS 2012 Ingenieurinformatik Zulassung geprüft vom Aufgabensteller: Teil 1/Aufgabe 1: 30 Minuten ohne Unterlagen, Teil 2/Aufgaben 2-4: 60 Minuten, beliebige eigene Unterlagen

Mehr

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD. Das DAAD-PORTAL Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD. November 2012 Man findet das neue Portal auf der Webseite vom DAAD : www.daad.de/ Danach erscheint ein neues Fenster,

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

15 Optimales Kodieren

15 Optimales Kodieren 15 Optimales Kodieren Es soll ein optimaler Kodierer C(T ) entworfen werden, welcher eine Information (z.b. Text T ) mit möglichst geringer Bitanzahl eindeutig überträgt. Die Anforderungen an den optimalen

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Fallbeispiel: Eintragen einer Behandlung

Fallbeispiel: Eintragen einer Behandlung Fallbeispiel: Eintragen einer Behandlung Im ersten Beispiel gelernt, wie man einen Patienten aus der Datenbank aussucht oder falls er noch nicht in der Datenbank ist neu anlegt. Im dritten Beispiel haben

Mehr