Algorithmen für Dummies

 
 
Wiley-VCH (Verlag)
  • erschienen am 18. September 2017
  • |
  • 320 Seiten
 
E-Book | ePUB mit Adobe DRM | Systemvoraussetzungen
978-3-527-80977-6 (ISBN)
 
Wir leben in einer algorithmenbestimmten Welt. Deshalb lohnt es sich zu verstehen, wie Algorithmen arbeiten. Das Buch präsentiert die wichtigsten Anwendungsgebiete für Algorithmen: Optimierung, Sortiervorgänge, Graphentheorie, Textanalyse, Hashfunktionen. Zu jedem Algorithmus werden jeweils Hintergrundwissen und praktische Grundlagen vermittelt sowie Beispiele für aktuelle Anwendungen gegeben. Für interessierte Leser gibt es Umsetzungen in Python, sodass die Algorithmen auch verändert und die Auswirkungen der Veränderungen beobachtet werden können. Dieses Buch richtet sich an Menschen, die an Algorithmen interessiert sind, ohne eine Doktorarbeit zu dem Thema schreiben zu wollen. Wer es gelesen hat, versteht, wie wichtige Algorithmen arbeiten und wie man von dieser Arbeit beispielsweise bei der Entwicklung von Unternehmensstrategien profitieren kann.
1. Auflage
  • Deutsch
  • Newark
  • |
  • Deutschland
  • 6,98 MB
978-3-527-80977-6 (9783527809776)
3527809775 (3527809775)
weitere Ausgaben werden ermittelt
John Paul Müller ist freier Autor und technischer Redakteur. Er hat das Schreiben im Blut. Bis heute hat er 100 Bücher und mehr als 600 Zeitschriftenartikel geschrieben. Seine Themen reichen von Netzwerken bis Haussicherheit und von Datenbankmanagement bis Programmierung.
Luca Massaron ist Data Scientist und spezialisiert auf die Aufbereitung und Analyse von Big Data. Er beherrscht die einfachsten und effektivsten Data-Mining- und Maschinelles-Lernen-Techniken und macht so aus Big Data Smart Data. Als Marketing-Consultant und -Forscher hat er seit dem Jahr 2000 mit Data Science zu tun, mit verschiedenen Kunden und in verschiedenen Märkten. Er ist Top-Ten-Kaggle-Data-Scientist.
  • Ü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

Algorithmen für Dummies

Schummelseite

Den richtigen Algorithmus finden

In der folgenden Tabelle finden Sie verschiedene Algorithmen, die für die Datenanalyse nützlich sein können.

Algorithmus

Beschreibung

A*-Suche

Der Algorithmus berechnet während der Untersuchung der Knoten fortlaufend die damit verbundenen Kosten. Dies geschieht anhand der Gleichung f(n) = g(n) + h(n), wobei:

n für den Knoten steht,

g(n) die entstandenen Kosten bis zum Erreichen des Knotens sind,

h(n) die geschätzten Kosten vom Knoten bis zum Ziel sind und

f(n) die geschätzten Kosten des Wegs von n bis zum Ziel sind.

Die Idee hierbei ist, zuerst die aussichtsreichsten Wege zu durchsuchen und kostenintensive Wege zu vermeiden.

Balancierter Baum

Eine besondere Art von Baum, der durch Umordnen eine balancierte Struktur bewahrt. Hierdurch lassen sich Aufrufzeiten reduzieren. Die Anzahl der Elemente auf der linken Seite unterscheidet sich von der Anzahl der Elemente auf der rechten Seite höchstens um 1.

Bidirektionale Suche

Bei dieser Technik wird gleichzeitig vom Wurzelknoten und vom Zielknoten aus gesucht, bis sich die Wege beider Suchen in der Mitte treffen. Ein Vorteil dieses Ansatzes ist, dass er nicht sehr zeitaufwändig ist, weil er die Lösung schneller als viele andere Brute-Force-Ansätze findet. Zudem ist er im Vergleich zu anderen Ansätzen sparsamer hinsichtlich des Speicherplatzverbrauchs und findet garantiert eine Lösung. Der größte Nachteil ist die Kom­­plexität der Implementierung.

Binärer Baum

Bei dieser Art von Baum ist ein Knoten jeweils mit keinen (im Fall eines Blattknotens), einem oder zwei (bei inneren Knoten) anderen Knoten verbunden. Durch jeden Knoten werden drei wichtige Aspekte definiert: Datenspeicher, linke und rechte Verbindung.

Breitensuche

