Ich habe heute gelernt, dass sich die Algorithmusanalyse basierend auf dem Rechenmodell unterscheidet. Daran habe ich noch nie gedacht oder gehört.
Ein Beispiel, das mir von User @chi weiter veranschaulicht wurde, war:
Betrachten Sie zB die Aufgabe: gegeben return . Im RAM kann dies in gelöst werden, da der Array-Zugriff zeitlich konstant ist. Mit TMs müssen wir die gesamte Eingabe scannen, also ist esx i O ( 1 ) O ( n )
Das lässt mich über funktionale Sprachen nachdenken; Nach meinem Verständnis sind "funktionale Sprachen eng mit dem Lambda-Kalkül verbunden" (aus einem Kommentar von Yuval Filmus hier ). Wenn funktionale Sprachen auf Lambda-Berechnungen basieren, aber auf RAM-basierten Maschinen ausgeführt werden, wie kann dann die Komplexitätsanalyse für Algorithmen durchgeführt werden, die mit rein funktionalen Datenstrukturen und Sprachen implementiert wurden?
Ich hatte keine Gelegenheit, rein funktionale Datenstrukturen zu lesen, aber ich habe mir die Wikipedia-Seite für das Thema angesehen, und es scheint, dass einige der Datenstrukturen herkömmliche Arrays ersetzen durch:
"Arrays können durch Karten- oder Direktzugriffslisten ersetzt werden, die eine rein funktionale Implementierung zulassen, aber die Zugriffs- und Aktualisierungszeit ist logarithmisch."
In diesem Fall wäre das Rechenmodell anders, richtig?