Der Weg zum Lösungsweg

Wie entwickelt man einen Algorithmus – oder allgemeiner: wie findet man Lösungswege?

MATERIALIEN

 

Ein Algorithmus beschreibt das genaue Vorgehen zur Lösung eines Problems

Algorithmus

Erstellt von Seraina Hohl

Ein Algorithmus ist eine eindeutige Handlungsanweisung für die Lösung von Problemen. Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. Sie können in menschlicher Sprache formuliert oder aber zur Ausführung in ein Computerprogramm implementiert werden. Für die Problemlösung wird eine bestimmte Eingabe Schritt für Schritt in eine bestimmte Ausgabe überführt.

Analogie


Algorithmus = Kochrezept
Eingabe = Zutaten
Ausgabe, bzw. Lösung = Speise

Quelle: Oinf

Das wirft eine Frage auf: Wie kommt man von der (ggf. komplexen) Problemstellung zur algorithmischen Beschreibung einer (schlauen) Lösung?
Die Antwort: mit Computational Thinking.

Computational Thinking

«Computisches Denken» meint die Strategie, Lösungswege in eine Schritt-für-Schritt-Anleitung zu übersetzen.

Computational Thinking

Erstellt von Seraina Hohl

Computational Thinking (auf Deutsch etwa «Informatisches Denken») beschreibt ein sehr allgemeines Set von Denkfiguren (= Arten des Denkens), die bei der Problemlösung zum Einsatz kommen. Computational Thinking bezieht sich nicht notwendigerweise auf Algorithmen und auch nicht nur auf die Informatik. Vielmehr sollen die beschriebenen Denkweisen als Hilfestellung zur strukturierten Lösung aller möglichen Arten von Problemen dienen.
Die wichtigsten Denkfiguren des Computational Thinking sind:

  • Decomposition: Ein grosses Problem wird in mehrere kleine zerlegt. Diese kleineren Teilprobleme sind einfacher zu handhaben bzw. zu bedenken, oft kann man sie einzeln nacheinander lösen. Dazu gehört ebenfalls die Strategie, zunächst eine einfachere Version des Problems zu lösen und den initialen Lösungsansatz dann auf immer allgemeinere Formen des Problems zu erweitern.
  • Pattern Recognition: Wiederkehrende Muster und ähnliche Teilprobleme, also gleichartige Strukturen werden identifiziert. So kann man sich bei der Lösungsfindung auf wenige Aspekte konzentrieren und durch die wiederholte Anwendung derselben Lösungsschritte auch umfangreiche Aufgaben meistern.
  • Abstraction: Das Problem wird aus einem gewissen Abstand betrachtet und über Details hinweggeschaut. Dieser Schritt ist beispielsweise nötig, um das Problem in seiner einfachst möglichen Form zu formulieren, in der nur noch die wirklich relevanten Informationen berücksichtigt werden.
    Natürlich hilft die abstraktere Sichtweise auch bei Decomposition und Pattern Recognition, denn oftmals zeigt sich, dass zu Beginn verschieden erscheinende (Teil-)Probleme sich auf einen gemeinsamen Kern zurückführen lassen und mit derselben (wiederholten) Strategie zu lösen sind.
    Bei komplexen Problemen ist es oft nötig, kontinuierlich mit verschiedenen Ebenen der Abstraktion umzugehen, beispielsweise wenn man eigentlich gerade eine Lösung für ein Teilproblem sucht, dabei aber den Zusammenhang mit dem Gesamtproblem auf der einen und der technischen Umsetzung auf der anderen Seite nicht ganz ausser Acht lassen darf.
  • Algorithm Design: Die Lösung oder den Lösungsansatz wird in klar formulierte, einzelne Schritte aufgeteilt und eine Reihenfolge für diese Schritte festgelegt. Dazu gehört ebenfalls, dass man die Rahmenbedingungen für einen Algorithmus immer wieder überprüft (z.B. ob die Schritte eindeutig formuliert sind, ob der gefundene Lösungsansatz immer korrekte Ergebnisse liefert oder ob alle Varianten des Problems berücksichtigt sind).

Ein Beispiel für Computational Thinking

Wie findet man (im Dunkeln) aus jedem beliebigen Irrgarten heraus? Diese Frage lässt sich eindeutig beantworten – mit einem Algorithmus. Das oben beschriebene Computational Thinking ist sehr nützlich auf dem Weg zu einem Algorithmus. Die Entwicklung des Lösungsansatzes bietet also verschiedene Gelegenheiten, die zugehörigen Denkfiguren zu verstehen und üben:

Aufgabe

Vier verschiedenen Entwicklungsschritte werden auf den Folien Labyrinthe.pptx.pdf erklärt.

Aufgabe

Erste Lösungsansätze entwickeln Sie mit dem Interactive blockly-maze.

Aufgabe

Mit der Druckvorlage Labyrinthe_druck.pdf können Sie Ihre Lösungsansätze interaktiv überprüfen.

Aufgabe

Zur Umsetzung der allgemeinsten Form des Irrgarten-Algorithmus folgen Sie diesem Vorgehen:

Informieren Sie sich zuerst im Arbeitsblatt AlgorithmusDerWoche_Pledge.pdf über die Funktionsweise des Pledge-Algorithmus (hier finden Sie eine aktualisierte Version des zugehörigen Pledge Applet) …
… dann versuchen Sie sich an einer Umsetzung: Das Arbeitsblatt PledgeAlgorithmusInScratch.pdf beschreibt, wie Sie die Umsetzung im Scratch Editor angehen – ausgehend von einem Scratch-Projekt in PledgeInScratch.zip (erst entzippen).

Sie finden auch eine Musterlösung. Bitte schauen Sie erst nach, wenn Sie selbst eine Lösung gefunden haben – oder wenn Sie wirklich gar nicht weiterkommen.