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

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

„Quanten-Computing ist wie eine Art Informatik-Kurs“

Interview mit Mike Morris, CEO von Topcoder

„Quanten-Computing ist wie eine Art Informatik-Kurs“

Wie sieht die Zukunft der Software-Entwicklung im Unternehmen aus? Befinden wir uns bereits mitten in der Quantenrevolution? Und ist Freelancing eher Berufung denn Beruf? Mike Morris, CEO der Crowdsourcing-Plattform Topcoder, sprach hierzu im Interview mit Dev-Insider. lesen

C programmieren: Wie arbeitet ein C-Compiler?

C programmieren: Wie arbeitet ein C-Compiler?

Wie entsteht aus geschriebenem C-Code ein Programm, dass das Zielsystem auch versteht und Umsetzen kann? In diesem Beitrag sehen wir uns Aufbau und Arbeitsweise des C-Compilers genauer an. lesen

Daten als Geschichte der Moderne

Interview mit Professor Daniel Rosenberg

Daten als Geschichte der Moderne

Schon seit Jahrtausenden erhebt, speichert und analysiert die Menschheit mehr oder weniger wertvolle Informationen. Über die Geschichte der Daten äußert sich Daniel Rosenberg, Professor für Geschichte an der University of Oregon, im Interview. lesen

Audit-Trails mit IOTA, der Blockchain-Alternative

Der Garant im IoT-Business

Audit-Trails mit IOTA, der Blockchain-Alternative

Im Reigen der spannendsten IT-Neuerungen sticht die Distributed-Ledger-Technolgoie „IOTA“ deutlich heraus. Ihr trauen Experten das größte Veränderungspotential als extrem leistungsfähige und fälschungssichere Dokumentation von Transaktionen für das Internet der Dinge (IoT) zu. Was steckt dahinter? lesen

Wie man Entwickler richtig rekrutiert

Massiver Fachkräftemangel in der IT-Branche

Wie man Entwickler richtig rekrutiert

55.000 IT-Stellen sind in Deutschland derzeit unbesetzt. Das Recruiting von Fachkräften stellt viele Unternehmen vor große Herausforderungen. Benjamin Ruschin von WeAreDevelopers erklärt, wie es richtig funktioniert. lesen

Rekursionen und reguläre Ausdrücke

Python Tutorial, Teil 7

Rekursionen und reguläre Ausdrücke

Komplexere Datenstrukturen, Operationen und Programmiertechniken bilden den nächsten Schritt in der Python-Programmierung. Rekursive Funktionen und reguläre Ausdrücke bilden in diesem Teil unseres Python-Tutorials den Schwerpunkt. lesen

Google zieht Bilanz zu Play Protect

2 Milliarden Devices per Machine Learning geschützt

Google zieht Bilanz zu Play Protect

Im Android Developers Blog nennt Google aktuelle Zahlen zu Play Protect: Zwei Milliarden Geräte profitieren demnach von den Machine-Learning-gestützten Sicherheitsfunktionen. Der Software Engineer Sai Deep Tetali wagt eine Bestandsaufnahme. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45675222 / Definitionen)