Capítulo 1 Introducción
Acerca de la introducción
(Algoritmo + estructura de datos) = programa
Turing: el padre de la informática y la inteligencia artificial.
Premio Turing: Premio Nobel en el mundo de la informática.
Prueba de Turing.
Propiedades relacionadas con el algoritmo: entrada, salida, certeza, finitud
Algoritmo: un método o proceso para resolver un problema.
Corrección del algoritmo
Un algoritmo es correcto si finalmente se detiene para cada entrada y produce la salida correcta.
La depuración del programa solo puede demostrar que el programa es incorrecto, ¡no que esté libre de errores!
Complejidad del algoritmo
Complejidad del tiempo
El tiempo necesario para que un algoritmo se ejecute en una computadora abstracta
(el número de operaciones atómicas o "pasos" necesarios para producir un resultado en una entrada específica)
T = T (N, I) T = T (N, I)T=T ( N ,Yo )
N: Escala del problema
I: Entrada
1. La complejidad del tiempo en el peor de los casos 2. La complejidad del tiempo en el
mejor de los casos 3. La complejidad del tiempo en el
caso medio
Token de complejidad de tiempo
f (N) yg (N) son funciones positivas definidas en el conjunto de números positivos.
Si hay un número normal CCC y número naturalN 0 N_0norte0
1, mundo superior OOEL
f (N) f (N) f ( N ) está acotado cuando N es suficientemente grande: cuandoN ≥ N 0 N \ geq N_0norte≥norte0Cuando, f (N) ≤ C g (N) f (N) \ leq Cg (N)f ( N )≤C g ( N ),g (N) g (N)g ( N ) esf (N) f (N)un límite superior 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 g2norte<O ( n2 )<⋅⋅⋅<O ( 2n )<Oh ( n ! )<O ( nn )
2. Límite inferior Ω \ OmegaΩ
f (N) f (N) f ( N ) está acotado cuando N es suficientemente grande: cuandoN ≥ N 0 N \ geq N_0norte≥norte0Cuando, f (N) ≥ C g (N) f (N) \ geq Cg (N)f ( N )≥C g ( N ),g (N) g (N)g ( N ) esf (N) f (N)un límite inferior de f ( N )
f(N)=Ω(g(N))
Complejidad polinomial
Algoritmo eficiente, hardware de apilamiento
Complejidad exponencial
Algoritmos ineficientes, apilar hardware es inútil
3. El mismo orden θ \ thetaθ
f (N) f (N) f ( N ) es equivalente ag (N) g (N)g ( N ) mismo orden: si y solo 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))
Algoritmo
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)
Complejidad espacial
La cantidad de espacio de almacenamiento requerido por un algoritmo para producir resultados para una entrada específica
S = S (N, I) S = S (N, I)S=S ( N ,Yo )