Definition „Algorithm“

Was ist ein Algorithmus?

| Autor / Redakteur: chrissikraus / Stephan Augsten

Ein Algorithmus bildet eine fest definiertes und endliches Vorgehen zur Problemlösung ab und lässt sich sowohl in menschlicher als auch in maschineller Sprache formulieren.
Ein Algorithmus bildet eine fest definiertes und endliches Vorgehen zur Problemlösung ab und lässt sich sowohl in menschlicher als auch in maschineller Sprache formulieren. (Bild: geralt - Pixabay.com)

Algorithmen finden sich in praktisch jedem Computerprogramm. Sie geben eine Art zielgerichtete Anleitung, nach der eine bestimmte Aufgabe Schritt für Schritt gelöst werden kann.

Ein Algorithmus ist, vereinfacht gesagt, eine fest definierte und endliche Vorgehensweise, mit der ein Problem gelöst werden kann. Er enthält Anweisungen, die Schritt für Schritt befolgt werden, um ein bestimmtes Ziel zu erreichen. Die einzelnen Schritte sind eindeutig definiert, sodass sie immer in der beabsichtigten Art und Reihenfolge ausgeführt werden.

Algorithmen gibt es in vielen Bereichen. Ein bekanntes Beispiel aus der Mathematik ist zum Beispiel der euklidische Algorithmus. Er beschreibt eine präzise Vorgehensweise, mit der man den größten gemeinsamen Teiler von zwei natürlichen Zahlen bestimmen kann. Aber auch alltägliche Dinge können Algorithmen sein: In festgelegten Einzelschritten kann man einen Zauberwürfel ausgehend von jeder beliebigen Startposition lösen.

Allgemeinheit von Algorithmen

Ein Algorithmus ist keine Handlungsvorschrift für ein spezifisches Problem, sondern soll allgemein eine bestimme Art von Problem lösen. Im euklidischen Algorithmus geht es beispielsweise nicht darum, das Problem „Was ist der größte gemeinsame Teiler von 12 und 4958?“ zu lösen.

Vielmehr soll dieser Algorithmus ganz allgemein das Problem lösen, den größten gemeinsamen Teiler zweier beliebiger natürlicher Zahlen zu finden. Der Algorithmus einer Suchmaschine ist nicht spezifisch für „Rote Gummistiefel in Größe 42“ gültig, sondern verarbeitet beliebige Eingaben auf abstrakter Ebene.

Finitheit

Ein Algorithmus muss sich mit einem endlichen Text vollständig beschreiben lassen (statische Finitheit) und darf zur Laufzeit nicht unbegrenzt Speicher mit Zwischenergebnissen belegen (dynamische Finitheit), wenn er nach endlicher Zeit ein Ergebnis liefern soll.

Determiniertheit und Determinismus

Ein Algorithmus muss zu jedem Zeitpunkt eine konkrete Anweisung für ein Zwischenergebnis liefern. Es muss also immer klar sein, was als nächstes mit einer Eingabe oder einem Zwischenergebnis zu tun ist. Wenn die Vorgehensweise eindeutig ist, also je Zwischenergebnis nur genau ein Folgeschritt ausgeführt werden kann, ist der Algorithmus deterministisch.

Es gibt auch nicht-deterministische Algorithmen. Sie beinhalten mindestens einen Schritt, in dem ein Zwischenergebnis auf mehreren gleichwertigen Pfaden weiterverarbeitet werden kann. Die Entscheidung, wie ein Zwischenergebnis behandelt wird, steht an dieser Stelle nicht fest, sondern wird zum Beispiel durch Zufall bestimmt.

Deterministische Algorithmen haben daher immer determinierte Ergebnisse, sprich eine bestimmte Eingabe endet immer im gleichen Ergebnis. Nicht-deterministische Algorithmen hingegen können bei unveränderter Eingabe unterschiedliche Ergebnisse liefern oder auf unterschiedlichen Wegen zu determinierten Ergebnissen kommen.

Terminiertheit

Ein Algorithmus soll Eingabewerte annehmen und ein dazu passendes Ergebnis liefern. Dazu gehört auch, dass die Verarbeitung bei ungültigen Zwischenergebnissen oder Eingaben abbricht und nicht in eine Endlosschleife einsteigt: Ein Algorithmus ist normalerweise terminierend, muss also nach endlicher Zeit ein Ergebnis liefern. Nicht terminierende Algorithmen existieren ebenfalls. Hier geht es meist um Vorgänge, die ganz explizit niemals von selbst abbrechen sollen, weil sie zum Beispiel auf unbestimmte Zeit eine Maschine steuern.

Algorithmen in der Informatik

Es gibt unzählige etablierte Algorithmen, die in der Softwareentwicklung für verschiedenste Zwecke genutzt werden:

  • Komplexe Berechnungen, z. B. Zassenhaus-Algorithmus
  • Sortierverfahren, z. B. Bubblesort, Quicksort
  • Suchverfahren, z. B. Lineare Suche, A*-Suche
  • Verschlüsselungsverfahren, z. B. RSA, Blowfish
  • Kompression, z. B. Huffman-Kodierung

