Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
|
|
- Sylvia Bauer
- vor 7 Jahren
- Abrufe
Transkript
1 Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Seite 1
2 Inhaltsverzeichnis Vorwort Seite 2 Die Idee und seine Geschichte Seite 2 Erklärung des Algorithmus Seite 2-4 Varianten des euklidischen Algorithmus Seite 4 Der euklidische Algorithmus als Java-Code Seite 5 Korrektheit & Laufzeitkomplexitätsanalyse Seite 6 Anwendungsgebiete Seite 7 Die eigene Implementierung Seite 7 Quellenverzeichnis Seite 8 Vorwort Diese Dokumentation über den euklidischen Algorithmus wurde im Rahmen der Vorlesung Programmieren an der Berufsakademie Stuttgart / Außenstelle Horb erstellt. Über die Aufgabe hinaus, den Algorithmus zu erklären und Beispiele hierfür zu finden werde ich zusätzlich kurz auf meine eigene Implementierung, die Korrektheit sowie die theoretische Laufzeit eingehen. Ein Dank geht an Herrn Herden sowie an Björn Strobel für die Bereitstellung der Pakete zur Visualisierung und schrittweisen Dokumentation des Algorithmus. Die Idee und seine Geschichte Der euklidische Algorithmus ist ein effizienter Algorithmus zur Berechnung des größten gemeinsamen Teilers (im folgenden ggt abgekürzt) zweier ganzer positiver Zahlen. Der ggt ist die größte Zahl die zwei voneinander verschiedenen Zahlen gemeinsam haben. Beispiel: ggt von 100 und 40 ist 20. Ist die Primfaktorzerlegung zweier Zahlen nicht bekannt, so ist der euklidische Algorithmus der schnellste bekannte Algorithmus zur Berechnung des ggt, denn Algorithmen zur Primfaktorzerlegung erreichen bisher nicht die Laufzeitkomplexität des euklidischen Algorithmus. Erstmals formuliert wurde der Algorithmus 300 v. Chr. von Euklid von Alexandria in seinem Werk Die Elemente. Man geht aber davon aus, dass der Algorithmus bereits vor 300 v. Chr. dem griechischen Mathematiker Eudoxos von Knidos sowie dem Philosophen Aristoteles bekannt war. Auf der Suche nach der gemeinsamen größten Länge zweier Stöcke formulierte Euklid den Algorithmus in Die Elemente folgendermaßen: Wenn CD aber AB nicht misst, und man nimmt bei AB, CD abwechselnd immer das kleinere vom größeren weg, dann muss (schließlich) eine Zahl übrig bleiben, die die vorangehende misst. Erklärung des Algorithmus Um mit Hilfe von Euklids Formulierung den ggt zweier Zahlen zu berechnen muss zuerst die größere der beiden Zahlen ermittelt werden. Anschließend wird die kleinere der beiden Zahlen von der größeren Zahl abgezogen. Dadurch entstehen zwei neue Zahlen nämlich das Ergebnis der Subtraktion so wie die kleinere der beiden alten Zahlen. Nun wird überprüft ob beide Zahlen gleich groß sind. Ist dies der Fall, so ist der ggt der beiden Zahlen gefunden. Ist dies nicht der Fall wird der selbe Ablauf noch einmal mit den beiden neuen Zahlen durchlaufen, solange bis beide Zahlen gleich groß sind. Seite 2
3 Zur Verdeutlichung die Erklärung noch einmal an einem Beispiel: 1. Zahl = 4 2. Zahl = 6 Welche der beiden Zahlen ist größer? 2. Zahl = 6 Ziehe die kleinere von der größeren Zahl ab! 2. Zahl = 6 1. Zahl = 4 Wie lautet das Ergebnis? 3. Zahl = 2 Ersetze größere der beiden Zahlen durch 3. Zahl! 1. Zahl = 4 2. Zahl = 2 Sind beide Zahlen gleich? 4 ist ungleich 2 Welche der beiden Zahlen ist größer? 2. Zahl = 4 1. Zahl = 2 Ziehe die kleinere von der größeren Zahl ab! 2. Zahl = 4 1. Zahl = 2 Wie lautet das Ergebnis? 3. Zahl = 2 Seite 3
4 Ersetze größere der beiden Zahlen durch 3. Zahl! 1. Zahl = 2 2. Zahl = 2 Sind beide Zahlen gleich? 2 ist gleich 2 ggt gefunden Varianten und Erweiterungen des euklidischen Algorithmus 1. Moderner euklidischer Algorithmus Betrachtet man den euklidischen Algorithmus genauer fällt auf, dass es unter Umständen sehr lange dauern kann bis der ggt zweier Zahlen gefunden ist. Dies ist vor allem dann der Fall, wenn eine der beiden Zahlen sehr groß im Vergleich zu anderen ist, wie zum Beispiel bei 2 und Mit dem modernen euklidischen Algorithmus ist es möglich dieses Problem zu umgehen. Der moderne euklidische Algorithmus verwendet statt einer Subtraktion die modulo-funktion zur Berechnung des ggt. Die Ermittlung des ggt der Zahlen 101 und 2 würde mit dem modernen euklidischen Algorithmus etwa so aussehen. Schritt 1: 101 ist größer als 2 Schritt 2: Rechne 101 modulo 2 = 1 Schritt 3: Ersetze 101 durch 1 Schritt 4: 2 ist größer als 1 Schritt 5: Rechne 2 modulo 1 = 0 1 ist ggt von 101 und 2 Während man mit dem klassischen euklidischen Algorithmus 50 Rechenschritte benötigt hätte um den ggt zu ermitteln ist es mit dem modernen Algorithmus in nur 2 Rechenschritten möglich. Dies bedeutet eine enorme Zeitersparnis. Doch es ist zu beachten, dass auch der moderne euklidische Algorithmus nicht immer schneller ist. Sind die beiden Zahlen deren ggt ermittelt werden soll zwei aufeinander folgende Fibonacci Zahlen, so stößt der moderne Algorithmus auf seine Grenzen und benötigt genauso viele Schritte wie der klassische Algorithmus. Im Regelfall jedoch halbiert sich die größere der beiden Zahlen immer mindestens um die Hälfte und macht den modernen Algorithmus sehr schnell. 2. Erweiterter euklidischer Algorithmus Der so genannte erweiterte euklidische Algorithmus oder auch binärer euklidischer Algorithmus von Josef-Stein ist in der Lage, mittels Division durch 2, nebst dem ggt zweier Zahlen auch die Inverse und den Restklassenring zu berechnen. Das so genannte additive Inverse von 8 ist z.b. -8. Das multiplikativ Inverse von 8 ist 1/8. Unter dem Restklassenring versteht man die Menge von Zahlen die entstehen können wenn man eine positive ganze Zahl modulo einer anderen Zahl n berechnet. So ist der Restklassenring einer Zahl modulo 2 z.b. entweder 0 oder 1. Diese Restklassenringe spielen vor allem in der Mikroprozessortechnik eine große Rolle. So sind Integer Zahlen mit 16 bit im Mikroprozessor als folgender Restklassenring dargestellt: Z/ 65536Z (Z = ganze Zahlen). Seite 4
5 Der euklidische Algorithmus als Java-Code 1. Klassischer euklidischer Algorithmus - Iterativ implementiert KlassischEuklidIterativ(a,b) while(b!=0) { // Prüft ob kleinere Zahl bereits 0 ist if (a > b) { a = a-b; /* Wenn keine der beiden Zahlen 0 ist, wird die kleinere Zahl von der größeren abgezogen */ else { b = b-a; return a; 2. Klassischer euklidischer Algorithmus Rekursiv Implementiert KlassischEuklidRekursiv(a,b) if (b==0) { // Prüft ob kleinere Zahl bereits 0 ist return a; else if (a > b) { /* Größere Zahl wird ermittelt, kleinere von return KlassischEuklidRekursiv(a-b, b); größerer Zahl abgezogen und die Funktion mit den beiden neuen Zahl else { erneut aufgerufen */ return KlassischEuklidRekursiv(a, b-a); 3. Moderner euklidischer Algorithmus Iterativ implementiert ModernEuklidIterativ(a,b) int h; // Hilfsvariable while (b!= 0) { // Prüft ob b bereits 0 ist h = a % b; /* Hilfsvariable mit a modulo b setzen, 1. Zahl a = b; durch 2. Zahl ersetzen, 2. Zahl durch h ersetzen b = h; */ return a; 4. Moderner euklidischer Algorithmus Rekursiv implementiert ModernEuklidRekursiv(a,b) if (b = 0) { return a; else { return ModernEuklidRekursiv(b, a mod b) // Prüft ob b schon 0 ist /* Erneuter Aufruf der Funktion mit Zahl 2 als Zahl 1 und a mod b als Zahl 2 */ Seite 5
6 Korrektheit & Laufzeitkomplexität Korrektheit: Annahme: 1. Zahl und 2. Zahl sind > 0 Invariante: 1.Zahl <= 0 ^ 2. Zahl <= 0 Vor Beginn der Schleife: Wenn sich der Benutzer an die Vorgaben hält so ist die Invariante erfüllt Während der Schleife: Nach der Schleife: Da immer die kleinere von der größeren Zahl abgezogen wird, kann keine der beiden Zahlen kleiner als 0 werden Da die Zahlen während der Schleife nicht kleiner 0 werden können und nach der Schleife keine weitere Anweisung folgt, können die Zahlen auch danach nicht kleiner werden. Somit gilt: Der Algorithmus terminiert und ist korrekt. Dies gilt analog für den modernen euklidischen Algorithmus, da bei einer modulo-funktion nie ein negativer Rest entstehen kann, in sofern die beiden Zahlen zu Beginn positive ganze Zahlen sind. Laufzeit: Geht man davon aus, dass der klassische euklidische Algorithmus erkennt, dass wenn eine der beiden Zahlen = 1 ist, der ggt ebenfalls 1 ist, ergibt sich folgende Laufzeitkomplexität. Eingabe: n und m, dabei gilt n ist größer als m Schritt 1: n m Schritt 2: n m Schritt 3: n m usw. usw. Daraus ergibt sich als Laufzeitkomplexität: n / m Oder in der Landau-Schreibweise: Θ n In Worten ausgedrückt bedeutet dies, dass der euklidische Algorithmus im schlimmsten Falle halb so viele Subtraktionen durchführen muss, wie die größere Zahl zu Beginn groß ist. Worst Case Average Case Best Case Θ n (n/2) Θ n (n/2) Θ 1 Beispiel: Zahl 1 = 10 Zahl 2 = 2 Schritt 1: 10-2 = 8 Schritt 2: 8 2 = 6 Schritt 3: 6 2 = 4 Schritt 4: 4 2 = 2 Schritt 5: 2-2 = 0 n/m = 10 / 2 5 Zusatzinfo: Interessanterweise, ist die Laufzeit des modernen euklidischen Algorithmus bei zwei aufeinander folgenden Fibonacci-Zahlen Θ log (a b) Seite 6
7 Anwendungsgebiete Der euklidische Algorithmus wird unter anderem in der Kryptographie verwendet. Als Beispiel kann hier das so genannte RSA-Verfahren genannt werden, das eine asymmetrische Verschlüsselungsmethode darstellt. Hier wird der euklidische Algorithmus zur Berechnung von private und public Key verwendet und ermöglicht somit die Verschlüsselung so wie die digitale Signatur von Daten. Die eigene Implementierung Wahl des Algorithmus der angewendet werden soll (Klassisch oder Modern) Eingabe der Zahlen beiden Zahlen (nur positive, ganze Zahlen) Darstellung der Berechnung Seite 7
8 Quellenverzeichnis Algorithmen Eine Einführung 2. Auflage Th. H. Cormen, Ch. E. Leserson, R.Rivest, C.Stein Oldenbourg Verlag München Wien Seiten Die Elemente Euklid Wissenschaftliche Buchgesellschaft Darmstadt Seite 8
Übung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45
MehrÜbung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45 11:15) Programmierbeispiele
Mehr7. Musterlösung zu Mathematik für Informatiker I, WS 2003/04
7. Musterlösung zu Mathematik für Informatiker I, WS 2003/04 KATHRIN TOFALL Aufgabe 7. (Symmetrischer EEA). (9 Punkte) Ziel dieser Aufgabe ist es zu zeigen, was man gewinnt, wenn man bei der Division mit
MehrEuklidischer Algorithmus
Euklidischer Algorithmus Ermitteln des größten gemeinsamen Teilers mit Euklid: function ggt (m, n) Hierbei ist m begin 0undn 0vorausgesetzt. if m = 0 then return n else return ggt (n mod m, m) fi end Man
MehrDer euklidische Algorithmus für ganze Zahlen
Der euklidische Algorithmus für ganze Zahlen Ein unverzichtbares Verfahren in der Kryptographie ist der euklidische Algorithmus. In diesem Kapitel stellen wir die erste Version für ganze Zahlen vor. Sei
MehrDer Euklidische Algorithmus
Euklid.nb 1 Der Euklidische Algorithmus (Euklid von Alexandria ca. 365-300 v.chr.) Realisierung in den Versionen: Subtraktionsform, Divisionsform, iterativ, rekursiv und regelbasiert Nimmt man abwechselnd
MehrKapitel 2. Elementare Zahlentheorie Primfaktorzerlegung
Kapitel 2. Elementare Zahlentheorie 2.1. Primfaktorzerlegung Menge der ganzen Zahlen Z = {..., 3, 2, 1, 0, 1, 2, 3,...} Addition Inverse Multiplikation Z Z Z, Z Z, Z Z Z, (a, b) a + b a a (a, b) a b Ausgezeichnete
Mehr9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion
Experiment: Die Türme von Hanoi. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration Links Mitte Rechts Mathematische Rekursion Viele mathematische Funktionen
MehrAlgorithmentheorie Randomisierung
Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten
MehrDas RSA-Verfahren. Proseminar Kryptographische Protokolle SS Armin Litzel
in der Praxis Proseminar Kryptographische Protokolle SS 2009 5.5.2009 in der Praxis Gliederung 1 Grundlegendes über RSA 2 in der Praxis Allgemeine Vorgehensweise zur Verschlüsselung Signieren mit RSA 3
MehrPrimzahlen im Schulunterricht wozu?
Primzahlen im Schulunterricht wozu? Franz Pauer Institut für Fachdidaktik und Institut für Mathematik Universität Innsbruck Tag der Mathematik Graz 6. Februar 2014 Einleitung Eine (positive) Primzahl ist
MehrSAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen. Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014
SAGE Computeralgebrapraktikum: Elementare Zahlentheorie und Anwendungen Prof. Dr. Wolfram Koepf Prof. Dr. Werner Seiler WS 2014 Frühstudium Alle Teilnehmer dieses Praktikums können sich zum Frühstudium
MehrÜbung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
MehrInterim. Kapitel Einige formale Definitionen
Kapitel 1 Interim Da ich keine Infos über Titel und Nummerierungen anderer Kapitel dieser Vorlesung habe, nenne ich dies einfach mal Kapitel 1. 17.11.04 1.1 Einige formale Definitionen Wir rekapitulieren
MehrAlgorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1
Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 20 (23.7.2014) All Pairs Shortest Paths, String Matching (Textsuche) Algorithmen und Komplexität Vorlesungsevaluation Sie sollten alle eine
MehrDiskrete Strukturen. Vorlesung 15: Arithmetik. 5. Februar 2019
1 Diskrete Strukturen Vorlesung 15: Arithmetik 5. Februar 2019 Nächste Termine Modul Diskrete Strukturen Hörsaalübung (Mo. 9:15) Vorlesung (Di. 17:15) 4.2. Tutorium (Klausurvorbereitung) 11.2. 12.2. 5.2.
MehrStabilitätsabschätzungen Vorlesung vom
Stabilitätsabschätzungen Vorlesung vom 8.12.17 Auswertungsbäume zur systematischen Stabilitätsabschätzung Auswertungsbaum: Knoten, gerichtete Kanten, Wurzel, Blätter Zerlegung in Teilbäume Von den Blättern
Mehr1.Vortrag: Rechnen mit Restklassen/modulo einer Zahl
Westfälische Wilhelms-Universität Münster Mathematik Sommersemester 2017 Seminar: Verschlüsselungs- und Codierungstheorie Leitung: Thomas Timmermann 1.Vortrag: Rechnen mit Restklassen/modulo einer Zahl
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2016/17. Vorbereitende Aufgaben
Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Alexander Lochmann, Iman Kamehkhosh, Marcel Preuß, Dominic Siedhoff Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester
MehrPraktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben
Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand Übungsblatt 7 Besprechung: 4. 8.12.2017 (KW 49) Vorbereitende
MehrZahlentheorie, Arithmetik und Algebra I. Felix Teufel Hallo Welt! -Seminar - LS 2
Zahlentheorie, Arithmetik und Algebra I Felix Teufel 26.07.2017 Hallo Welt! -Seminar - LS 2 Überblick Modulare Arithmetik Größter gemeinsamer Teiler Primzahlen Eulersche Φ-Funktion RSA Quellen 26.07.2017
MehrFAKULTÄT FÜR INFORMATIK
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Effiziente Algorithmen SS 2008 Grundlagen: Algorithmen und Datenstrukturen Midterm-Klausur Prof. Dr. Christian Scheideler, Dr. Stefan
MehrKapitel 2: Zahlentheoretische Algorithmen Gliederung
Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen
MehrZahlentheorie, Arithmetik und Algebra I. Katharina Falk Medizintechnik Master
Zahlentheorie, Arithmetik und Algebra I Katharina Falk Medizintechnik Master 13.06.2016 Gliederung Modulare Arithmetik Rechenregeln Schnelle Potenzierung Gemeinsamer Teiler Erweiterter Euklid Primzahlen
Mehr1. Die rekursive Datenstruktur Liste
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen Ideen zur Bestimmung der Länge einer Liste: 1. Verwalte ein globales Attribut int laenge. Fügt man ein Element zur Liste oder löscht es, wird
Mehr2: Restklassen 2.1: Modulare Arithmetik
2: Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32, 64} Prüfziffern mod 10 oder mod 11... 71 S. Lucks Diskr Strukt.
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 11 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge
Mehr2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017
2. Algorithmische Methoden 2.1 Rekursion 18. April 2017 Rekursiver Algorithmus Ein rekursiver Algorithmus löst ein Problem, indem er eine oder mehrere kleinere Instanzen des gleichen Problems löst. Beispiel
MehrMathematische Rekursion
Rekursion Mathematische Rekursion o Viele mathematische Funktionen sind sehr natürlich rekursiv definierbar, d.h. o die Funktion erscheint in ihrer eigenen Definition. Mathematische Rekursion o Viele mathematische
MehrKanonische Primfaktorzerlegung
Kanonische Primfaktorzerlegung Jede natürliche Zahl Form kann auf eindeutige Weise in der geschrieben werden, wobei, für und Primzahlen sind. Dies ist die kanonische Primfaktorzerlegung von. Mathematik
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
Mehr8 Anwendung: Suchen. Folge a ganzer Zahlen; Element x. Wo kommt x in a vor?
8 Anwendung: Suchen Gegeben: Gesucht: Folge a ganzer Zahlen; Element x Wo kommt x in a vor? Naives Vorgehen: Vergleiche x der Reihe nach mit a[0], a[1], usw. Finden wir i mit a[i] == x, geben wir i aus.
Mehrp Z >1 ist Primzahl, wenn gilt Euklid:
Grundlegende Tatsachen über den Ring Z Z; +, ist ein nullteilerfreier Ring Divisionseigenschaft a Z, b Z > q, r Z : a = b q + r, r < b Arithmetik Grundlegende Tatsachen über den Ring Z Euklidischer Algorithmus
Mehr3: Primzahlen. 111 S. Lucks Diskr Strukt. (WS 18/19) 3: Primzahlen
3: Primzahlen 111 S. Lucks Diskr Strukt. (WS 18/19) 3: Primzahlen Definition 40 (Teiler, Vielfache, Primzahlen, zusammengesetzte Zahlen) Seien a, b N. a ist ein Teiler von b ( a b ), falls es ein k N gibt
MehrWS 2008/09. Diskrete Strukturen
WS 2008/09 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0809
MehrDatenstrukturen und Algorithmen (SS 2013)
Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-
Mehr3: Zahlentheorie / Primzahlen
Stefan Lucks Diskrete Strukturen (WS 2009/10) 96 3: Zahlentheorie / Primzahlen 3: Zahlentheorie / Primzahlen Stefan Lucks Diskrete Strukturen (WS 2009/10) 97 Definition 37 (Teiler, Vielfache, Primzahlen,
MehrEinführung in die Informatik I
Einführung in die Informatik I LOOP Programme, rekursive Funktionen und der Turm von Hanoi Prof. Dr. Nikolaus Wulff Berechenbarkeit Mitte des 20. Jahrhunderts beantworteten Pioniere, wie Alan M. Turing
MehrDiskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)
WS 2015/16 Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_15
MehrErweiterter Euklidischer Algorithmus
Erweiterter Euklidischer Algorithmus Algorithmus ERWEITERTER EUKLIDISCHER ALG. (EEA) EINGABE: a, b N 1 If (b = 0) then return (a, 1, 0); 2 (d, x, y) EEA(b, a mod b); 3 (d, x, y) (d, y, x a b y); AUSGABE:
MehrRekursion. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Dr. Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung WS18/19 https://www.sosy-lab.org/teaching/2018-ws-infoeinf/ Divide et Impera im Römischen
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrKanonische Primfaktorzerlegung
Mathematik I für Informatiker Zahlen p. 1 Kanonische Primfaktorzerlegung Jede natürliche Zahl n kann auf eindeutige Weise in der Form n = p α 1 1 pα 2 2... pα k k geschrieben werden, wobei k N 0, α i N
MehrOOP Aufgabenblatt 7 6. Dezember 2013
1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 7 6. Dezember 2013 Aufgabe 1 Hausaufgabe Nr. 4 (Klein) Implementieren Sie, ohne Arrays oder eine sonstige Kollektion zu nutzen, folgende Fingerübungen zu Rekursion
MehrINFORMATIK FÜR BIOLOGEN
Technische Universität Dresden 15012015 Institut für Theoretische Informatik Professur für Automatentheorie INFORMATIK FÜR BIOLOGEN Musterklausur WS 2014/15 Studiengang Biologie und Molekulare Biotechnologie
MehrEuklidische Algorithmus, Restklassenringe (Z m,, )
Euklidische Algorithmus, Restklassenringe (Z m,, ) Manfred Gruber http://www.cs.hm.edu/~gruber SS 2008, KW 14 Gröÿter gemeinsamer Teiler Denition 1. [Teiler] Eine Zahl m N ist Teiler von n Z, wenn der
MehrSchleifeninvarianten. Dezimal zu Binär
Schleifeninvarianten Mit vollstandiger Induktion lasst sich auch die Korrektheit von Algorithmen nachweisen. Will man die Werte verfolgen, die die Variablen beim Ablauf eines Algorithmus annehmen, dann
MehrAlgorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems
4. Algorithmen Motivation Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems Der Begriff Algorithmus geht auf den Gelehrten Muhammad al-chwarizmi zurück, der um
MehrLiteratur. ISM SS 2018 Teil 3/Restklassen
Literatur [3-1] Beutelspacher, A.; Schwenk, J.; Wolfenstetter, K.-D.: Moderne Verfahren der Kryptographie. 4. Auflage, Vieweg 2001 [3-2] Schmeh, Klaus: Kryptografie. dpunkt, 5. Auflage, 2013 [3-3] Hoffmann,
Mehrggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe.
ggt mit Euklid Satz: Um ggt(k, l) mit dem Euklidischen Algorithmus zu berechnen, braucht man höchstens log Φ k < 3 2 log 2 k rekursive Aufrufe. Das heißt, um den ggt von zwei 1000-Bit-Zahlen zu ermitteln,
MehrRekursion. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung
Philipp Wendler Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung https://www.sosy-lab.org/teaching/2017-ws-infoeinf/ WS17/18 Divide et Impera im Römischen
MehrDer Dreyfus-Wagner Algorithmus für das Steiner Baum Problem
Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem Andreas Moser Dietmar Ebner Christian Schauer Markus Bauer 9. Dezember 2003 1 Einführung Der in der Vorlesung gezeigte Algorithmus für das Steiner
MehrExponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element
Problemstellung Banale smethode : das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element a n = } a a a {{ a } H n (schreiben ab jetzt a n statt a n ) Hinweis:
Mehr$Id: ring.tex,v /05/03 15:13:26 hk Exp $
$Id: ring.tex,v 1.13 2012/05/03 15:13:26 hk Exp $ 3 Ringe 3.1 Der Ring Z m In der letzten Sitzung hatten wir die sogenannten Ringe eingeführt, dies waren Mengen A versehen mit einer Addition + und einer
MehrFolgen und Funktionen in der Mathematik
Folgen und Funktionen in der Mathematik Anhand von einigen exemplarischen Beispielen soll die Implementierung von mathematischen Algorithmen in C/C++ gezeigt werden: Reelle Funktionen in C/C++ Diese wird
MehrEinführung in die Algebra
Prof. Dr. H. Brenner Osnabrück SS 2009 Einführung in die Algebra Vorlesung 4 Das Lemma von Bezout Satz 1. (Lemma von Bézout) Jede Menge von ganzen Zahlen a 1,...,a n besitzt einen größten gemeinsamen Teiler
MehrExponentiation: das Problem
Problemstellung Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element a n = } a a a {{ a } H n (schreiben ab jetzt a n statt a n ) Hinweis:
MehrPrimzahlen im Schulunterricht wozu?
Primzahlen im Schulunterricht wozu? Franz Pauer Institut für Fachdidaktik und Institut für Mathematik Universität Innsbruck Lehrer/innen/fortbildungstag Wien 2013 5. April 2013 Einleitung Eine (positive)
MehrForm der Äquivalenzklassen
Form der Äquivalenzklassen Anmerkung: Es gilt a = a ± m = a ± 2m =... = a + km mod m für alle k Z. Wir schreiben auch {x Z x = a + mk, k Z} = a + mz. Es gibt m verschiedene Äquivalenzklassen modulo m:
Mehr11. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Mathematische Rekursion. Rekursion in Java: Genauso! Unendliche Rekursion. n!
Mathematische Rekursion 11. Rekursion Mathematische Rekursion, Terminierung, der Aufrufstapel, Beispiele, Rekursion vs. Iteration, Lindenmayer Systeme Viele mathematische Funktionen sind sehr natürlich
MehrProgrammieren 1 C Überblick
Programmieren 1 C Überblick 1. Einleitung 2. Graphische Darstellung von Algorithmen 3. Syntax und Semantik 4. Einstieg in C: Einfache Sprachkonstrukte und allgemeiner Programmaufbau 5. Skalare Standarddatentypen
MehrKompaktkurs Einführung in die Programmierung Übungsblatt 5: Funktionen
Technische Universität München März 2013 Institut für Informatik Dr. rer. nat. Tobias Weinzierl Kaveh Rahnema Kompaktkurs Einführung in die Programmierung Übungsblatt 5: Funktionen Lernziele Mehrfache
MehrDas RSA-Verfahren - Einsatz von Standardalgorithmen in der Kryptologie
Das RSA-Verfahren - Einsatz von Standardalgorithmen in der Kryptologie 2 Verschlüsseln durch modulares Rechnen modulares Addieren modulares Multiplizieren modulares Potenzieren Verschlüsselung mit öffentl.
Mehr12. Rekursion. 1, falls n 1. n (n 1)!, andernfalls. Lernziele. Mathematische Rekursion. Rekursion in Java: Genauso! n! =
Lernziele Sie verstehen, wie eine Lösung eines rekursives Problems in Java umgesetzt werden kann. Sie wissen, wie Methoden in einem Aufrufstapel abgearbeitet werden. 12. Rekursion Mathematische Rekursion,
MehrNachklausur Bitte in Druckschrift leserlich ausfüllen!
Übungen zur Vorlesung Informatik für Informationsmanager WS 2005/2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 24.04.2006 Bitte in Druckschrift
MehrVon den ganzen Zahlen zu GF(p)
Endliche Körper p. 1 Von den ganzen Zahlen zu GF(p) Aus dem Ring aller ganzen Zahlen gewinnt man endliche Körper wie folgt: Man führt das Rechnen modulo n ein (modulare Arithmetik) und erhält so endliche
MehrKapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
Mehr3.3 Laufzeit von Programmen
3.3 Laufzeit von Programmen Die Laufzeit eines Programmes T(n) messen wir als die Zahl der Befehle, die für die Eingabe n abgearbeitet werden Betrachten wir unser Programm zur Berechnung von Zweierpotenzen,
Mehr2. Teil: Diskrete Strukturen
2. Teil: Diskrete Strukturen Kenntnis der Zahlenbereiche N, Z, Q, R, C setzen wir voraus. Axiomatische Einführung von N über Peano-Axiome. Z aus N leicht abzuleiten. Wie wird Q definiert? R ist der erste
MehrInformatik II, SS 2018
Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 20 (9.7.2018) String Matching (Textsuche) Algorithmen und Komplexität Textsuche / String Matching Gegeben: Zwei Zeichenketten (Strings)
MehrTechnische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci
Name: Vorname: Matr. Nr.: Technische Universität München SoSe 2018 Fakultät für Informatik, I-16 9. Mai 2018 Dr. Stefanie Demirci Probeklausur zu Algorithmen und Datenstrukturen Allgemeine Hinweise Die
MehrGanzzahlige Division mit Rest
Modulare Arithmetik Slide 1 Ganzzahlige Division mit Rest Für a,b Æ mit a b gibt es stets eine Zerlegung von a der Form a = q b+r mit 0 r b 1. Hierbei gilt q = a b (salopp formuliert: b passt q-mal in
Mehr11. Das RSA Verfahren
Chr.Nelius: Zahlentheorie (SoSe 2017) 53 11. Das RSA Verfahren Bei einer asymmetrischen Verschlüsselung lässt sich der Schlüssel zum Entschlüsseln nicht aus dem Schlüssel zum Verschlüsseln bestimmen und
MehrAufgabe der Kryptografie
Aufgabe der Kryptografie Eve möchte die Unterhaltung mithören und/oder ausgetauschte Informationen ändern. Alice & Bob kommunzieren über einen unsicheren Kanal. Alice & Bob nutzen Verschlüsselung und digitale
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen 2 Lerneinheit 3: Greedy Algorithmen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 2016 10.5.2016 Einleitung Einleitung Diese Lerneinheit
Mehr1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...
ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer
Mehr2. Hausübung Algorithmen und Datenstrukturen
Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 7.4.009. Hausübung Algorithmen und Datenstrukturen Sommersemester 009 Abgabetermin: Montag, 04.05.009, 10:00 Uhr 1
MehrDatenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer
Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:
MehrVI.3 RSA. - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman. - vorgestellt erstes Public-Key Verschlüsselungsverfahren
VI.3 RSA - RSA benannt nach seinen Erfindern R. Rivest, A. Shamir und L. Adleman - vorgestellt 1977 - erstes Public-Key Verschlüsselungsverfahren - auch heute noch das wichtigste Public-Key Verfahren 1
MehrZufallsprimzahlen und eine Revolution in der Kryptographie Stefan Edelkamp
Zufallsprimzahlen und eine Revolution in der Kryptographie Stefan Edelkamp Fakultät für Mathematik und Informatik Universität of Bremen Übersicht des Vortrags 1 Einfache Kryptosysteme 2 Einmalschlüssel
MehrRekursion. 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"
MehrAlgorithmen und Datenstrukturen 2
Algorithmen und Datenstrukturen Lerneinheit : Dynamisches Programmieren Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester.. Einleitung Diese Lerneinheit widmet sich einer
MehrTechnische Universität Braunschweig Institut für Programmierung und Reaktive Systeme
Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:
MehrDer chinesische Restsatz mit Anwendung
Der chinesische Restsatz mit Anwendung Nike Garath n.garath@gmx.de Martrikelnummer: 423072 Seminar: Verschlüsslungs- und Codierungstheorie Dozent: Dr. Thomas Timmermann Sommersemester 2017 Inhaltsverzeichnis
MehrLösung zur Klausur zu Krypographie Sommersemester 2005
Lösung zur Klausur zu Krypographie Sommersemester 2005 1. Bestimmen Sie die zwei letzten Ziffern der Dezimaldarstellung von 12 34 Es gilt: 12 34 = 12 32+2 = 12 32 12 2 = 12 (25) 12 2 = ((((12 2 ) 2 ) 2
MehrOperatoren und Ausdrücke
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Überblick 1 2 / 11 Motivation Es gibt eine Reihe
MehrAlgorithmentheorie Randomisierung. Robert Elsässer
Algorithmentheorie 03 - Randomisierung Robert Elsässer Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten
MehrKapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin
Kapitel 1 Einleitung 1.1. Begriff des Algorithmus Eine der ältesten Beschreibungstechniken für Abläufe: Benannt nach dem Mathematiker Al-Khwarizmi (ca. 780...840), der am Hof der Kalifen von Bagdad wirkte.
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von
MehrProgrammiertechnik Übungen zu Klassen & -methoden
Programmiertechnik Übungen zu Klassen & -methoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Übung 1 Ein Verfahren, den größten gemeinsamen Teiler (ggt) zweier Zahlen a und b, a
MehrVorlesung Mathematik 2 für Informatik
Vorlesung Mathematik 2 für Informatik Inhalt: Modulare Arithmetik Lineare Algebra Vektoren und Matrizen Lineare Gleichungssysteme Vektorräume, lineare Abbildungen Orthogonalität Eigenwerte und Eigenvektoren
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
Mehr1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element
Mehr