Dato un computer veloce e lento, a quali dimensioni il computer veloce che esegue un algoritmo lento batte il computer lento che esegue un algoritmo veloce?


8

La fonte di questa domanda proviene da un corso di laurea che sto seguendo, che copre un'introduzione all'analisi degli algoritmi. Questo non è per i compiti, ma piuttosto una domanda posta nel CLRS.

Hai una macchina lenta in esecuzione su MIPS e una macchina veloce in esecuzione su MIPS. Hai anche due algoritmi della stessa classe, ma diverse complessità del tempo di esecuzione: un algoritmo "lento" viene eseguito su mentre un algoritmo "veloce" viene eseguito su .xyT(n)=c1n2T(n)=c2nlogn

Si esegue l'algoritmo lento sulla macchina veloce e l'algoritmo veloce sulla macchina lenta. Qual è il valore più grande di n tale che la macchina veloce che esegue l'algoritmo lento batte la macchina lenta che esegue l'algoritmo veloce?

La mia soluzione finora:

Trova l'insieme di tutti tali che dove è un numero naturale.n

c2nlognx>c1n2y
n

Questo è il mio lavoro finora:

{n:c2nlog2nx>c1n2y,nN}={n:n<c2yc1xlog2n,nN}

L'unica soluzione che mi viene in mente ora è plug-n-chug tutti i valori di fino a quando non trovo il primo n doven

n<c2yc1xlog(n)

non regge più.


3
Questa è davvero più una questione di matematica che una questione di informatica. Se sostituisci con allora hai un'equazione trascendentale sui reali, che non puoi davvero ridurre a una soluzione a forma chiusa per . Una volta trovata una , la risposta è arrotondata per difetto all'intero più vicino. In altre parole, "plug-n-chug" o "indovina e controlla" è altrettanto buono come si può fare nel caso generale. Questo di solito si manifesta con metodi grafici o numerici. nxxxx
Patrick87,

Risposte:


2

Considera la tua ultima disuguaglianza:

n<c2yc1xlog(n)

Ora, con è una funzione concava . Pertanto, ci sono al massimo due incroci, e solo uno di questi è interessante per te; cioè risolviClognC=c2yc1x

n=Clog(n)

e scopri quale algoritmo è più veloce in quale intervallo semplicemente calcolando i rispettivi valori di funzione in un determinato punto del rispettivo intervallo.

È vero che risolvere esplicitamente questa uguaglianza è difficile / impossibile. Per alcuni fissi , l'algebra del computer ti dà un'espressione in una funzione ben nota; l'intersezione (reale) interessante risulta essere aC

n=eW1(ln2C)

se , con la continuazione analitica della funzione di registro del prodotto . Questa funzione non ha una bella forma chiusa, ma può essere valutata numericamente per una data ; per esempio, ottieni per .Celn2WkC116,74C=17


Solo assicurandomi: hai interpretato la mia equazione come se avesse il log naturale o log-base-2? Dovrei chiarire che ogni istanza di log (n) è di base 2 e modificherà la domanda in modo appropriato.
DoggoDougal,

In CS, usiamo solitamente , mentre i matematici assumono . Pertanto, dove uso è alla base , si notano eccezioni. Questo è (probabilmente) in cui proviene da nel risultato. log=log2log=lnlog2ln2
Raffaello
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.