Algorithmen kapieren -- Visuell lernen und verstehen mit Illustrationen, Alltagsbeispielen und Python-Code

Book description

  • 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, und es wird dir leichtfallen zu verstehen, wie diese funktionieren.

Du erhältst eine anschauliche Einführung in Algorithmen und lernst visuell und praxisnah, wie du die wichtigsten Algorithmen für Aufgaben einsetzt, die dir bei der Programmierung täglich begegnen.

Du beginnst mit einfachen Aufgaben wie Sortieren und Suchen. Mit diesen Grundlagen gerüstet kannst du auch schwierigere Aufgaben wie dynamische Programmierung oder Künstliche Intelligenz in Angriff nehmen.

Der Autor erläutert die Funktionsweise der Algorithmen anhand ganz einfacher Beispiele. So verdeutlicht er z.B. den Unterschied zwischen Arrays und verketteten Listen anhand der Aufgabe, mehrere noch freie Plätze in einem Kinosaal zu finden. Solche Beispiele zeigen dir ganz anschaulich, wie und wofür du die jeweiligen Algorithmen effektiv einsetzen kannst.

Zu allen Erläuterungen findest du anschauliche Bilder und Diagramme sowie ausführlich kommentierten Beispielcode in Python.

Wenn du Algorithmen verstehen möchtest, ohne dich mit komplizierten seitenlangen Beweisen herumzuplagen, ist dieses Buch genau das richtige für dich.

Aus dem Inhalt:
  • Such-, Sortier- und Graphenalgorithmen
  • Performance von Algorithmen analysieren (Landau-Notation)
  • Arrays, verkettete Listen und Hashtabellen
  • Rekursion und Stacks
  • Quicksort und das Teile-und-herrsche-Verfahren
  • Dijkstra-Algorithmus für die Ermittlung des kürzesten Pfads
  • Approximationsalgorithmen und NP-vollständige Probleme
  • Greedy-Algorithmen
  • Dynamische Programmierung
  • Klassifikation und Regression mit dem k-Nächste-Nachbarn-Algorithmus

Table of contents

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

Product information

  • Title: Algorithmen kapieren -- Visuell lernen und verstehen mit Illustrationen, Alltagsbeispielen und Python-Code
  • Author(s): Aditya Y. Bhargava
  • Release date: November 2018
  • Publisher(s): mitp Verlag
  • ISBN: 9783958458154