Algorithmus - Kekziie/Informatik-II-SS-2017 GitHub Wiki

Algorithmus

Begriffserklärung

  1. Vorschrift oder Anleitung zur Lösung einer Aufgabenstellung, die so präzise formuliert ist, dass man sie im Prinzip "mechanisch" ausführen kann
  2. 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

  1. Realisierung
  • Daten analysieren -> Informationen extrahieren
  • System kontrollieren -> Verbesserung (z.B. Benutzerfreundlichkeit, Energieeffizienz, ...)
  1. 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.