AlgorithmusEin Algorithmus bezeichnet eine genau definierte Rechen-, Handlungs- und/oder Verarbeitungsvorschrift zur Lösung eines Problems/Problemtyps. Von der Automatisierung einzelner Rechenoperationen bis hin zu komplexer Daten- und Wissensverarbeitung bei der Entwicklung von Anwendungssoftware benötigt man Algorithmen, die direkt in Computerprogramme überführt werden. Entstehung des BegriffsDer Begriff Algorithmus stammt vom Namen des Mathematikers, Astronomen und Geographen Mohammad ibn Musa Al-Khwarismi, der in Bayt al-Hikma (Haus der Weisheit) in Bagdad Anfang des 9.Jahrhunderts forschte. Zwei seiner bedeutendsten Lehrbücher waren „Über das Rechnen mit indischen Ziffern“ und „Hisab al-Jabr wa-l-Muqabala“. Im letzteren Buch führte er die klassische Algebra (Al-Jabr), die Wissenschaft vom Lösen von Gleichungen, systematisch ein. Die Lateinischen Übersetzungen dieser Werke pflegte man mit „Dixit Algorismi…“ („Also sprach Algorismi…“) zu beginnen. Was danach folgte, waren klar definierte Schritte von Lösungsvorschriften, wie man im dezimalen Positionszahlensystem Rechenoperationen durchführen kann oder eine quadratische Gleichung in eine seiner sechs Normalformen/Problemtypen (mit nur positiven Parametern) durch al-Jabr (Vervollständigung) und al-Muqabala (Reduktion) transformieren kann und dann die (Wurzel-)Lösung eines Problemtyps schrittweise ermitteln kann (mit geometrisch anschaulicher Korrektheitsbegründung). Ein Algorithmus bezeichnete fortan diese Art der systematischen Angabe korrekter Schritte einer Rechenvorschrift zur Lösung einer Aufgabenstellung. EigenschaftenAlgorithmen beschreiben Problemlösungsverfahren, die für die Realisierung in Form von Computerprogrammen geeignet sind, und sind daher der „Stoff“ der Informatik: sie sind zentraler Untersuchungsgegenstand in vielen, wenn nicht den meisten Bereichen dieses Fachgebiets [Sedgewick, 2002]. Algorithmen wurden mithilfe berechenbarer Funktionen auf Turing-Maschinen theoretisch erfasst. Für Wirtschaftsinformatiker sind ihre Eigenschaften sowie die Kunst, wie sie zur Lösung betriebswirtschaftlicher Probleme entwickelt werden, von größter Bedeutung. Algorithmen müssen in einem endlichen Text beschrieben werden (Finitheit), in endlich vielen und in endlicher Zeit ausführbaren Schritten ablaufen (Ausführbarkeit/Terminierung) sowie bei gleichen Voraussetzungen das gleiche Resultat liefern (Determiniertheit). Darüberhinaus muss der Ablauf eines Algorithmus zu jedem Zeitpunkt eindeutig definiert sein (Determinismus) und nur endlichen Speicherplatz gebrauchen (dynamische Finitheit). Effiziente Algorithmen sind solche, die für die Lösung gleicher Probleme weniger Laufzeit und Speicherplatz benötigen. EntwicklungsgrundsätzeGrundsätze für die Entwicklung effizienter Algorithmen werden oft aus Sicht einer Realisierung mittels imperativer Programmiersprachen mit den Grundbestandteilen Variablenzuweisung, Daten- und Rechenoperationen sowie Verzweigungsbedingungen und Schleifenanweisungen besprochen [Sedgewick, 2002], dabei speicherplatzsparsame und zugriffseffiziente Datenstrukturen [Knuth, 1997] nutzend. Im Folgenden seien einige grundsätzliche Algorithmen-Typen genannt:
LiteraturKnuth, D.E.: The Art of Computer Programming. 1.Volume: Fundamental Algorithms, 2.Volume: Sorting and Searching. 3./2.Edition. Addison-Wesley. 1997/98 Sedgewick, R.: Algorithms (2. Edition). Pearson-Studium. Addison-Wesley. 2002. Autor![]() Prof. Dr. Taïeb Mellouli, Martin-Luther-Universität Halle-Wittenberg, Juristische und Wirtschaftswissenschaftliche Fakultät, Lehrstuhl für Wirtschaftsinformatik und Operations Research, Universitätsring 3, 06108 Halle (Saale) |