Algorithmen in Hardware

Ein Algorithmus kann in elektronischen Geräten auch per Hardware umgesetzt werden. Eine anwendungsspezifische integrierte Schaltung (ASIC) ist zum Beispiel ein Schaltkreis, der einen spezifischen Algorithmus abbilden kann. Wenn ein Gerät eine bestimmte Aufgabe übernimmt, die algorithmisch gelöst werden soll, ist ein solch spezialisierter Chip eine performante Alternative zur Verarbeitung per Software.

Bei einem ASIC ist der Algorithmus allerdings Hardware-seitig verankert bzw. abgebildet. Es gibt auch Field Programmable Gate Arrays (FPGA), mit denen man flexibel eigene Schaltungen konfigurieren und somit ganz nach Bedarf verschiedenste Algorithmen abbilden kann. Diese kommen aktuell vermehrt in Embedded Systems zum Einsatz.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Grundbegriffe und einfache Beispiele

Machine Learning mit Python, Teil 3

Grundbegriffe und einfache Beispiele

Machine Learning und KI helfen in fast allen Branchen, die Effizienz zu steigern. Sukzessive zeigen wir, wie man diesem faszinierenden Thema in Python begegnet. Ob Transport und Logistik, Industrie- und Automobilbranche, Tourismus oder Verlagsgeschäft: Beide Technologien lassen sich in völlig unterschiedlichen Anwendungsfeldern nutzen. lesen

Einführung in Amazon SageMaker

Machine Learning mit Python, Teil 2

Einführung in Amazon SageMaker

Amazon SageMaker ist ein von AWS vollständig verwalteter Service, der den gesamten Workflow von Machine Learning abdeckt. Anhand der SageMaker-Demo von AWS illustrieren wir die wichtigsten Zusammenhänge, Grundlagen und Funktionsprinzipien. lesen

Einführung in Amazon SageMaker und Jupyter

Machine Learning mit Python, Teil 1

Einführung in Amazon SageMaker und Jupyter

Amazon SageMaker ist ein von AWS vollständig verwalteter Service, der den gesamten Workflow von Machine Learning abdeckt. In dieser Beitragsreihe befassen wir uns mit der grundlegenden ML-Thematik und dem Erstellen von Jupyter-Notebooks unter SageMaker. lesen

Wie intelligente Software-Bots arbeiten

RPA für schnelle Entscheidungen in Hightech-Lieferketten

Wie intelligente Software-Bots arbeiten

Mit Robotic Process Automation, kurz RPA, lassen sich wiederkehrende Geschäftsprozesse automatisieren und beschleunigen. Dies erlaubt es, schnellere und bessere Entscheidungen im und für das Unternehmen zu treffen. lesen

Linux-Passwörter und Python

Hacking mit Python, Teil 3

Linux-Passwörter und Python

Wie man mit Python und einem erlangten MD5-Hash das zugehörige Passwort entschlüsselt, haben wir uns in der Theorie schon angesehen. In diesem Beitrag demonstrieren wir zunächst, wie Linux-Distributionen Passwörter in der Praxis speichern und warum MD5 nicht sicher ist. lesen

Die 6 wichtigsten Funktionen einer Low-Code-Plattform

[Gesponsert]

Forrester-Report hilft

Die 6 wichtigsten Funktionen einer Low-Code-Plattform

Mit der richtigen Low-Code-Plattform kann die Software-Entwicklung deutlich beschleunigt und vereinfacht werden. Allerdings sollten Low-Code-Plattformen bestimmte Eigenschaften haben, um effektiv eingesetzt werden zu können. Ein Forrester-Report hilft bei der Auswahl. lesen

Wörterbuch-Angriff auf Passwort-Hash

Hacking mit Python, Teil 2

Wörterbuch-Angriff auf Passwort-Hash

Dieser Workshop demonstriert, wie man in Python ein Passwort herausfinden kann. Konkret geht es darum, einen auf irgendeine Weise erlangten Passwort-Hash durch einen Vergleich mit dem MD5-Hash eines gegeben Wörterbucheintrages auf Übereinstimmung zu prüfen. lesen

Java 12 – die neuen Funktionen im Überblick

Bessere Garbage Collectors, Mikro-Benchmarks und mehr

Java 12 – die neuen Funktionen im Überblick

Mit Java 12 stellt Oracle auch neue Funktionen zur Verfügung. Mit Switch Expressions und anderen Neuerungen werden Erweiterungen integriert, welche auch die Syntax der Sprache ändern. lesen

PaaS mit Container-Backups und Multi-Region-Support

Neue Version Jelastic Bifrost 5.6 erschienen

PaaS mit Container-Backups und Multi-Region-Support

Die jüngste Version der Platform-as-a-Service-Lösung Jelastic Bifrost 5.6 erlaubt unter anderem automatische Backups und die Wiederherstellung von Containern während des Redeploys. Zudem soll es möglich sein, verpackte Anwendungen und Dienste über mehrere Regionen hinweg bereitzustellen lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45675222 / Definitionen)