Suchen

Buchrezension Algorithmen lernen mal ganz anders

| Autor / Redakteur: Ariane Rüdiger / Nico Litzel

Programmieren ist für Viele ein Buch mit sieben Siegeln. Wer verstehen will, wie wichtige, häufig eingesetzte Algorithmen funktionieren, um Probleme zu lösen, muss nicht unbedingt über eine Programmiersprache einsteigen. Das beweist dieses Buch.

Firmen zum Thema

Das rund 270-seitige Werk von Aditya Y. Bhargava richtet sich an absolute Programmierlaien.
Das rund 270-seitige Werk von Aditya Y. Bhargava richtet sich an absolute Programmierlaien.
(Bild: Mitp-Verlag)

Wie findet man am schnellsten eine beliebige Zahl zwischen 1 und 100, an die jemand denkt? Das klingt nach einem albernen Jahrmarktscherz, ist aber der Einstieg ins Algorithmenlernen. Zumindest in dem Buch von Aditya Y. Bhargava, das die Autorin für BigData-Insider studieren durfte.

Das Buch ist besonders interessant dadurch, dass es sich an absolute Programmierlaien wendet, die aber (wie heute beinahe jeder) ständig mit dem Begriff „Algorithmus“ bombardiert werden. Ihm haftet, vor allem gern gebraucht in Verbindung mit „Big Data“ schon beinahe etwas Magisches an.

Das rund 270-seitige Werk von Aditya Y. Bhargava versucht, Wissen an die Stelle von nebulösen Vermutungen zu setzen. Es klärt darüber auf, was Algorithmen und grundlegende Datenstrukturen sind – nämlich Rezepte oder Verfahrensregeln, um Probleme zu lösen oder Fragen zu beantworten, die sich mithilfe von Daten lösen oder beantworten lassen. Zudem zeigt es, wie wichtige Algorithmen und Datenstrukturen funktionieren.

Ein Bild sagt mehr als tausend Worte

Einige Beispiele für Aufgaben, die algorithmisch lösbar sind: Lange Listen durchsuchen, die optimale Reihenfolge oder Auswahl von etwas herausfinden, Parametern Werte zuzuordnen und diese dann zu minimieren oder zu maximieren. Kurz: alles Aufgaben, die auch im Kontext von Big Data anfallen.

Der Autor des Buches geht dabei einen ungewöhnlichen Weg. Statt seine Leserschaft auf die Suche nach Verwert- und Merkbarem durch eine Textwüste zu schicken, wählt er die Methode, möglichst viele Beispiele grafisch aufzubereiten. Dazu nutzt er Zeichnungen, die den Sachverhalt und die Lösung veranschaulichen sollen.

Dieses Verfahren ist besonders gut für diejenigen, die gern optisch lernen. Den anderen Leserinnen und Lesern schadet es zumindest nicht. Weiteres hervorstechendes Detail: Bhargava langweilt nicht mit Code-Würsten. Vielmehr beschränkt er den im Buch vorhandenen Python-Code auf das, was man braucht, um zu verstehen, was der Code an dieser Stelle tatsächlich tut.

Codewüste ade

Der mitgelieferte Code hilft dann auch tatsächlich, etwas zu begreifen. Leider sind Codebeispiele auch in diesem Buch dunkelgrau unterlegt, was zusammen mit schwarzem Text nicht gerade die Lesbarkeit verbessert. Vielleicht kann man es irgendwann sogar umsetzen. Aber das ist wohl gar nicht unbedingt das Ansinnen. Zwar wendet sich das Buch an Programmierer aller Art. Doch es reicht auch, verstehen zu wollen, was welche Algorithmen leisten.

Die Beispiele, an denen Bhargava grundlegende Algorithmen vorführt, sind angenehm einfach und aus dem Leben gegriffen: Zahlen raten, Produkten Preise zuordnen, eine Reise optimal planen, einen Rucksack so packen, dass möglichst viel Wertvolles hineinpasst und so weiter. Das nimmt die Scheu, sich mit dem dahinter stehenden Thema auseinanderzusetzen. Denn so etwas möchte eigentlich jeder irgendwann einmal optimal erledigen.

