Algorithmen Kapieren Visuell Lernen und Verstehen Mit Illustrationen, Alltagsbeispielen und Python-Code
Visuelle Erläuterungen mit über 400 erklärenden Bildern Mit anschaulichen Beispielen und zahlreichen Übungen Ausführlich kommentierter Beispielcode in Python Ab sofort sind Algorithmen nicht mehr langweilig und trocken! Mit diesem Buch wird es dir Spaß machen, dich mit Algorithmen zu beschäftigen, u...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Alemán |
Publicado: |
Frechen, Germany :
Mitp Verlag
[2024]
|
Edición: | First edition |
Colección: | mitp Professional
|
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630421706719 |
Tabla de Contenidos:
- Cover
- Titel
- Impressum
- Inhaltsverzeichnis
- Vorwort
- Einleitung
- Überblick
- Verwendung dieses Buchs
- Wer sollte dieses Buch lesen?
- Konventionen und Downloads
- Über den Autor
- Danksagungen
- Kapitel 1: Einführung in Algorithmen
- 1.1 Einführung
- 1.1.1 Performance
- 1.1.2 Problemlösungen
- 1.2 Binäre Suche
- 1.2.1 Eine bessere Suchmethode
- Übungen
- 1.2.2 Laufzeit
- 1.3 Landau-Notation
- 1.3.1 Die Laufzeiten von Algorithmen nehmen unterschiedlich schnell zu
- 1.3.2 Visualisierung verschiedener Laufzeiten
- 1.3.3 Die Landau-Notation beschreibt die Laufzeit im Worst Case
- 1.3.4 Typische Laufzeiten gebräuchlicher Algorithmen
- Übungen
- 1.3.5 Das Problem des Handlungsreisenden
- 1.4 Zusammenfassung
- Kapitel 2: Selectionsort
- 2.1 Die Funktionsweise des Arbeitsspeichers
- 2.2 Arrays und verkettete Listen
- 2.2.1 Verkettete Listen
- 2.2.2 Arrays
- 2.2.3 Terminologie
- Übung
- 2.2.4 Einfügen in der Mitte einer Liste
- 2.2.5 Löschen
- Übungen
- 2.3 Selectionsort
- Beispielcode
- 2.4 Zusammenfassung
- Kapitel 3: Rekursion
- 3.1 Rekursion
- 3.2 Basisfall und Rekursionsfall
- 3.3 Der Stack
- 3.3.1 Der Aufruf-Stack
- Übung
- 3.3.2 Der Aufruf-Stack mit Rekursion
- Übung
- 3.4 Zusammenfassung
- Kapitel 4: Quicksort
- 4.1 Teile und herrsche
- Übungen
- 4.2 Quicksort
- 4.3 Landau-Notation im Detail
- 4.3.1 Mergesort und Quicksort im Vergleich
- 4.3.2 Average Case und Worst Case im Vergleich
- Übungen
- 4.4 Zusammenfassung
- Kapitel 5: Hashtabellen
- 5.1 Hashfunktionen
- Übungen
- 5.2 Anwendungsfälle
- 5.2.1 Hashtabellen zum Nachschlagen verwenden
- 5.2.2 Doppelte Einträge verhindern
- 5.2.3 Hashtabellen als Cache verwenden
- 5.2.4 Zusammenfassung
- 5.2.5 Kollisionen
- 5.3 Performance
- 5.3.1 Der Auslastungsfaktor
- 5.3.2 Eine gute Hashfunktion
- Übungen
- 5.4 Zusammenfassung.
- Kapitel 6: Breitensuche
- 6.1 Einführung in Graphen
- 6.2 Was ist ein Graph?
- 6.3 Breitensuche
- 6.3.1 Den kürzesten Pfad finden
- 6.3.2 Warteschlangen
- Übungen
- 6.4 Implementierung des Graphen
- 6.5 Implementierung des Algorithmus
- 6.5.1 Laufzeit
- Übung
- 6.6 Zusammenfassung
- Kapitel 7: Der Dijkstra-Algorithmus
- 7.1 Anwendung des Dijkstra-Algorithmus
- 7.2 Terminologie
- 7.3 Eintauschen gegen ein Klavier
- 7.4 Negativ gewichtete Kanten
- 7.5 Implementierung
- Übung
- 7.6 Zusammenfassung
- Kapitel 8: Greedy-Algorithmen
- 8.1 Das Stundenplanproblem
- 8.2 Das Rucksackproblem
- Übungen
- 8.3 Das Mengenüberdeckungsproblem
- 8.3.1 Approximationsalgorithmen
- Übungen
- 8.4 NP-vollständige Probleme
- 8.5 Das Problem des Handlungsreisenden - Schritt für Schritt
- 8.5.1 Wie lassen sich NP-vollständige Probleme erkennen?
- Übungen
- 8.6 Zusammenfassung
- Kapitel 9: Dynamische Programmierung
- 9.1 Das Rucksackproblem
- 9.1.1 Die einfache Lösung
- 9.1.2 Dynamische Programmierung
- 9.2 Häufig gestellte Fragen zum Rucksackproblem
- 9.2.1 Was geschieht beim Hinzufügen eines Gegenstands?
- Übung
- 9.2.2 Was geschieht, wenn die Reihenfolge der Zeilen geändert wird?
- 9.2.3 Kann man das Gitter auch spaltenweise (statt zeilenweise) befüllen?
- 9.2.4 Was geschieht, wenn man ein leichteres Objekt hinzufügt?
- 9.2.5 Kann man Teile eines Gegenstands stehlen?
- 9.2.6 Optimierung des Reiseplans
- 9.2.7 Handhabung voneinander abhängiger Objekte
- 9.2.8 Ist es möglich, dass die Lösung mehr als zwei Teil-Rucksäcke erfordert?
- 9.2.9 Ist es möglich, dass die beste Lösung den Rucksack nicht vollständig füllt?
- Übung
- 9.3 Der längste gemeinsame Teilstring
- 9.3.1 Erstellen des Gitters
- 9.3.2 Befüllen des Gitters
- 9.3.3 Die Lösung
- 9.3.4 Die längste gemeinsame Teilfolge.
- 9.3.5 Die längste gemeinsame Teilfolge - Lösung
- Übung
- 9.4 Zusammenfassung
- Kapitel 10: k-nächste Nachbarn
- 10.1 Klassifikation von Orangen und Grapefruits
- 10.2 Entwicklung eines Empfehlungssystems
- 10.2.1 Merkmalsextraktion
- Übungen
- 10.2.2 Regression
- 10.2.3 Auswahl geeigneter Merkmale
- Übung
- 10.3 Einführung in Machine Learning
- 10.3.1 OCR
- 10.3.2 Entwicklung eines Spamfilters
- 10.3.3 Vorhersage der Entwicklung des Aktienmarkts
- 10.4 Zusammenfassung
- Kapitel 11: Die nächsten Schritte
- 11.1 Bäume
- 11.2 Invertierte Indizes
- 11.3 Die Fourier-Transformation
- 11.4 Nebenläufige Algorithmen
- 11.5 MapReduce
- 11.5.1 Warum sind verteilte Algorithmen nützlich?
- 11.5.2 Die map-Funktion
- 11.5.3 Die reduce-Funktion
- 11.6 Bloom-Filter und HyperLogLog
- 11.6.1 Bloom-Filter
- 11.6.2 HyperLogLog
- 11.7 Die SHA-Algorithmen
- 11.7.1 Dateien vergleichen
- 11.7.2 Passwörter überprüfen
- 11.8 Locality-Sensitive Hashing
- 11.9 Diffie-Hellman-Schlüsselaustausch
- 11.10 Lineare Programmierung
- 11.11 Epilog
- Anhang: Lösungen zu den Übungen
- Kapitel 1
- Kapitel 2
- Kapitel 3
- Kapitel 4
- Kapitel 5
- Kapitel 6
- Kapitel 7
- Kapitel 8
- Kapitel 9
- Kapitel 10
- Stichwortverzeichnis.