Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Cover
Über die Autoren
John Muellers Widmung
Luca Massarons Widmung
John Muellers Danksagung
Luca Massarons Danksagung
Teil I: Erste Schritte
Kapitel 1: Grundlegendes über Algorithmen
Algorithmen beschreiben
Definitionen zur Anwendung von Algorithmen
Algorithmen sind überall
Mit Computern Aufgaben lösen
Moderne CPUs und GPUs wirksam einsetzen
Arbeiten mit Spezialchips
Netzwerke wirksam einsetzen
Daten effektiv nutzen
Zwischen Aufgaben und Lösungen unterscheiden
Richtigkeit und Effizienz
Die Erkenntnis, dass nichts umsonst ist
Die Strategie an die Aufgabe anpassen
Algorithmen in einer Lingua franca beschreiben
Schwierige Aufgaben angehen
Daten für Lösungen strukturieren
Die Sichtweise eines Computers
Datenordnung muss sein
Einführung
Über dieses Buch
Konventionen in diesem Buch
Törichte Annahmen über den Leser
Symbole, die in diesem Buch verwendet werden
Wie es weitergeht
Kapitel 2: Algorithmendesign
Der Anfang der Problemlösung
Praxisaufgaben modellieren
Lösungen und Gegenbeispiele finden
Auf den Schultern von Riesen stehen
Teile und herrsche
Brute-Force-Lösungen vermeiden
Erster Schritt: Vereinfachen
Reduktion ist meist vorteilhaft
Erkennen, dass Gier gut sein kann
Gierig denken
Eine gute Lösung
Kostenberechnungen und Heuristiken
Das Problem in einem Raum darstellen
Zufällig und von Glück gesegnet
Heuristiken und Kostenfunktionen verwenden
Algorithmen auswerten
Simulationen mittels abstrakter Maschinen
Weitere Abstrahierungen
Mit Funktionen arbeiten
Kapitel 3: Mit Python Algorithmen verwenden
Die Vorteile von Python
Wie Python in diesem Buch verwendet wird
Mit MATLAB arbeiten
Andere Testumgebungen für Algorithmen
Python-Distributionen
Analytics Anaconda installieren
Enthought Canopy Express
Python(x,y)
WinPython
Python auf Linux installieren
Python auf MacOS installieren
Python auf Windows installieren
Datensätze und Beispielcode herunterladen
Jupyter Notebook benutzen
Das Coderepository definieren
Ein neues Notebook erstellen
Ein Notebook exportieren
Ein Notebook entfernen
Ein Notebook importieren
Die Datensätze in diesem Buch verstehen
Kapitel 4: Algorithmen mit Python programmieren: Grundlagen
Mit Zahlen und Logik arbeiten
Variablenzuordnungen vornehmen
Berechnungen durchführen
Datenvergleich durch boolesche Ausdrücke
Strings erstellen und verwenden
Mit Datumsangaben arbeiten
Funktionen erstellen und verwenden
Mehrfach aufrufbare Funktionen erstellen
Funktionen aufrufen
Bedingte Anweisungen und Schleifen verwenden
Entscheidungen mittels if-Befehl treffen
Mittels verschachtelter Entscheidungen zwischen mehreren Möglichkeiten auswählen
Iterative Aufgaben mittels for-Schleife ausführen
Der while-Befehl
Daten in Mengen, Katalogen und Tupeln speichern
Datasets erstellen
Listen erstellen
Tupel erstellen und verwenden
Nützliche Iteratoren definieren
Daten mittels Dictionaries indizieren
Kapitel 5: Grundlagen der Datenbearbeitung mit Python
Berechnungen mit Vektoren und Matrizen
Variablen- und Vektoroperationen verstehen
Vektoren multiplizieren
Der erste Schritt: Matrizen erstellen
Matrizen multiplizieren
Erweiterte Matrizenoperationen definieren
Der richtige Weg: Kombinationen erzeugen
Permutationen unterscheiden
Kombinationen erzeugen
Wiederholungen behandeln
Ergebnisse mit Rekursion erzielen
Die Funktionsweise der Rekursion
Endrekursionen entfernen
Prozesse schneller ausführen
Der »teile und herrsche«-Ansatz
Zwischen möglichen Lösungen unterscheiden
Teil II: Die Notwendigkeit des Suchens und Sortierens
Kapitel 6: Daten strukturieren
Die Notwendigkeit einer Struktur
Inhalt vereinfacht darstellen
Daten aus verschiedenen Quellen anpassen
Die Wichtigkeit der Datenbereinigung
Daten gestapelt und kumuliert anordnen
Stapelweise Anordnungen
Warteschlangen verwenden
Daten mittels assoziativen Datenfeldern finden
Mit Bäumen arbeiten
Grundlegendes über Bäume
Bäume erstellen
Relationen in Graphen darstellen
Über Bäume hinauswachsen
Graphen erstellen
Kapitel 7: Daten ordnen und durchsuchen
Daten mit Mergesort und Quicksort sortieren
Die Notwendigkeit des Sortierens
Daten naiv anordnen
Bessere Sortiertechniken einsetzen
Suchbäume und Heaps verwenden
Die Notwendigkeit einer effizienten Suche
Binäre Suchbäume erstellen
Spezialisierte Suchen mit einem binären Heap
Hashing verwenden
Alles in Buckets füllen
Kollisionen vermeiden
Hashfunktionen selbst erstellen
Teil III: Die Welt der Graphen
Kapitel 8: Die Grundlagen von Graphen
Die Wichtigkeit von Netzwerken
Grundlegendes über Graphen
Graphen sind überall
Die soziale Seite eines Graphen
Teilgraphen verstehen
Definitionen für das Zeichnen von Graphen
Die wichtigsten Eigenschaften von Graphen
Graphen zeichnen
Die Funktionalität eines Graphen
Kanten und Knoten zählen
Zentralität berechnen
Graphen in ein numerisches Format bringen
Graphen zu einer Matrix hinzufügen
Dünn besetzte Matrizen verwenden
Graphen durch Listen ausdrücken
Kapitel 9: Punkte verbinden
Graphen effizient durchsuchen
Einen Graphen erstellen
Breitensuche anwenden
Tiefensuche anwenden
Die Entscheidung für eine Methode
Die Elemente eines Graphen sortieren
Mit gerichteten azyklischen Graphen arbeiten
Topologische Sortierungen verwenden
Die Reduktion auf einen minimalen Spannbaum
Geeignete Algorithmen verwenden
Vorrangwarteschlangen kennenlernen
Den Algorithmus von Prim einsetzen
Den Algorithmus von Kruskal testen
Entscheiden, welcher Algorithmus am besten passt
Den kürzesten Weg finden
Definieren, was der kürzeste Weg ist
Der Dijkstra-Algorithmus: eine Erklärung
Kapitel 10: Die Geheimnisse der Graphen
Soziale Netzwerke als Graphen betrachten
Netzwerke in Gruppen clustern
Communitys entdecken
Einen Graphen durchlaufen
Grade der Trennung abzählen
Graphen zufällig durchlaufen
Kapitel 11: Die richtige Webseite finden
Die Welt in einer Suchmaschine
Datensuche im Internet
Die richtigen Daten finden
Die Funktionsweise des PageRank-Algorithmus
Die Logik hinter dem PageRank-Algorithmus
Das A und O von PageRank
PageRank implementieren
Pythonskripte implementieren
Der Kampf mit naiven Implementierungen
Langeweile und Teleportation
Das Leben einer Suchmaschine
Andere Verwendungsmöglichkeiten von PageRank
Über das PageRank-Paradigma hinaus
Semantisches Suchen
Ranking von Suchergebnissen mit künstlicher Intelligenz
Teil IV: Der Kampf mit Big Data
Kapitel 12: Big Data verwalten
Die Umwandlung von Strom in Daten
Die Auswirkungen von Moore
Daten sind überall
Algorithmen ins Geschäft bringen
Datenflüsse streamen
Streams korrekt analysieren
Die richtigen Daten auswählen
Lösungen aus Stream-Daten skizzieren
Datenstromelemente filtern
Bloomfilter darstellen
Die Anzahl der Elemente bestimmen
Elemente eines Streams abzählen
Kapitel 13: Abläufe parallelisieren
Die Handhabung großer Datenmengen
Die parallele Methode
Dateien und Vorgänge verteilen
Lösungen mit MapReduce
Operationen verteilen
Algorithmen für MapReduce erstellen
MapReduce-Simulationen erstellen
Anfragen durch Mapping
Kapitel 14: Daten komprimieren
Daten reduzieren
Codierungen verstehen
Die Folgen der Kompression
Die Entscheidung für eine Kompressionsart
Die Wahl einer vernünftigen Codierung
Codieren mit der Huffman-Kompression
Folgen merken mit dem LZW-Algorithmus
Teil V: Komplexe Aufgaben angehen
Kapitel 15: Mit gierigen Algorithmen arbeiten
Die Entscheidung, wann Gier Sinn macht
Die Vorteile der Gier
Gierige Algorithmen im Zaum halten
NP-vollständige Probleme
Herausfinden, wieso Gier nützlich ist
Daten im Cache anordnen
Der Kampf um Ressourcen
Noch mal zu Huffman-Codierungen
Kapitel 16: Dynamische Programmierung
Dynamische Programmierung – was ist das?
Die historische Grundlage
Probleme dynamisieren
Rekursion dynamisch auslegen
Memoisation verwenden
Die besten dynamischen Techniken
Den Rucksack packen
Städte bereisen
Näherungsweise nach Strings suchen
Kapitel 17: Randomisierte Algorithmen
Die Funktionsweise der Randomisierung
Die Notwendigkeit der Randomisierung
Das Wahrscheinlichkeitsprinzip verstehen
Verteilungen verstehen
Die Monte-Carlo-Simulation
Den Zufall in die Logik einbauen
Den Median durch Quickselect bestimmen
Monte-Carlo-Simulationen ausführen
Schneller sortieren mit Quicksort
Kapitel 18: Lokale Suchen durchführen
Lokale Suchen verstehen
Die Nachbarschaft kennen
Tricks bei der lokalen Suche
Bergsteigen und das Damenproblem
Die Funktionsweise des Simulated Annealing
Wiederholungen durch die Tabu-Suche vermeiden
Die Erfüllbarkeit boolescher Schaltkreise
2-SAT mittels Randomisierungen lösen
Die Code-Implementierung in Python
Die Wichtigkeit des Anfangspunkts
Kapitel 19: Lineare Optimierung
Lineare Funktionen – ein Werkzeug
Die mathematischen Grundlagen
Während des Planens vereinfachen
Das Simplex-Verfahren geometrisch bearbeiten
Die Grenzen der linearen Optimierung
Lineare Optimierung in der Praxis
PuLP auf dem eigenen Computer installieren
Produktionsvorgänge und Einnahmen optimieren
Kapitel 20: Heuristiken untersuchen
Unterschiedliche Heuristiken kennenlernen
Die Ziele heuristischer Verfahren
Von genetisch zu künstlich
Heuristische Routensuche bei Robotern
Unbekannte Gebiete erkunden
Entfernungsmessungen als Heuristiken verwenden
Pathfinding-Algorithmen verstehen
Einen Irrgarten erstellen
Die Suche nach dem besten Weg
Heuristische Bewegungen mit A*
Teil VI: Der Top-Ten-Teil
Kapitel 21: Zehn algorithmische Verfahren, die die Welt verändern
Sortierverfahren einsetzen
Suchen durchführen
Mit Zufallszahlen eine neue Ordnung herstellen
Datenkompressionen vornehmen
Die Geheimhaltung von Daten
Datenbereiche ändern
Zusammenhänge erkennen
Muster in Daten erkennen
Mit Automatisierung und automatischen Antworten arbeiten
Eindeutige Identifizierungen erstellen
Kapitel 22: Zehn bislang ungelöste Probleme
Textsuchen bearbeiten
Wörter unterscheiden
Herausfinden, wann eine Anwendung anhält
Einwegfunktionen erstellen und verwenden
Die Multiplikation großer Zahlen
Die Gleichverteilung von Ressourcen
Die Berechnungszeit der Editierdistanz reduzieren
Aufgaben schnell lösen
Das Paritätsspiel spielen
Räumliche Aufgabenstellungen verstehen
Stichwortverzeichnis
Wiley End User License Agreement
← Prev
Back
Next →
← Prev
Back
Next →