Im Einzelnen stellt Bhargava in acht der zehn Kapitel seines Buches jeweils einen Algorithmus oder eine Datenstruktur vor. Das einleitende Kapitel macht mit grundlegenden Begriffen und der Landaunotation vertraut. Letztere ist ein Verfahren zur Angabe von Laufzeiten – schließlich ist neben der Tatsache, dass ein Algorithmus richtig rechnet, auch wichtig, wie lange er dazu braucht.

Die wichtigsten Algos und Datenstrukturen

Die folgenden acht Kapitel behandeln kapitelweise Selectionsort (Sortieren), Rekursion , Quicksort (ebenfalls Sortieren, aber anders), Hashtabellen, Breitensuche (Graphen), der Dijkstra-Algorithmus, Greedy-Algorithmen (beide für Optimierungsaufgaben), dynamisches Programmieren und k-nächste Nachbarn. Das letzte Kapitel schließlich beschreibt einige Algorithmen, die hohe praktische Bedeutung haben. Beispiele sind Bäume, invertierte Indices, die Fourier-Transformation, MapRedzcem SHA und anderes.

Jedes Kapitel, das einen Algorithmus beschreibt, ist dabei ein bisschen anders aufgebaut. Es vermittelt ganz nebenbei grundlegende mathematische oder informatische Kenntnisse, beispielsweise zum Aufbau von Computerspeichern, über Mengenlehre oder Graphen. Zu jedem Algorithmus gibt es ein Beispiel.

Nach der grundlegenden Vorgehensweise und der nötigen mathematischen Theorie folgt der Praxisteil. Er besteht in der Umsetzung grundlegender Funktionen in Python-Code. Anschließend werden die Laufzeiten der Algorithmen mithilfe der Landaunotation bewertet und gegebenenfalls mit Varianten verglichen.

Übung macht den Meister

Das abschließende Kapitel bricht leider mit dieser sehr einsichtigen Methodik. Es gewährt nur einen jeweils sehr kurz gefassten Einblick in bestimmte Algorithmen und ihre Anwendungen. Immerhin weist der Autor jeweils auf weiterführende Literatur hin.

Schließlich hat jedes Kapitel noch einen Übungsteil. Mit einfachen, manchmal auch kniffligen, Fragen wird überprüft, ob vom Inhalt des Kapitels auch etwas verstanden wurde. Die Auflösungen stehen hinten. Dort findet sich auch ein Stichwortverzeichnis.

Zudem ist die gesamte Codebasis, wie heute bei Programmierbüchern beinahe flächendeckend üblich, bei Github erhältlich. Gut wäre gewesen, wenn der Autor die Voraussetzungen erklärt hätte, die der eigene PC erfüllen muss, damit man den Code der Beispiele dort ablaufen lassen kann. Gerade Einsteiger aus anderen Fachbereichen hätten davon profitiert.

Fazit

Wegen seiner übersichtlichen Struktur eignet sich das Buch gut zum Lernen und Wiederauffrischen von Algorithmenwissen. Dazu trägt mit Sicherheit auch der relativ große, gut lesbare Schrifttyp bei. Wer allerdings professionell an Programmierproblemen aus dem Bereich der Datenanalyse arbeitet, wird um vertiefende Lektüre nicht herumkommen.

Ergänzendes zum Thema
Bibliografie

Aditya Y. Bhargava: Algorithmen kapieren. Visuell lernen und verstehen mit Illustrationen, Alltagsbeispielen und Python-Code. Mitp-Verlag, München, 2018. Broschiert, 270 Seiten, zahlreiche Zeichnungen. ISBN 978-3-95845-9700-5, 29,99 Euro.

(ID:45772940)