Video: Blick in die Labore - Künstliche Intelligenz in der Medienanalyse, Medizin, Robotik und Produktion 2024
Je mehr Operationen ein Algorithmus erfordert, desto komplexer ist er. Die Komplexität ist ein Maß für die Effizienz des Algorithmus im Hinblick auf die Zeitverwendung, da jede Operation einige Zeit in Anspruch nimmt. Angesichts des gleichen Problems sind komplexe Algorithmen im Allgemeinen weniger vorteilhaft als einfache Algorithmen, da komplexe Algorithmen mehr Zeit benötigen.
Denken Sie an jene Zeiten, in denen die Geschwindigkeit der Ausführung den Unterschied ausmacht, wie zum Beispiel im medizinischen oder Finanzsektor oder wenn Sie mit einem Autopiloten in einem Flugzeug oder einer Weltraumrakete fliegen. Die Komplexität des Messalgorithmus ist eine anspruchsvolle Aufgabe, wenn auch eine notwendige, wenn Sie die richtige Lösung einsetzen möchten. Die erste Messtechnik verwendet abstrakte Maschinen wie die Random Access Machine (RAM).
RAM steht auch für Random-Access Memory, das ist der interne Speicher, den Ihr Computer beim Ausführen von Programmen verwendet. Obwohl es das gleiche Akronym verwendet, ist eine Zufallszugriffsmaschine etwas völlig anderes.
Abstrakte Maschinen sind keine realen Computer, sondern theoretische Computer, die sich in ihrer Funktionsweise vorstellen. Sie verwenden abstrakte Maschinen, um zu überlegen, wie gut ein Algorithmus auf einem Computer funktionieren würde, ohne ihn auf der realen Maschine zu testen, und dennoch an die Art der Hardware gebunden, die Sie verwenden würden. Ein RAM-Computer führt grundlegende arithmetische Operationen durch und interagiert mit Informationen im Speicher, das ist alles. Jedes Mal, wenn ein RAM-Computer etwas tut, benötigt es einen Zeitschritt (eine Zeiteinheit). Wenn Sie einen Algorithmus in einer RAM-Simulation auswerten, zählen Sie Zeitschritte wie folgt:
- Zählen Sie jede einfache Operation (arithmetische Einsen) als Zeitschritt.
- Bringen Sie komplexe Operationen in einfache arithmetische Operationen und zählen Sie Zeitschritte, wie in Schritt 1 definiert.
- Zählen Sie jeden Datenzugriff aus dem Speicher als einen Zeitschritt.
Um diese Abrechnung durchzuführen, schreiben Sie eine Pseudocode-Version Ihres Algorithmus und führen diese Schritte mit Papier und Bleistift aus. Am Ende ist es ein einfacher Ansatz, der auf einer grundlegenden Idee basiert, wie Computer funktionieren. Dies ist eine nützliche Näherung, die Sie verwenden können, um Lösungen unabhängig von der Leistung und Geschwindigkeit Ihrer Hardware oder der von Ihnen verwendeten Programmiersprache zu vergleichen.
Die Verwendung einer Simulation unterscheidet sich von der Ausführung des Algorithmus auf einem Computer, da Sie eine standardmäßige und vordefinierte Eingabe verwenden. Bei echten Computermessungen müssen Sie den Code ausführen und die für die Ausführung erforderliche Zeit überprüfen. Das Ausführen von Code auf einem Computer ist eigentlich ein Benchmark, eine andere Form der Effizienzmessung, bei der Sie auch die Anwendungsumgebung berücksichtigen (z. B. die Art der verwendeten Hardware und die Implementierung der Software).Ein Benchmark ist nützlich, aber es fehlt eine Verallgemeinerung. Bedenken Sie zum Beispiel, wie neuere Hardware einen Algorithmus schnell ausführen kann, der auf Ihrem vorherigen Computer ewig gedauert hat.