12.1. Algorithmen sowie algorithmische Rätsel und Knobelaufgaben |
![]() |
![]() |
Letztmalig dran rumgefummelt: 31.01.09 03:48:04 |
![]() |
Algorithmus - (algorithm) Auch Rechenanweisung. Eine endliche Menge von eindeutig festgelegten Regeln zur Lösung eines Problems durch eine endliche Menge von Einzelschritten. Ein Algorithmus ist demnach eine Beschreibung der Methode, ein Problem oder eine Aufgabe zu lösen. Er besteht aus einer Folge von Einzelschritten, deren richtige Abarbeitung die gegebene Aufgabe erfüllt. Diese Abarbeitung bezeichnet man als einen Prozess. In der Mathematik werden solche Algorithmen als Voraussetzung für die Lösung von berechenbaren, entscheidbaren und aufzählbaren Problemen verwendet. Jedoch ist der Begriff des Algorithmus übertragbar auf sämtliche anderen Bereiche, in denen ebenfalls nach gegebenen Regeln vorgegangen wird. Konstruiert man eine Apparatur, die einen Prozess nach einem Algorithmus durchführen kann, so spricht man von einem Prozessor. Typische Prozessoren sind Automaten, zu denen Computer zu rechnen sind. Computer erhalten ihre Algorithmen in Form von Programmen, die mit Hilfe von Programmiersprachen formuliert worden sind Programme sind also Algorithmen. | |||||||
![]() |
1. Definitionsversuch 2. Arten und Grenzen von Algorithmen - Algorithmierbarkeit von Problemlösungen 3. Eigenschaften des Algorithmus 4. Erweiterung des Algorithmenbegriffes 5. Zusammenfassung 6. Grundalgorithmen und Problemstellungen 7. Algorithmierbare Rätsel & Knobelaufgaben 8. Gierige Algorithmen 9. Verwandte Themen |
|||||||
![]() |
|
|||||||
![]() |
Quellen:
|
|||||||
![]() |
In neuerer Zeit hat man entdeckt, dass es bei der Gestaltung von
Computerprogrammen praktisch nur drei Grundformen von Algorithmen-Mustern
gibt, die Reihung (Sequenz), die Auswahl (Selektion) und die Wiederholung (lteration).
Das hat zu einer völligen Umstellung der Programmiertechnik (Programmierung,
strukturierte) geführt, die erhebliche Verbesserungen hinsichtlich der
Übersichtlichkeit, der Änderungsfreundlichkeit und der
Benutzerfreundlichkeit bewirkte. Diese Erkenntnisse haben sich bis in die
Konstruktion neuer Sprachen ausgewirkt (z. B. bei PASCAL). Besondere Probleme im Zusammenhang von Algorithmen bestehen in ihrer Berechenbarkeit, ihrer Komplexität und ihrer Korrektheit. Wichtige theoretische Vorarbeiten für die Entwicklung von Computern wurden bereits durch die Untersuchungen von Turing u. a. über A. geleistet. Der Name Algorithmus leitet sich von dem Namen des iranischen Mathematikers und Astronomen Mohammed ibn Musa al-Chwarismi ab, der um 820 u. a. Lehrbücher über Algebra schrieb. Diese Bücher wurden im Mittelalter auch ins Lateinische übersetzt und hatten große Verbreitung sowohl im arabischen Kulturkreis als auch in Europa. Lit.: Horowitz, e.: S. Sahni: Fundamentals of Computer Algorithms, Rockwell 1978. Hoßfehl, E: Parallele Algorithmen, Berlin, Heidelberg u. a. 1983. Goldschlagcr, L.; A. Lister: Informatik. Eine moderne Einführung. München/Wien 1984. Mehlkorn, K.: Datenstrukturen und effiziente Algorithmen, 2. Aufl. Stuttgart 1988. |
|||||||
![]() |
Rezept zur Zubereitung einer Elefanten-Crème Je nach Personenzahl einen bis zwei zarte Elefanten mit 3 Litern Vollmilch und 150 g Zucker kurz aufwellen lassen, unter ständigem Rühren 1 Eigelb beigeben, in gespülte Puddingform gießen, nach dem Erkalten stürzen und mit Mandeln servieren. Statt der Elefanten können auch Schokolade, Vanille oder Himbeeren verwendet werden. Loriot |
|||||||
![]() |
Beachte: Murphys Gesetze sowie deren Optimierung durch Computer, denn: wer Algorithmen entwickelt, macht Fehler |
1. Definistionsversuch |
![]() |
![]() |
![]() |
![]() |
Der Algorithmus ist eine direkte Folge von Zustandsinformationen, ist eine endliche, geordnete Menge von Aktivitäten, durch die der Zustand vom Datenobjekt verändert wird. Die Teilordnung dieser Aktivitäten bestimmt die Reihenfolge ihrer Ausführung, sie wird konstituiert durch die zwischen ihnen bestehende Datenabhängigkeit. Jede Lösung entspricht einem Algorithmus. |
![]() |
um ein Problem zu lösen, muss Aufwand betrieben werden |
![]() |
„Ist eine präzise, endliche Verarbeitungsvorschrift, deren
Elementaroperationen so ausführlich formuliert sind, dass sie von einem
Computer ausgeführt werden können. Dabei muss die Anzahl der möglichen
Elementaroperationen beschränkt sein, was auch für die Ausführungszeit gilt.
Aus der sprachlichen Darstellung des Algorithmus muss die Abfolge der
einzelnen Schritte eindeutig hervorgehen. Wahlmöglichkeiten sind zugelassen,
diese Auswahl muss aber eindeutig sein.“ nach „Scriptum der Inforamtik“ |
![]() |
|
![]() |
Naiver Algorithmenbegriff:
|
![]() |
mehr gibt's hier |
2. Arten und Grenzen von Algorithmen - Algorithmierbarkeit von Problemlösungen |
![]() |
![]() |
![]() |
![]() |
Das muss aber auch einfacher gehen ;-) |
![]() |
Algorithmen kann man unterteilen in
|
![]() |
Wohl schon alleine, um nicht in den Verdacht zu geraten, den technischen
Fortschritt all zu sehr zu bejubeln, findet man in fast allen Richtlinien
die Aufforderung, im Informatikunterricht auch Aussagen zu den „Grenzen“ der
Computer zu machen. Meist wird dieser Aufgabe dadurch entsprochen, in einer
Lerneinheit der theoretischen Informatik etwa beim Thema „Turingmaschinen“
Berechenbarkeits- und Entscheidbarkeitsprobleme zu behandeln. Abgesehen
davon, dass solche Fragen nicht in allen Kursfolgen angesprochen werden
können (und die meisten Schüler/innen damit keine Aussagen zu den „Grenzen“
im Informatikunterricht vorfinden werden), sind die heranzuziehenden
Beispiele der theoretischen Informatik in diesem Bereich so abstrakt, dass
bei den Schülern durchaus der Eindruck entstehen kann, für „praktische“
Fragen wären Computer „grenzenlos“ geeignet. Dem ist aber nicht so, denn
Grenzen in der Anwendbarkeit von Rechnern zeigen sich auf sehr
unterschiedlichen Gebieten:
Schon im Anfangsunterricht können Fragestellungen behandelt werden, die „die Grenzen der Computer“ erfahrbar werden lassen. Insbesondere ist es meist nicht notwendig, zu diesem Zweck Programme zu schreiben, denn die interessanteren Fragestellungen ergeben sich, wenn anhand von Fallbeispielen allgemein erörtert wird, auf welchen Gebieten Computer vielleicht besser nicht eingesetzt werden sollten. |
3. Eigenschaften des Algorithmus |
![]() |
![]() |
![]() |
4. Erweiterung des Algorithmenbegriffs |
![]() |
![]() |
![]() |
![]() |
Mit dem bisherigen festen Algorithmenverständnis sind wir nicht in der Lage, die Welt sowie ihr innewohnende Problemstellung hinreichend zu beschreiben - wir müssen für das klassische Algorithmenverständnis allgemein gültige Erweiterungen zulassen. |
![]() |
Die mathematische Grundlagenforschung vollzog im Laufe dieses Jahrhunderts eine Präzisierung des Algorithmus-Begriffs. Es wurden unabhängig voneinander mehrere solcher Präzisierungen entwickelt, die sich später als gleichwertig erwiesen. Die bekanntesten Mathematiker, die auf diesem Gebiet Marksteine setzten, waren K. GÖDEL, A. CHURCH und A. M. TURING. Wir greifen im folgenden den Ansatz des Engländers Turing (1912-1954) auf, der 1936 die nach ihm benannten Turingmaschinen als Modelle von Berechnungsverfahren entwickelte. |
![]() |
nichtdeterministische Algorithmen sind zugelassen (Zufallszahlen sorgen mindestens einmal für die zufällige Wahl des Operanden, der Operation oder der Fortsetzung) gleiche Eingabedaten bewirken nicht mehr gleiche Ausgabedaten |
![]() |
Kopplung eines Algorithmus an einen Datenbestand - lernender Algorithmus |
![]() |
Algorithmen können theoretisch endlos werden - Betriebssysteme |
5. Zusammenfassung |
![]() |
![]() |
![]() |
![]() |
Ergänzt um diese Positionen und Akzeptiert die praktischen Forderungen, ergibt sich hier ein derzeit vollständig funktionierender Algorithmenbegriff. Er erweitert den klassischen Begriff um die Komponente Zufall (gleicher Input generiert nun nicht mehr zwingend gleichen Output) sowie das schmälern der Forderung nach einem Ende - Algorithmen müssen nicht mehr notwendigerweise terminieren. |
![]() |
Ein Algorithmus endet „irgendwann“! |
![]() |
Ein Algorithmus ist „eindeutig (genau)“ in seiner Beschreibung! |
![]() |
Ein Algorithmus bricht nur nutzerdefiniert ab und „nicht irgendwie“! |
![]() |
Ein Algorithmus beschreibt kein Problem, sondern eine „Problemklasse“! |
![]() |
Determinierende Algorithmen „enden“! - Es gibt jedoch praktisch nicht determinierende Algorithmen - siehe dazu Betriebssysteme |
![]() |
Nach einem Schritt ist der nächste Schritt genau bekannt! |
6. Grundalgorithmen und Problemstellungen |
![]() |
![]() |
![]() |
![]() |
Analysiert man die Aufgabenbereiche der Anwendersoftware, dann stellt man schnell fest, dass sich alle Aufgabenstellungen an ca. 20 Grundalgorithmen auf Basis von Arrays und Dynamischen Variablen zurückführen. Diese werden dann lediglich den drei Grundstrukturen folgend miteinander kombiniert und/oder geschachtelt. | ||||
![]() |
|
||||
![]() |
7. Algorithmische Rätsel und Knobelaufgaben |
![]() |
![]() |
![]() |
![]() |
Die Aufgaben sind nicht mit Formeln und irgendwelcher allgemein aufstellbaren Logik abzuwickeln - hier muss schrittweise vorgegangen und das Teilresultat auf seine weitere Verwendbarkeit im Sinne des Algorithmus - also des Gesamtzusammenhangs überprüft werden. |
![]() |
|
![]() |
die Magischen Quadrate von Stefan Hecker |
8. Gierige Algorithmen - Greedy-Algorithmen |
![]() |
![]() |
![]() |
![]() |
|
![]() |
9. Verwandte Themen |
![]() |
![]() |
![]() |
![]() |
Das Vorangestellte hilft wirtschaften, löst jedoch kein einziges Problem (allerdings ohne Beachtung der Worst-Case-Strategien wird man auch nicht erfolgreich Software entwickeln und/oder informatische Projekte realisieren können). Deshalb nunmehr das, was wirklich Arbeiten hilft. | ||||||||||||
![]() |
|
||||||||||||
![]() |
|
||||||||||||
![]() |
![]() zur Hauptseite |
© Samuel-von-Pufendorf-Gymnasium Flöha | © Frank Rost im August 2003 |
... dieser Text wurde nach den Regeln irgendeiner Rechtschreibreform verfasst - ich hab' irgendwann einmal beschlossen, an diesem Zirkus nicht mehr teilzunehmen ;-) „Dieses Land braucht eine Steuerreform, dieses Land braucht eine Rentenreform - wir schreiben Schiffahrt mit drei „f“!“ Diddi Hallervorden, dt. Komiker und Kabarettist |
Diese Seite wurde ohne Zusatz irgendwelcher Konversationsstoffe erstellt ;-) |