Algorithmus - Kekziie/Informatik-II-SS-2017 GitHub Wiki
Algorithmus
Begriffserklärung
- Vorschrift oder Anleitung zur Lösung einer Aufgabenstellung, die so präzise formuliert ist, dass man sie im Prinzip "mechanisch" ausführen kann
- als Nachricht in einer Programmiersprache formuliert, die vom Ausführenden (Mensch, Rechner) interpretiert werden muss
Randbedingungen:
- verschieden Formalismen/ Darstellungsformen sind möglich
- Voraussetzungen: gemeinsames Sprachverständnis
- präzise Formulierung, d.h. "mechanische" Möglichkeit des Ausführenden zu kennen und in Formulierung zu nutzen
Ziel
- Realisierung
- Daten analysieren -> Informationen extrahieren
- System kontrollieren -> Verbesserung (z.B. Benutzerfreundlichkeit, Energieeffizienz, ...)
- Frage klären oder Problem lösen
Beispiele im Alltag: Gebrauchsanweisungen, Wegbeschreibungen, Rezepte, ...
Charakteristika
Ein Algorithmus basiert auf seiner Reproduzierbarkeit.
typische Aspekte:
- Eindeutigkeit
- elementare Eigenschaften eines Algorithmus
- schrittweise Verfeinerung
- bedingte schritte im Algorithmus
- wiederholte Schritte
Beispiele: Anleitungen, Münzfernsprecher
Alltagsalgorithmus Vs. Code
Alltagsalgorithmus
- Voraussetzungen: Material, Werkzeuge, ...
- Instruktionsabfolge: intuitive Instruktion, erwartet "intelligenten" Menschen für Verständnis und Ausführung, "Prozessor" -> Mensch
Code-orientierter Algorithmus
- Voraussetzung: Daten, Werte, Menge von Instruktion, ...
- Instruktionsabfolge: eindeutige, wohldefinierte Abfolge, exakte/eindeutige Operation durchführbar von "dummen" Maschinen, Prozessor -> Maschine, die selbst nach exakt definierten Regeln arbeitet
Elementare Eigenschaften
-
Ausführbarkeit und Reproduzierbarkeit
-
Prozessor und Prozess
-
Ausführung erfolgt schrittweise
-
Folge der Ausführung -> Prozess
-
Ausführender des Algorithmus -> Prozessor
-
-
Teilalgorithmen und elementare Verarbeitungsschritte/ Operationen:
-
jeder Schritt besteht selbst wieder aus ein/ mehreren Teilalgorithmen
-
elementare Operationen: nicht mehr verfeinerte Teilalgorithmen
-
-
Ausführender (Prozessor) muss:
-
Sprache erkennen
-
elementare Operationen/ Aktionen verstehen
-
in der Lage sein, diese auszuführen
-
-
Genauigkeit
- alle Schritte und deren Ausführungsreihenfolge müssen eindeutig feststehen
-
wohl gewähltes Abstraktionsniveau
- ein bestimmter Detaillierungsgrad
-
Endlichkeit und Beschreibung
- in einem endlichen Text formuliert/ aufgeschrieben
-
Termination
- nach endlich vielen Schritten zum Ende kommen
-
Ausführung von Teilen eines Algorithmus
-
Anwendung einiger Teile nacheinander (sequentiell, seriell)
-
andere gleichzeitig (parallel)
-
wiederum andere Teile in beliebiger Reihenfolge (kollateral)
-
-
Strukturelemente
-
Befehl/ Operation
-
Befehlssequenz
-
Wiederholung von Befehlen oder Befehlssequenzen
-
bedingte Auswahl
-
Mechanismen zur Zusammensetzung der Strukturelemente
-
Daten
- Eingabeobjekte, Ausgabeobjekte und lokale Daten
- Algorithmus beschreibt Operationen auf benannte Daten
- Objekte sind elementar (im Algorithmus als unteilbare Einheit aufgefasst) oder zusammengesetzt (einfache Daten oder strukturierte Daten)
Beschreibung
- besteht aus Beschreibung einiger benannter Teilalgorithmen
- Teilalgorithmen definieren -> "aufrufen" durch Nennung ihrer Namen
- Teilalgorithmen können Parameter besitzen -> Ergebnis hängt vom Aufruf erfolgten Angaben ab
- Wiederholungsanweisungen, Teile können wiederholt werden
Korrektheit
-
zwischendurch Überprüfungen
-
solche Teile meist
-
nicht operativ
-
enthalten keine Handlungsanweisungen
-
dienen lediglich zur Überprüfung des korrekten Ablaufs des Prozesses
-
-
führen manchmal zu Korrekturen im Ablauf
-
Detektion eines Fehlers
-
Kontrolle der Qualität
-
Definition
Ein Algorithmus ist eine präzise (d.h. festgelegten Sprachen abgefasste) endliche Beschreibung eines allgemeinen ( vom Ausführenden interpretierbaren) Verfahrens zur Lösung einer Aufgabe/ eines Problems unter Verwendung ausführbarer, elementarer Verarbeitungsschritte mit einer endlichen Gesamtausführungsdauer.