Eseguendo costantemente un algoritmo su una macchina lenta e veloce

-1

È possibile creare un algoritmo che verrà eseguito alla stessa velocità e velocità su computer più veloci e lenti. Quello che voglio dire è che ho un desktop di 2000 anni in grado di eseguire un determinato algoritmo computazionale. cento anni dopo, i computer quantistici sono arrivati a pieno regime e voglio eseguire lo stesso algoritmo. il computer Quantum non dovrebbe mai essere in grado di raggiungere il computer lento. I diversi modi in cui posso pensare:

  1. Bloccare l'esecuzione di un algoritmo in un momento specifico, ma il problema è che qualcuno potrebbe modificare i tick in un secondo, rendendo il tempo di esecuzione molto piccolo, quindi vincendo l'esecuzione.
  2. Crea una funzione che utilizza solo una quantità fissa in memoria. per questo non so quanto sia pratico.

Che cosa potrei fare per ottenere la coerenza desiderata?

    
posta McKabue 06.08.2018 - 13:12
fonte

1 risposta

6

No

Non è possibile.

L'unica soluzione "solida" per ottenere lo stesso tempo di esecuzione sarebbe l'approccio "letterale": utilizzare la libreria data / ora della lingua per attendere un tempo prefissato prima di uscire. Questo perché il linguaggio stesso garantisce la sua correttezza . Se Java sarà ancora utilizzato nell'anno 3000 su un computer quantistico, i produttori Java avranno i bit importanti portati e regolati in modo che un secondo sia effettivamente un secondo . Tuttavia, se ho capito bene, il sistema è così compromesso che anche un secondo non è più un secondo.

L'altra direzione in cui miri ad andare lì - abusare di stranezze e restrizioni dell'hardware come un timer, un po 'come The Story of Mel - è per la sua stessa definizione legata a un certo insieme di hardware. L'hardware che si sta velocizzando e / o cambiando non è solo un potenziale pericolo da tenere sotto controllo . Al contrario, possiamo dire con sicurezza che succederà sicuramente .

Istruzioni contro esecuzioni

Ha senso se ci pensi in questo modo: un programma è solo una serie di passaggi da eseguire per un computer. I passaggi non si preoccupano di come (veloce) vengono eseguiti. Questo dipende completamente da chi prende i passaggi e li esegue.

Poiché la temporizzazione è una cosa necessaria spesso, c'è è un modo (nella maggior parte dei linguaggi di programmazione) per dire "aspetta 2 minuti" - ma se le istruzioni non vengono seguite ... A quel punto tu in realtà ha un compilatore / computer / VM difettoso. A quel punto, i problemi di temporizzazione sono solo uno dei tuoi problemi minori.

    
risposta data 06.08.2018 - 16:18
fonte

Leggi altre domande sui tag