Qualcuno potrebbe spiegare la differenza tra algoritmi tempo polinomiale, tempo non polinomiale e tempo esponenziale?
Ad esempio, se un algoritmo impiega O (n ^ 2) tempo, in quale categoria si trova?
Qualcuno potrebbe spiegare la differenza tra algoritmi tempo polinomiale, tempo non polinomiale e tempo esponenziale?
Ad esempio, se un algoritmo impiega O (n ^ 2) tempo, in quale categoria si trova?
Risposte:
Controlla questo .
L'esponenziale è peggiore del polinomio.
O (n ^ 2) rientra nella categoria quadratica, che è un tipo di polinomio (il caso speciale dell'esponente è uguale a 2) e migliore dell'esponenziale.
L'esponenziale è molto peggio del polinomio. Guarda come crescono le funzioni
n = 10 | 100 | 1000
n^2 = 100 | 10000 | 1000000
k^n = k^10 | k^100 | k^1000
k ^ 1000 è eccezionalmente enorme a meno che k non sia inferiore a qualcosa come 1.1. Ad esempio, qualcosa come ogni particella nell'universo dovrebbe eseguire 100 miliardi di miliardi di operazioni al secondo per trilioni di miliardi di miliardi di anni per ottenere ciò.
Non l'ho calcolato, ma È COSÌ GRANDE.
Di seguito sono riportate alcune funzioni Big-O comuni durante l'analisi degli algoritmi.
(n = dimensione dell'input, c = qualche costante)
Ecco il grafico del modello che rappresenta la complessità Big-O di alcune funzioni
Saluti :-)
crediti grafici http://bigocheatsheet.com/
O (n ^ 2) è il tempo polinomiale. Il polinomio è f (n) = n ^ 2. D'altra parte, O (2 ^ n) è il tempo esponenziale, dove la funzione esponenziale implicita è f (n) = 2 ^ n. La differenza è se la funzione di n colloca n nella base di un esponenziale o nell'esponente stesso.
Qualsiasi funzione di crescita esponenziale crescerà significativamente più velocemente (a lungo termine) di qualsiasi funzione polinomiale, quindi la distinzione è rilevante per l'efficienza di un algoritmo, specialmente per valori elevati di n.
Tempo polinomiale.
Un polinomio è una somma di termini che sembrano Constant * x^k
esponenziali significa qualcosa di simileConstant * k^x
(in entrambi i casi, k è una costante e x è una variabile).
Il tempo di esecuzione degli algoritmi esponenziali cresce molto più velocemente di quello degli algoritmi polinomiali.
Esponenziale (Hai una funzione esponenziale se MINIMO UN ESPONENTE dipende da un parametro):
Polinomio (Hai una funzione polinomiale se NESSUN ESPONENTE dipende da alcuni parametri della funzione):
o (n sequenza) è la complessità temporale polinimale mentre o (2 ^ n) è la complessità temporale esponenziale se p = np nel caso migliore, nel caso peggiore p = np non è uguale perché quando la dimensione dell'input n cresce così a lungo o il sizer dell'input aumenta così più a lungo va nel caso peggiore e viene gestito in modo che il tasso di crescita della complessità aumenti e dipenda dalla dimensione n dell'input quando l'input è piccolo è polinimale quando l'input è grande e grande quindi p = np non è uguale significa che il tasso di crescita dipende dalla dimensione dell'input "N ". anche l'ottimizzazione, la sat, la clique e l'indipend set si incontravano in modo esponenziale a polinimale.