Diese Technik setzt am Wurzelknoten an und untersucht zunächst jeden der Kinderknoten. Anschließend geht sie zur nächsten Ebene über. So durchläuft sie Ebene für Ebene, bis eine Lösung gefunden wurde. Der Nachteil dieses Algorithmus ist, dass jeder Knoten abgespeichert werden muss, was bei großen Knotenmengen entsprechend viel Speicherplatz beansprucht. Die Breitensuche kann doppelt vorkommende Knoten finden, was Zeit spart. Eine Lösung ist immer garantiert.

Brute-Force-Methode

Bei diesem Ansatz wird jede mögliche Lösung ausprobiert, um darunter die beste Lösung zu finden. Brute-Force-Techniken finden immer die beste Lösung, sind jedoch dermaßen zeitaufwändig in der Implementierung, dass sie meistens nicht verwendet werden.

Dijkstra

Dieser Algorithmus findet den kürzesten Weg in einem gerichteten, positiv gewichteten Graphen.

Gierige Bestensuche

Dieser Algorithmus wählt stets diejenige Strecke aus, die sich am nächsten zum Zielpunkt befindet. Dies geschieht anhand der Gleichung f(n) = h(n). Der Algorithmus findet in der Regel sehr schnell eine Lösung, kann jedoch auch in Schleifen hängen bleiben. Aus diesem Grund stellt er oftmals keinen optimalen Lösungsansatz dar.

Gieriger Algorithmus

Bei dieser Technik wird für die Gesamtlösung das beste Ergebnis aus jedem einzelnen Schritt des Lösungsprozesses genommen. Gierige Algorithmen gehen von zwei Annahmen aus:

Es ist möglich, in jedem Schritt die eine optimale Wahl zu treffen.

Trifft man in jedem Schritt die optimale Wahl, lässt sich hierdurch eine optimale Lösung des Gesamtproblems finden.

Graph

Ein Graph ist eine Art Erweiterung eines Baums. Wie auch bei Bäumen können zwischen den Knoten eines Graphen Verbindungen bestehen. Anders als bei binären Bäumen können bei Graphen jedoch mehr als eine oder zwei Verbindungen von einem Knoten ausgehen. Graphknoten haben oftmals sogar sehr viele Verbindungen. Sie werden beispielsweise in GPS-Karten und in vielen anderen Anwendungen eingesetzt, wo der Top-Down-Ansatz für Bäume nicht funktioniert.

Hashing

Bei dieser Methode wird vorhergesagt, wo sich ein bestimmtes Datenobjekt in einer beliebigen Datenstruktur befindet, bevor man mit der eigentlichen Suche beginnt. Hierzu werden Schlüssel eingesetzt, die in einem Index abgelegt sind: Der Schlüssel wird zunächst durch eine Hashfunktion in einen numerischen Wert umgewandelt, den der Algorithmus in einer Hashtabelle ablegt. Anhand der Hashtabelle lässt sich ein Index erstellen, der auf die Elemente in der Datenstruktur verweist, sodass der Algorithmus die Position der Daten leicht vorhersagen kann.

Heap

Hierbei handelt es sich um eine raffinierte Baumstruktur, in die sich Daten einfügen lassen. Durch dieses Einfügen lässt sich der Sortiervorgang beschleunigen. Die Bäume können weiter in sogenannte Max-Heaps und Min-Heaps unterteilt werden, je nachdem, ob der Heap sofort den maximalen oder den minimalen Wert im Baum ausgibt.

Heuristik

Diese Problemlösetechnik beruht auf Erfahrungen und gibt Ergebnisse aus, die zwar nicht optimal, jedoch gut genug sind, sodass eine bessere Lösung nicht mehr nötig ist. Hierbei lässt man sich durch den Algorithmus potentiell nützliche Lösungswege aufzeigen. Anschließend ist man jedoch trotzdem auf menschliche Intuition und Vernunft angewiesen, um zu wissen, ob es sich bei dem Ergebnis tatsächlich um die richtige Lösung handelt.

MapReduce

Mithilfe dieser Grundstruktur können Algorithmen auf mehreren vernetzten Computern parallele Berechnungen ausführen, wodurch Ergebnisse schneller erzielt werden.

Mergesort

Mergesort ist eine universelle, vergleichsbasierte Methode des Datensortierens. Zur Ausführung macht man von einem Teile-und-herrsche-Ansatz Gebrauch.

Nash-Gleich­gewicht

Dies ist ein Begriff aus der Spieltheorie. Er beschreibt eine Situation, in der jedem Spieler die Strategie der anderen Spieler bekannt ist, sodass kein Spieler durch die Änderung seiner Strategie einen Vorteil hat. Diese Theorie wird auf Konfliktsituationen angewandt, bei denen ein Spieler die Entscheidungen aller beteiligten Spieler berücksichtigen muss, wenn er das Spiel gewinnen will.

