Cosa conta come operazione?


8

Mi scuso per la domanda da principiante, ma sono un po 'confuso su ciò che conta esattamente come una "operazione semplice" quando si calcola la complessità temporale di un algoritmo. In particolare, perché consideriamo tutte le operazioni uguali?

Sicuramente, la divisione di due numeri molto grandi richiede più tempo rispetto all'aggiunta di uno a un numero (come in ogni iterazione di un ciclo for). La moltiplicazione, ad esempio, può consistere in un numero qualsiasi di piccole aggiunte. Quindi, invece di aggiungerli semplicemente, non dovremmo applicare un tipo di peso a ciascuna operazione a seconda del tipo di operazione (addizione, moltiplicazione, ecc.) E delle dimensioni dei numeri coinvolti?

Il mio problema è che mi viene chiesto di dimostrare che la complessità del mio algoritmo èO(f) (per alcune funzioni f) e non sono sicuro di come farlo in modo matematicamente rigoroso a causa della vaghezza intrinseca nella definizione di "semplice operazione". Quindi come potrei procedere?



@DW Nessuno di questi è un duplicato? (Direi tutti quanti).
Raffaello

Risposte:


1

Le operazioni semplici sono tutto ciò che richiede tempo costante per raggiungere. La confusione è che la divisione non sembra richiedere tempo costante, e in effetti, in generale, non lo fa. MA!

La divisione e l'addizione richiedono entrambe un tempo costante se, per esempio, si sommano due numeri interi a 32 bit, che di solito è come va. Tuttavia, se stai aggiungendo numeri arbitrariamente grandi, non saranno realmente a tempo costante, anche se a volte penso che la gente lo tratterà come se fosse perché si presume che i numeri non diventino molto grandi.


1
Benvenuti nel sito! Questa è una spiegazione molto semplificata e non sono sicuro che risolva molto bene il problema. In particolare, ci sono più modelli di calcolo. Con le macchine Turing, ad esempio, non è nemmeno possibile indicizzare un array in tempo costante; con i modelli di parole, puoi fare l'aritmeticaO(logn)-bit numeri in tempo costante, dove nè la lunghezza dell'input. È necessario selezionare un modello appropriato per l'oggetto che è stato analizzato e le situazioni in cui verrà utilizzata l'analisi.
David Richerby,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.