Ein Online-Algorithmus ist ein Lösungsverfahren für Probleme, bei denen zu Beginn des Berechnungsvorgangs nicht alle Eingabedaten verfügbar sind.
Bei vielen algorithmisch lösbaren Problemen in der Informatik sind die vollständigen Eingabedaten vor der Ausführung des jeweiligen Algorithmus bekannt. Anhand dieser Daten wird eine Lösung berechnet und ausgegeben. Solche Probleme werden Offline-Probleme genannt.
Bei Online-Problemen hingegen werden die Eingabedaten zur Zeit der Ausführung des Algorithmus laufend ergänzt. Anders formuliert: Bestimmte Informationen stehen erst dann zur Verfügung, wenn bestimmte andere Daten bereits vorliegen – und können auch erst dann zur Lösung des Problems berücksichtigt werden. Der Algorithmus kann keine Annahmen über die vollständigen Daten treffen.
Wesentlich ist, dass der Algorithmus schon Entscheidungen treffen muss, bevor die Daten vollständig vorliegen. Und zwar üblicherweise mehrfach. Diese Entscheidungen können sich „im Nachhinein“ als unglücklich oder schlecht herausstellen, aber entweder nicht mehr oder nur mit zusätzlichen Kosten zurückgenommen werden.
Ein Beispiel für ein Online-Problem ist die Suche nach einem kürzesten Weg in einem Graphen, wobei der Graph anfangs unbekannt ist und Informationen über die Knoten und Kanten erst beim „Betreten“ eines Knotens erhalten werden. Eine optimale Lösung kann nur mit vollständiger Information, welche das Besuchen aller Knoten voraussetzt, erreicht werden.
Sehr ähnlich ist auch die Bewegung eines autonomen Roboters in einer unerkundeten Umgebung oder die Navigation eines Spiders im World Wide Web.
In manchen Fällen funktionieren Anwendungen des maschinellen Lernens ebenfalls online; das System lernt während seiner „Arbeit“.
Vom theoretischen Gesichtspunkt untersucht man die sogenannte Kompetitivität von Online-Algorithmen. Dabei handelt es sich im Wesentlichen um das Verhältnis von Kosten einer Lösung des Onlinealgorithmus zu denen einer optimalen Lösung (die man mit vorheriger Kenntnis der vollständigen Daten errechnen könnte) im schlechtesten Fall (über alle möglichen Sequenzen von schrittweise eintreffenden Informationen). Je nach Problem sind hier unterschiedliche Güten erreichbar. Diese Notation ist eng verwandt mit der Approximationsgüte von Approximationsalgorithmen.
Siehe auch
Literatur
- Allan Borodin, Ran El-Yaniv: Online computation and competitive analysis. Cambridge University Press, Cambridge 2005, ISBN 0-521-61946-7.