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

Open-Source-IDEs für 3D-Spiele

Panda3D, PlayCanvas und Cafu Engine im Überblick

Open-Source-IDEs für 3D-Spiele

Beim Gaming ist 3D-Grafik längst Normalität. Titel wie Doom haben den Weg schon vor langer Zeit geebnet – und als freie Gaming Engine ist Doom weiterhin Wegbereiter. Diese und weitere vielversprechenden IDEs für 3D-Games stellen wir heute vor. lesen

Böse Überraschungen mit Testdaten vermeiden

Tokenisierten Datenbanken

Böse Überraschungen mit Testdaten vermeiden

Wer Anwendungen entwickelt oder mit Datenbanken arbeitet, muss seine Ergebnisse ausreichend testen. Dazu werden valide Testdaten benötigt. Da liegt es nahe, die bereits bestehenden Produktivdaten zu kopieren und für den Test einzusetzen. Das klingt simpel und auch gar nicht unlauter, kann jedoch zu einem rechtlichen Problem mit beträchtlichen finanziellen Schäden werden. lesen

Softwareentwicklung für KI und ML funktioniert anders

Abschied von alten Entwicklungsparadigmen

Softwareentwicklung für KI und ML funktioniert anders

Daten sind Quellcode! Der Umgang mit ihnen erfordert neue Arten zu denken – und das ist zentral für die Entwicklung von KI-Applikationen. Das ist zumindest die These von Alexander Waldmann, Operative & Technology Director von appliedAI. lesen

Makrotrends in der Technologiebranche 2020

Randthemen aus dem ThoughtWorks Technology Radar

Makrotrends in der Technologiebranche 2020

Bei der Erstellung des Technology Radars führen wir auch immer wieder interessante Gespräche über zahlreiche Themen, die wir nicht aufnehmen können. Also, was tut sich gerade in der Welt der Software? lesen

Security-Testing-Methoden im Vergleich

Die Vorteile automatisierter Software-Tests

Security-Testing-Methoden im Vergleich

Manuelle Security- und Penetration-Tests sind den Unmengen an Code, die täglich produziert werden, längst nicht mehr gewachsen. Automatisiertes Software-Testing kann Abhilfe schaffen, dieser Beitrag nennt Vor- und Nachteile der verschiedenen Methoden und Ansätze. lesen

Bias-Fehler und Testing in der KI-Entwicklung

Qualitätssicherung bei KI-Algorithmen

Bias-Fehler und Testing in der KI-Entwicklung

In der Industrie gehören auf KI-Algorithmen basierende Systeme inzwischen zum Alltag, zum Beispiel bei der Qualitätssicherung in der Produktion oder beim Betrieb von Anlagen. Aber wie ist es um die Qualität der Algorithmen selbst bestellt? lesen

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

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)