PageRank

Der PageRank-Algorithmus misst die Wichtigkeit eines Knotens in einem Graphen. Dieser Algorithmus bildet die wesentliche Grundlage für die Kernalgorithmen von Google, die die relevantesten Ergebnisse einer Suchanfrage ausgeben.

Quicksort

Dies ist ein allgemeines Sortierverfahren, bei dem ein Datenarray durch einen Teile-und-herrsche-Ansatz in kleinere Datenarrays zerlegt wird.

Rein heuristische Suche

Dieser Algorithmus durchläuft die Knoten in der Reihenfolge ihrer Kosten und legt dabei zwei Listen an. Eine geschlossene Liste enthält bereits besuchte Knoten, während eine offene Liste diejenigen Knoten enthält, die noch besucht werden müssen. Bei jeder Iteration wählt der Algorithmus den Knoten mit den niedrigsten Kosten aus. Alle Kinderknoten dieses Knotens werden in der geschlossenen Liste abgelegt und die jeweiligen Kosten berechnet. Der Algorithmus legt sodann alle Kinderknoten mit niedrigen Kosten wieder in der offenen Liste ab und löscht die Kinderknoten mit hohen Kosten. So führt er eine intelligente, kostenbasierte Suche nach der Lösung aus.

Teile und herrsche

Bei diesem Lösungsansatz wird die Aufgabe in kleinstmögliche Teile zerlegt und mithilfe des einfachsten Ansatzes gelöst. Dies spart im Vergleich zu anderen Ansätzen wie etwa dem Brute-Force-Ansatz viel Zeit und Ressourcen. Jedoch ist eine optimale Lösung nicht immer garantiert.

Tiefensuche

Diese Technik setzt am Wurzelknoten an und untersucht dann eine Menge von verbundenen Kinderknoten, bis sie einen Blattknoten erreicht. Sie durchläuft Zweig um Zweig, bis sie eine Lösung findet. Der Nachteil dieses Algorithmus ist, dass er nicht nach doppelt vorkommenden Knoten suchen kann; das bedeutet, dass er die gleichen Knotenwege mehr als einmal durchlaufen könnte. Es kann sogar sein, dass dieser Algorithmus gar keine Lösung findet, sodass Sie eine obere Grenze definieren müssen, damit der Algorithmus nicht ewig weitersucht. Ein Vorteil dieses Ansatzes ist, dass er speicherplatzfreundlich ist.

Unbalancierter Baum

Bei diesem Baum werden je nach Bedarf neue Datenelemente eingefügt, ohne dass dabei die Balance des Baums berücksichtigt wird. Durch diese Methode des Hinzufügens wird der Baum schneller aufgebaut, bei Such- oder Sortiervorgängen jedoch langsamer abrufbar.

Algorithmen und andere mathematische Begriffe

Wie die meisten Menschen kommen wahrscheinlich auch Sie ins Grübeln, wenn Sie einen mathematischen Fachbegriff hören. Niemand scheint zu wissen, wie man diese...

Dateiformat: EPUB
Kopierschutz: Adobe-DRM (Digital Rights Management)

Systemvoraussetzungen:

Computer (Windows; MacOS X; Linux): Installieren Sie bereits vor dem Download die kostenlose Software Adobe Digital Editions (siehe E-Book Hilfe).

Tablet/Smartphone (Android; iOS): Installieren Sie bereits vor dem Download die kostenlose App Adobe Digital Editions (siehe E-Book Hilfe).

E-Book-Reader: Bookeen, Kobo, Pocketbook, Sony, Tolino u.v.a.m. (nicht Kindle)

Das Dateiformat EPUB ist sehr gut für Romane und Sachbücher geeignet - also für "fließenden" Text ohne komplexes Layout. Bei E-Readern oder Smartphones passt sich der Zeilen- und Seitenumbruch automatisch den kleinen Displays an. Mit Adobe-DRM wird hier ein "harter" Kopierschutz verwendet. Wenn die notwendigen Voraussetzungen nicht vorliegen, können Sie das E-Book leider nicht öffnen. Daher müssen Sie bereits vor dem Download Ihre Lese-Hardware vorbereiten.

Weitere Informationen finden Sie in unserer E-Book Hilfe.


Download (sofort verfügbar)

23,99 €
inkl. 19% MwSt.
Download / Einzel-Lizenz
ePUB mit Adobe DRM
siehe Systemvoraussetzungen
E-Book bestellen

Unsere Web-Seiten verwenden Cookies. Mit der Nutzung des WebShops erklären Sie sich damit einverstanden. Mehr Informationen finden Sie in unserem Datenschutzhinweis. Ok