Chapitre 1 Introduction
À propos de l'introduction
(Algorithme + structure de données) = programme
Turing-le père de l'informatique et de l'intelligence artificielle
Turing Award-le prix Nobel dans le monde informatique
Turing Test
Propriétés liées à l'algorithme: entrée, sortie, certitude, finitude
Algorithme: une méthode ou un processus pour résoudre un problème
Exactitude de l'algorithme
Un algorithme est correct s'il s'arrête finalement pour chaque entrée et produit la sortie correcte.
Le débogage du programme ne peut que prouver que le programme est erroné, pas qu'il est sans erreur!
Complexité de l'algorithme
Complexité temporelle
Le temps nécessaire à un algorithme pour s'exécuter sur un ordinateur abstrait
(le nombre d'opérations atomiques ou "étapes" nécessaires pour produire un résultat sur une entrée spécifique)
T = T (N, I) T = T (N, I)T=T ( N ,Je )
N: échelle du problème
I: entrée
1. La complexité temporelle dans le pire des cas 2. La complexité temporelle dans le
meilleur des cas 3. La complexité temporelle dans le
cas moyen
Jeton de complexité temporelle
f (N) et g (N) sont des fonctions positives définies sur l'ensemble des nombres positifs.
S'il y a un nombre normal CCC et entier naturelN 0 N_0N0
1, monde supérieur OOLES
f (N) f (N) f ( N ) est borné lorsque N est suffisamment grand: lorsqueN ≥ N 0 N \ geq N_0N≥N0Quand, f (N) ≤ C g (N) f (N) \ leq Cg (N)f ( N )≤C g ( N ),g (N) g (N)g ( N ) estf (N) f (N)une borne supérieure de f ( N )
f(N)=O(g(N))
O (1) <O (log 2 n) <O (n) <O (nlog 2 n <O (n 2) <⋅ ⋅ ⋅ <O (2 n) <O (n!) <O (nn) O (1) <O ({log} _2n) <O (n) <O (n {log_2} n <O (n ^ 2) <··· <O (2 ^ n) <O (n!) <O (n ^ n) O ( 1 )<O ( l o g2n )<O ( n )<O ( n l o g2n<O ( n2 )<⋅⋅⋅<O ( 2n )<O ( n ! )<O ( nn )
2. Limite inférieure Ω \ OmegaΩ
f (N) f (N) f ( N ) est borné lorsque N est suffisamment grand: lorsqueN ≥ N 0 N \ geq N_0N≥N0Lorsque, f (N) ≥ C g (N) f (N) \ geq Cg (N)f ( N )≥C g ( N ),g (N) g (N)g ( N ) estf (N) f (N)une borne inférieure de f ( N )
f(N)=Ω(g(N))
Complexité polynomiale
Algorithme efficace, matériel d'empilage
Complexité exponentielle
Algorithmes inefficaces, le matériel d'empilage est inutile
3. Le même ordre θ \ thetaθ
f (N) f (N) f ( N ) équivaut àg (N) g (N)g ( N ) même ordre: si et seulement sif (N) = O (g (N)) f (N) = O (g (N))f ( N )=O ( g ( N ) )且f (N) = Ω (g (N)) f (N) = \ Omega (g (N))f ( N )=Ω ( g ( N ) )
f(N)=θ(g(N))
Algorithme
O(f) + O(g) = O(max(f,g))
O(f) + O(g) = O(f + g)
O(f)O(g) = O(fg)
若g(N) = O(f(N)),则O(f) + O(g) = O(f)
O(Cf(N)) = O(f(N)),其中C是一个正的常数
f = O(f)
Complexité spatiale
La quantité d'espace de stockage requise par un algorithme pour produire des résultats pour une entrée spécifique
S = S (N, I) S = S (N, I)S=S ( N ,Je )