Ho imparato oggi che l'analisi dell'algoritmo differisce in base al modello computazionale. È qualcosa a cui non ho mai pensato o sentito parlare.
Un esempio che mi è stato illustrato, che lo ha ulteriormente illustrato, dall'utente @chi è stato:
Ad esempio, considerare l'attività: dato restituisce . Nella RAM questo può essere risolto in poiché l'accesso all'array è a tempo costante. Usando le TM, dobbiamo scansionare l'intero input, quindi èx i O ( 1 ) O ( n )
Questo mi fa meravigliare dei linguaggi funzionali; Da quanto ho capito, "I linguaggi funzionali sono intimamente correlati al calcolo lambda" (da un commento di Yuval Filmus qui ). Quindi, se i linguaggi funzionali sono basati sul calcolo lambda, ma funzionano su macchine basate su RAM, qual è il modo corretto di eseguire analisi di complessità su algoritmi implementati usando strutture e linguaggi di dati puramente funzionali?
Non ho avuto l'opportunità di leggere Strutture di dati puramente funzionali, ma ho esaminato la pagina di Wikipedia per l'argomento e sembra che alcune delle strutture di dati sostituiscano le matrici tradizionali con:
"Le matrici possono essere sostituite da una mappa o da un elenco di accessi casuali, che ammette un'implementazione puramente funzionale, ma i tempi di accesso e aggiornamento sono logaritmici."
In tal caso, il modello computazionale sarebbe diverso, giusto?