Vous êtes sur la page 1sur 116

COMPLEJIDAD AVANZADA

1
COMPLEJIDAD AVANZADA
Introduccin
Eficiencia
Complejidad
Clculo
Notaciones asintticas
Anlisis de Algoritmos
Recurrencias
Tcnicas de optimizacin
Argumentos de Teora de la Informacin
Complejidad Computacional
Clases P, NP y NP-Completos

2
Introduccin: Problemas y ejemplares
Problema: Elevar un nmero a una potencia xy
Ejemplar: Problema concretado con unos datos:
35 (-21/2 no sera un ejemplar).

La mayora de los problemas tienen ejemplares.

(El problema del ajedrez solo tiene un ejemplar: la


situacin inicial, y un nmero finito de subproblemas,
aunque muy grande) .
3
Introduccin: Problemas y ejemplares
Un algoritmo debe funcionar con cualquier
ejemplar.
Un algoritmo que falla con un ejemplar NO es vlido.

Problema de demostrar la validez o correccin:


Definir el dominio: Conjunto de valores para los que el
algoritmo es vlido (Ejem.: la potencia la definimos para
bases y exponentes naturales).
Tamao mximo del problema que podemos resolver
(limitaciones de la mquina) .

4
Eficiencia
Criterios de seleccin de un algoritmo:
- Sencillez

- De entendimiento/mantenimiento

- De programacin

- Eficiencia: Cantidad de recursos necesarios, tiempo y espacio, para resolver un


algoritmo de tamao n.

De que depende?

- Algoritmo

- Flujo de datos

- Mquina, lenguaje, 5
Eficiencia: Clculo
Emprica Terica
(a posteriori) (a priori)
- Sencilla: No requiere - No es sencilla
clculos
- No es necesario
- Hay que programar y
probar los algoritmos. programar los algoritmos
- Depende de la mquina, - No depende de la
lenguaje, mquina, lenguaje,
- Tamao predeterminado - Cualquier tamao.

Hbrida
Clculo terico y evaluacin emprica
6
Eficiencia
Tamao de un problema:
- Nmero de bits que se necesitan para representar
un ejemplar en una computadora.

- Nmero entero que mide el nmero de


componentes de un ejemplar (Ejem.: Ordenar 10
elementos tendr un tamao 10).

7
Eficiencia
Tamao de un problema:
- Espacio:
Se utiliza el bit (normalmente no nos interesa, aunque
todos los clculos seran similares a los del tiempo).
- Tiempo:
Principio de invariancia: Dos implementaciones distintas
del mismo algoritmo diferirn, a lo sumo, en una constante
multiplicativa.

8
Complejidad
Medida de la eficiencia de un algoritmo (en
tiempo y/o espacio).

Indica cmo es su comportamiento.

Contamos el nmero de operaciones que


hace un algoritmo.

Nos centraremos en el estudio terico.

9
Complejidad. Ejemplo: calcular si un nmero es primo
public static boolean esPrimo1(long n){
boolean primo=true;
for(long i=2;i<n;i++) Se hacen n-1 operaciones
if(n%i==0) primo=false;
return primo;
}

public static boolean esPrimo2(long n){


boolean primo=true;
for(long i=2;i<=(int)Math.sqrt(n);i++) Se hacen operaciones
if(n%i==0) primo=false;
return primo;
}

public static boolean esPrimo3(long n){


boolean primo=(n==2 || n%2!=0);
int raiz=(int)Math.sqrt(n); Se hacen /2 operaciones
if(n!=2){
for(long i=3;primo && i<=raiz;i=i+2)
if(n%i==0) primo=false;
}
return primo; 10
Complejidad: casos peor, medio y mejor
El tiempo de ejecucin de un algoritmo puede variar
considerablemente entre dos ejemplares distintos del mismo
tamao

Por ello consideramos tres casos:


Peor: aquel en que la disposicin de los datos de entrada implica
hacer el mayor nmero de operaciones. Interesante cuando hay
tiempos de respuesta crticos.
Medio: los datos llegan de forma aleatoria o desconocida.
Tratamos de calcular un tiempo medio (esperanza matemtica).
Normalmente, es el caso mas interesante porque es el mas
general.
Mejor: Los datos de entrada llegan de forma que hay que hacer el
menor nmero de operaciones. Este caso no suele ser
interesante.

11
Complejidad: Ejemplo calcular si un nmero es primo
public static boolean esPrimo1(long n){
boolean primo=true;
for(long i=2;i<n;i++)
if(n%i==0) primo=false; Caso peor: Se hacen n-1 operaciones
return primo; Caso medio: Se hacen n-1 operaciones
Caso mejor: Se hacen n-1 operaciones
}

public static boolean esPrimo2(long n){


boolean primo=true;
for(long i=2;i<=(int)Math.sqrt(n);i++)
if(n%i==0) primo=false;
Caso peor (n es primo o no): Se hacen operaciones
return primo; Caso medio (n es primo o no): Se hacen operaciones
} Caso mejor (n es primo o no): Se hacen operaciones

public static boolean esPrimo3(long n){


boolean primo=(n==2 || n%2!=0);
int raiz=(int)Math.sqrt(n);
if(n!=2){
Caso peor (n es primo): Se hacen /2 operaciones
for(long i=3;primo && i<=raiz;i=i+2) Caso medio (n no es primo ni mltiplo de 2): /4
if(n%i==0) primo=false; Caso mejor (n mltiplo de 2): solo se hace 1 operacin
}
return primo; 12
Complejidad. Ejemplo: calcular si un nmero es primo
public static boolean esPrimo3(long n){
boolean primo= (n==2 || n%2!=0); //(1) 4 operaciones la asignacion =, el resto % y las comparacies == y !=
int raiz=(int)Math.sqrt(n); //(2) 2 operaciones la asignacin = y la llamada Math.sqrt
if(n!=2){ // (3) 1 la comparacin
for(long i=3;primo && i<=raiz;i=i+2) //(4) ( /2)-3 veces las 4 operaciones de (5) mas las 3 de (6):
{ //(5) comparaciones primo y <= asignacin = e incremento +2
if(n%i==0) primo=false; //(6) 3 operaciones: el resto %, la comparacin == y
} la asignacin =
}
return primo;
}
Caso mejor (n mltiplo de 2) : T(n)= 4+2+1=5 las 4 de (1)+2de(2)+1 de(3)
Caso medio(n no es primo ni mltiplo de 2): T(n)=4+2+( /4-3)*7
Caso peor (n es primo): T(n)=2+2+( /2-3)*7

Por qu no contamos las operaciones marcadas en verde?

13
Complejidad: Operaciones elementales
Caractersticas de una operacin elemental:

1) El tiempo de ejecucin se puede acotar superiormente por una constante, que


depender de la implementacin (mquina, lenguaje,).
2) La constante no depende del tamao ni de los parmetros del ejemplar.
3) En el anlisis, solo atenderemos al nmero de operaciones elementales y no al
tiempo exacto requerido para cada una de ellas.
4) Simplificaremos diciendo que las operaciones elementales tienen un coste
unitario.

public static boolean esPrimo3(long n){


boolean primo= (n==2 || n%2!=0); Unitarias
int raiz=(int)Math.sqrt(n); No Unitarias
if(n!=2){ Unitarias ?
for(long i=3;primo && i<=raiz;i=i+2)
{
if(n%i==0) primo=false;
}
}
return primo; 14
}
Complejidad: Operaciones elementales

En general:

Evaluacin de expresiones.
Asignacin de valores a variables.
Accesos a estructuras indexadas bsicas (ndices en un array, vector, ).
Llamadas a mtodos ( a no ser que se especifique su costo ).

15
COMPLEJIDAD AVANZADA

NOTACIONES ASINTTICAS

16
COMPLEJIDAD AVANZADA
NOTACIONES ASINTTICAS

Las denominamos asintticas porque tratamos el comportamiento de los


algoritmos para tamaos grandes o muy grandes (y si fueran pequeos?).

Sean: f,t: IN------>IR+


decimos que t(n) est en el orden de f(n) si c,n0>0 / n>n0 t(n) c f(n)

Ejemplos
t(n)=n es del orden de f(n)=n2
t(n)=3n2 es del orden de f(n)=n2 (basta con tomar c=3)
t(n)=10+n2 es del orden de f(n)=n2 (c=2, n0=4 )

17
NOTACIONES ASINTTICAS
O: Orden de
Supone una acotacin superior de las funciones

O(f(n))={ t:IN IR+ | c,n0IR+ | nn0 t(n)cf(n)}

Si una funcin t es tal que n / t(n)<0 , diremos que


t(n) O(f(n)) |t(n)| O(f(n))

Si en una funcin t n / t(n) no esta definida , diremos que


t(n) O(f(n)) t(n) O(f(n)) para los valores para los que est definida.

Ejemplos:
n/log(n-1) O(n) aunque no est definida para n=0,1,2.
n2-3n O(n2) aunque es 0 para n=1,2,3.

18
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS O: Orden de

19
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS O: Orden de

Regla del umbral:

t(n) O(f(n)) cIR+ | n t(n)cf(n) (salvo los valores para los que no est
definida)

Regla del mximo:


O(f(n)+g(n))=O(max(f(n),g(n))
O(n3+n log n+1000 n2)=O(max (n3,n log n,1000 n2))=O(n3)

Supongamos que max(f(n),g(n)) es f(n) (f(n)>g(n) nn0)


f(n) c f(n)
f(n)+g(n)cf(n)+kg(n)cf(n)+kf(n)=(c+k) f(n)
g(n)k g(n)

20
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS O: Orden de

Regla del umbral:

t(n) O(f(n)) cIR+ | n t(n)cf(n) (salvo los valores para los que no est
definida)

Regla del lmite:


f (n)
lim g (n) IR+ f(n) O(g(n)) y g(n) O(f(n))
n
f (n) f(n) O(g(n)) y g(n) O(f(n))
lim g (n) 0
n
f (n)
lim g (n) f(n) O(g(n)) y g(n) O(f(n))
n

21
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS : Omega
Supone una acotacin inferior de las funciones

(f(n))={ t:IN IR+ | c,n0IR+ | nn0 t(n)cf(n)}

Corolario:

t(n) (f(n)) f(n) O (t(n))

22
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS Orden exacto : Theta

Supone una acotacin inferior y superior de las funciones

(f(n))={ t:IN IR+ | c,d,n0IR+ | nn0 t(n)cf(n) y t(n)df(n)}

(f(n)) = O(f(n))(f(n))

f (n)
lim g (n) IR+ f(n) (g(n))
n
f (n)
lim g (n) 0 f(n) O(g(n)) y g(n) (f(n))
n

lim g (n) f(n) (g(n)) y g(n) (f(n))


f (n)
n

23
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS : Theta

24
NOTACIONES ASINTTICAS
Resultados prcticos para el clculo de O, y
n

i
k 1
O (n
k
)
i 1

i
k 1
1 ... n ... n
k k k k k k

i 1
n n n n
c c
n n

c c ... c c
n i 1 n
c
i 1
i
O (c )
n
i 1 c 1
n

log i O(n log n)


i 1

log i log 1 ... log n log(1 2 ... n) log( n n .... n) n log n


i 1

25
NOTACIONES ASINTTICAS
Resultados prcticos para el clculo de O, y

n
1

i 1 i
O(log n)

n
1

i 1 i
c
O (1) c>0

n
1

i 1 c
i
O (1) c>1

26
NOTACIONES ASINTTICAS
Propiedades de la Notaciones O, y

g(n) O(g(n))
cO(g(n)) = O(g(n)), donde c es una constante
O(g(n)) + O(g(n)) = O(g(n))
O(g(n)) O(h(n)) = O(g(n)h(n))
h(n) O(g(n)) = O(h(n)g(n))
O(g(n)) + O(h(n)) = O(max(O(h(n)),O(g(n))))
O(g(n)) - O(g(n)) = O(g(n))

27
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS Condicionales

Suponen acotaciones para ciertos valores de n que verifican la condicin P


(por ejemplo ser par, potencia de 2,)

O(f(n)|P(n))={ t:IN IR+ | c,n0IR+ | nn0 [P(n)t(n)cf(n)] }

(f(n)|P(n))={ t:IN IR+ | c,n0IR+ | nn0 [P(n)t(n)cf(n)] }

(f(n)|P(n))={ t:IN IR+ | c,d,n0IR+ | nn0 [P(n)t(n)cf(n) t(n)df(n)] }

Si una funcin es asintticamente creciente se puede calcular la


complejidad para valores que cumplan una cierta propiedad nada mas.

si hacemos n f (k ) k
2k
Ejemplo: f ( n) L n e 28
NOTACIONES ASINTTICAS

Funcin suave: f se dice suave si f(2n)/f(n) est acotada.


lim
f ( 2n)
f ( n)
n
IR +.

Las funciones suaves crecen lentamente


Son suaves: log n, n, n log n, np, k.
No son suaves: nlog n, pn, n!, , nn.
O(k)<< O(log n)<< O(n)<< O(nk)<< O(kn)<<O(n!)<<O(nn)

Lema de la uniformidad (vale igualmente para O,,):

Sean f:IN-->IR+ una funcin suave, t:IN--> IR+ una funcin


asintticamente creciente y bIN, b2 ; entonces
Si t(n)O(f(n)|n=bk) t(n)O(f(n)) 29
NOTACIONES ASINTTICAS

30
NOTACIONES ASINTTICAS

Cul elegimos?

31
NOTACIONES ASINTTICAS

32
NOTACIONES ASINTTICAS

33
NOTACIONES ASINTTICAS
NOTACIONES ASINTTICAS Con varios parmetros

O(f(n,m))={ t:IN x IN IR+ | c,n0,m0IR+ | nn0 mm0 t(n,m)cf(n,m)}

(f(n,m))={ t:IN x IN IR+ | | c,n0,m0IR+ | nn0 mm0 t(n,m)cf(n,m)}

(f(n,m))={ t:IN IR+ | c,d,n0,m0IR+ | nn0 mm0 t(n,m)cf(n,m)


t(n,m)df(n,m)}

Ejemplos:
Funcin de Ackermann

Nmero combinatorio

34
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS
Estructuras de control: Secuencias finitas

.
S1 //secuencia 1 con un coste O(t1)
S2 //Secuencia 2 con un coste O(t2)
.

O(O(t1)+O(t2)+.)=O(max(O(t1),O(t2),.)

Tomamos como coste el de la mayor.


35
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS
Estructuras de control: Iteraciones
Bucles for Bucles while Bucles do
Desde iinicio hasta fin saltando salto iinicio iinicio
hacer S1 Mientras i<fin hacer Hacer
Fin-Desde S1 S1
ii+salto ii+salto
Fin-Mientras Mientras i<fin
Todos ellos se pueden resumir en el tipo while:

iinicio // iniciamos i O(1) O(inicio)


Mientras i<fin //Control de fin de repeticiones O(1) O(fin)
S1 //Hacer S1 O(t1)
ii+salto //incrementamos i para acercarnos al final O(salto)
Fin-Mientras //O(1)+O(1)=O(1) de la asignacin y de la suma

Todas estas operaciones las hacemos m=fin/salto veces.


El coste ser :
O(1)+m*(O(t1)+O(1))=m*O(t1)
O(inicio)+m*(O(fin)+O(t1)+O(salto)+O(1))=O(max(O(inicio) ,m*O(t1),m*O(fin),m*O(salto)))
36
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS
Estructuras de control: Seleccin
Si condicion //O(1) O(condicin)
entonce S1 //f(n)
si-no S2 //g(n)
Fin-if

Se analiza (calcula) el peor caso de las dos alternativas posibles


O(1)+O(max(f(n),g(n))= O(max(f(n),g(n))

Segun condicion //O(1) O(condicin)


caso 1: S1 //f1(n)
caso 2: S2 //f2(n)
caso 3: S3 //f3(n)
.
Fin-segun

Se analiza (calcula) el peor caso de todas las alternativas posibles.


O(1)+O(max(f1(n), f2(n), f3(n),)= O(max(f1(n), f2(n), f3(n),)
O(condicion)+O(max(f1(n), f2(n), f3(n),)= O(max(condicion,f1(n), f2(n),)
37
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS
Estructuras de control: Ciclos

38
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS

Bloques
Se toma el mximo de los rdenes, teniendo en cuenta la regla de la
suma.

Funciones
Depende del lugar en el que se realice la llamada.
Llamada a una funcin en una sentencia simple
a=f(n) con f(i) O(n), entonces O(n)
Llamada a una funcin en una instruccin de tipo for
Depende de donde se coloque (asignacin inicial, condicin,
incremento)
Asignacin inicial se suma el orden de la funcin al del bucle.
Condicin o incremento Se suma su orden en el orden del
cuerpo del bucle.
Recursivas Resolucin de recurrencias.

39
COMPLEJIDAD AVANZADA ANLISIS DE ALGORITMOS
Estructuras de control: Anidamientos
Bucles for

for (i=1; i<=n; i++) //O(n)


O(n)*O(n)=O(n2)
for (j=1; j<=n; j++) //O(n)
a[i][j]=0;

for (i=1; i<=n; i++) //O(n)


O(n)*O(1)=O(n)
if (i%2==0) //O(1)
a[i][j]=0;
else
a[i][j]=1;

40
Ecuaciones recurrentes

Mtodos de resolucin
Expansin de la recurrencia
Induccin matemtica
Ecuaciones caractersticas
Ecuaciones lineales homogneas
Races simples
Races mltiples
Ecuaciones lineales no homogneas
Ecuaciones no lineales

41
Reglas bsicas para el clculo

Funciones recursivas Valores iniciales


int fact(int n) { T(n)=1, n<=1
if (n<=1) return (1);
else return (n*fact(n-1));
}

c si n1 Ecuacin
T(n) = recurrente
d+T(n-1) en otro caso

Resolucin: mtodo de expansin de la recurrencia

42
Reglas bsicas para el clculo
Resolucin: mtodo de expansin de la recurrencia

Valores iniciales
c si n1
T(0)=1, T(1)=1
T(n) =
d+T(n-1) en otro caso

Resolucin: mtodo de expansin de la recurrencia

T(n)=1+T(n-1) = 1+[1+T(n-2)] = 2+T(n-2) si n>2 = 3+T(n-3) si n>3 =


= i + T(n-i) si n>i

Por ejemplo, para i=(n-1):


T(n) = (n-1)+T[n-(n-1)] = (n-1)+T(1) = (n-1)+1= n
T(n) O(n)

43
Resolucin de recurrencias

Expansin de la recurrencia

Obtencin de una formula general a partir de varios valores.

Se aplica cuando hay un solo trmino en t, aunque est multiplicado o


sumado por una constante.

Ejemplo: funcin para clculo del factorial.

44
Resolucin de recurrencias

Ecuaciones caractersticas
Recurrencias

T ( n ) T ( n) 1
T(n)+T(n-1)+1

Cambio de
Lineales No lineales
variable

T(n)+T(n-1)=0 T(n)+T(n-1)+1 = 4

Homogneas No homogneas

Races simples Races mltiples

45
Resolucin de recurrencias

Ecuaciones Lineales Homogneas


Consideramos: T(n) = tn
Forma de la ecuacin

a0tn a1tn1 ... ak tnk 0
Suposicin: tn = Xn (polinomio caracterstico), con lo que
a x n a x n 1 ... a x n k 0
0 1 k
Soluciones
Trivial 0
Sacando factor comn Xn-k:
o Races simples
o Races mltiples
k 1
Ecuacin caracterstica: a0 x a1 x ... ak 0
k

T1 Trp
46 46
Resolucin de recurrencias

Ecuaciones Lineales Homogneas


k
t n ci ri
Races simples n
r1 , r2 ,..., rk
i 1
Ejemplo
3T (n 1) 4T (n 2), n 2
T (n)
n, n 0,1
tn 3tn1 4tn2
tn 3tn1 4tn2 0
tn x n x n 3x n1 4xn2 0 Ecuacin caracterstica
n2
( x 3x 4) x 0
2 x2 3x 4 0
47
Resolucin de recurrencias

Ecuaciones Lineales Homogneas


Ejemplo (continuacin)

x 3x 4 0
2
Races: r1 1, r2 4
k
tn ci ri n c1 (1) n c2 4n
i 1
Condiciones iniciales: t0=0, t1=1
0 c1 c2 1 1
c1 c2
1 c1 4c2 5 5


k
1 n
tn ci ri c1 (1) c2 4 4 (1) n O(4n )
n n n

i 1 5
T1 Trp
48 48
Resolucin de recurrencias

Ecuaciones Lineales Homogneas


Ejemplo fibonacci: f(n)=f(n-1)+f(n-2) f(0)=0 f(1)=1
T (n 1) T (n 2), n 2
T (n)
t 0
0, t 1 1
tn tn1 tn2 0 Ecuacin caracterstica x 2 x 1 0
1 5 1 5
Races: r1 , r2
2 2
n n
n

1 5 1 5 1 5
c O
k
t n ci ri n
c2
2
1
2 2

i 1


1 1
c1 , c2 49
5 5
Resolucin de recurrencias
Ecuaciones Lineales Homogneas
Races mltiples: Supongamos r raz de multiplicidad m

tn c0 n .r c1 n r ... cm1 n m1r n


0 n 1 n

Ejemplo
r1=3
r2=2 doble
t n c1 3n c2 2 n c3 n 2 n

Ejemplo
5T (n 1) 8T (n 2) 4T (n 3), n 3
T (n)
n, n 0,1,2
tn 5tn1 8tn2 4tn3 0 1
Ecuacin caracterstica x3 5x 2 8x 4 0 2, doble
50
Resolucin de recurrencias

Ecuaciones Lineales Homogneas


Ejemplo (continuacin)
t n c11n c2 2 n c3n2 n
t0 0 c1 c2 0 c1 2
t1 1 c1 2c2 2c3 1 c2 2
t2 2 c1 4c2 8c3 2 c3 1 2

1 n
tn 2 2 2 n2 2 n 1 n2n 1 2 O(2 n 1 ) O(2 n )
n

2
T1 Trp
51 51
Resolucin de recurrencias

Ecuaciones Lineales No Homogneas


Combinacin lineal que no es igual a 0
a0t n a1t n 1 ... ak t n k b p(n)
n

b es una constante
p(n) es un polinomio de grado d

Solucin:
Reducir al caso homogneo
Aplicacin del polinomio caracterstico (tn = xn)

(a0 x k a1 x k 1 ... ak )( x b) d 1 0
52
Resolucin de recurrencias

Ecuaciones Lineales No Homogneas


Ejemplo
b 1
2T (n 1) 1, n 1
T (n) t n 2t n 1 1n n 0 p(n) 1
0, n 0 d 0
Ecuacin caracterstica
r1 2
( x 2)( x 1) 0 r2 1
k t0 0 c1 c20 c1 1
t n ci ri c11 c2 2
n n n

t1 1 c1 2c2 1 c2 1
i 1

t n 2 n 1 O(2 n )
T1 Trp
53 53
Resolucin de recurrencias

Ecuaciones Lineales No Homogneas


Ejemplo
b 1
2T (n 1) n, n 1
T (n) t n 2t n 1 1n p(n) n
n, n 0 d 1
r1 2
( x 2)( x 1) 0 r 1, doble
2

t0 0 c1 c2 0 c1 2
n t1 1 2c1 c2 c3 1
c2 2
t n c1 2 c21 c3 n 1
n n

t2 4 4c1 c2 2c3 4 c3 1
n 1 n 1
t n 2 2 (2) n 2
n
n 2 O(2 )
54
Resolucin de recurrencias

Ecuaciones Lineales No Homogneas


Ejemplo
b1 1, p1 (n) n
2T (n 1) n 2 n , n 1
T (n) t n 2t n 1 n 2 n
0, n 0
b2 2 , p2 (n) 1

r1 2, doble
( x 2)( x 1) 2 ( x 2) 0 r2 1, doble

t n c1 2 n c2 n 2 n c31n c4 n 1n

55
Resolucin de recurrencias

Ecuaciones Lineales No Homogneas


Ejemplo (continuacin)

t0 0 c1 c3 0 c1 2
t1 3 2c1 2c2 c3 c4 3 c2 1
t2 12 4c1 8c2 c3 2c4 12 c3 2
t2 35 8c1 24c2 c3 3c4 35 c4 1

t n 2 n 1 n 2 n 2 n n 2 n 2 n 1 n 2 O(n 2 n )

T1 Trp
56 56
Resolucin de recurrencias

EJEMPLO:

Procedimiento hanoi(m,i,j)
Si m>0 entonces
Hanoi(m-1,i,6-i-j)
escribir(i,,j)
Hanoi(m-1,6-i-j,j)
Fin-Si

tn=2tn-1+1 n>0; t0=0

tn - 2tn-1 = 1 ; p(n) = 1n0 ; b = 1 ;

luego la ecuacin caracterstica es (x -2) (x-1)0+1 = 0

57
Resolucin de recurrencias

Ecuaciones No Lineales
Procedimiento
Buscar un cambio de variable que permita obtener de
nuevo una funcin de n para T
Resolver en la nueva variable
Deshacer el cambio

58
Resolucin de recurrencias
T(n)=T(n/k) Sustitucin n=km

Ecuaciones No Lineales
Ejemplo
T (n) 4T (n 2) n T (1) 1 T ( 2) 6
Cambio de variable
n 2 m ; m log 2 n
T ( 2m ) 4T (2m1 ) 2m T ( 2m ) tm
t m 4t m 1 2 m ( x 4) 2 m (x - 4)(x - 2) 0
t m c1 4 m c2 2 m
Las constantes se pueden calcular antes o despus de deshacer
el cambio, pero siempre hay que tener claro si son valoresT1de m
Trp
59 59
o de n
Resolucin de recurrencias

Ecuaciones No Lineales
Ejemplo (continuacin)
Valores iniciales
t1 1 t1 1
n m
t 2 6 t 2 6
Deshacemos el cambio
4m 2m 2m n2 t n c1n 2 c2 n
c1 c2 1 c1 2
T ( n) 2n 2 n O ( n 2 )
4c1 2c2 6 c2 1

60
Resolucin de recurrencias
m

T ( n) T ( k n ) k
Sustitucin n 2

Ecuaciones No Lineales
Ejemplo

T (n) 2T ( n ) log 2 n
Cambio de variable
2m 2 m1
n2 T (2 ) 2T (2
2m
) log 2 2 2m

2m
T ( 2 ) tm tm 2tm1 2m
( x 2) 2 0 r 2; doble
t m c1 2 m c2 m 2 m
61
Resolucin de recurrencias

Ecuaciones No Lineales
Ejemplo (continuacin)
t m c1 2 m c2 m 2 m
2m
Deshacemos el cambio n2
tn c1 log 2 n c2 log 2 (log 2 n) log 2 n
t n O(log 2 (log 2 n) log 2 n)

T1 Trp
62 62
Resolucin de recurrencias

Ecuaciones No Lineales
Ejemplo
T (n) T ( n 2 )T 2 ( n 4 ) T (1) 2 T (2) 4
Cambio de variable
n 2m T (2m ) T (2m1 ) T 2 (2m2 )
T ( 2m ) tm t m t m 1 t 2 m 2
En estos casos conviene realizar un cambio de rango. Para esto
tomamos logaritmos
log 2 t m log 2 tm1 2 log 2 tm2
Ya hemos alcanzado una expresin lineal en m

T1 Trp
63 63
Resolucin de recurrencias

Ecuaciones No Lineales
Ejemplo (continuacin)
log 2 tm log 2 tm-1 2 log 2 tm-2
Consideramos Vm log 2 t m
Vm Vm 1 2 Vm 2 ( x 2 x 2) 0
( x 2)( x 1) 0 Vm c1 2m c2 (1) m
Deshacemos el cambio teniendo en cuenta que a logb bloga
c1 2m c2 ( 1) m
log 2 t m c1 2 c2 (1) tm 2
m m

Deshacemos el cambio n 2
m

log n log n
c1n c2 ( 1) c1n c2 ( 1)
tn 2 T (n) 2
2 2

T1 Trp
64 64
Resolucin de recurrencias

Ecuaciones No Lineales
Ejemplo (continuacin)
log n
c1n c2 ( 1)
T (n) 2
2

T (1) 2 2 2 c1 c2 log 2 (c1 c2 ) log 2 2



T ( 2) 4 log 2 4 (2c1 c2 ) log 2 2
2 c1 c2
4 2

1 c1 c2 c1 1
T(n) 2 n O(2 n )
2 2c1 c2 c2 0

65
Resolucin de recurrencias

66
Resolucin de recurrencias

Ecuacin Inductiva T(n)


T(n)=T(n-1)+bnk O(nk+1)
T(n)=cT(n-1)+bnk con c>1 O(cn)
T(n)=cT(n/d)+bnk con c>dk O(cLogn)
T(n)=cT(n/d)+bnk con c<dk O(nk)
T(n)=cT(n/d)+bnk con c=dk O(nkLogn)

67
OPTIMIZACIN

68
Optimizacin

Generalmente hay varios aspectos que se desean optimizar:

Optimizacin temporal: Reducir el tiempo de ejecucin del programa.

Optimizacin espacial: Reducir la cantidad de espacio en memoria que ocupa el

programa en ejecucin.

Soluciones:

Reducir el tamao del programa.

Minimizar la potencia consumida por un programa.


69
Optimizacin

"Debemos olvidarnos de las pequeas eficiencias, por ejemplo, el 97% del


tiempo: la optimizacin prematura es la raz de todos los males (Donald Knuth)

PROBLEMAS

La optimizacin puede reducir la legibilidad


El tiempo que se tarda en optimizar puede ser en si mismo un problema.
En ingeniera de software, muy comunmente, el 90% del tiempo de ejecucin de
un programa se gasta en ejecutar el 10% del cdigo (conocido como la ley 90/10 ).

En Programacin e Ingeniera de software la regla del noventa-noventa hace referencia


a un aforismo cmico:

"El primer 90% del cdigo ocupa el 90% del tiempo de desarrollo. El 10% restante del
cdigo ocupa el otro 90% de tiempo de desarrollo." 70
Optimizacin: Ley de Amdahl

La mejora obtenida en el rendimiento de un sistema debido a la alteracin de uno de


sus componentes est limitada por la fraccin de tiempo que se utiliza dicho
componente.

A es la aceleracin o ganancia en velocidad conseguida en el sistema completo


debido a la mejora de uno de sus subsistemas.
Am es el factor de mejora que se ha introducido en el subsistema mejorado.
Fm es la fraccin de tiempo que el sistema utiliza el subsistema mejorado.

71
Optimizacin: Ley de Amdahl

Por ejemplo, si en un programa de ordenador el tiempo de ejecucin de un cierto


algoritmo supone un 30% del tiempo de ejecucin total del programa, y conseguimos
hacer que este algoritmo se ejecute en la mitad de tiempo se tendr:

1 1
A 1.18
0 .3
(1 F ) F m (1 0.3)
m 2
A m

Es decir, se ha mejorado la velocidad de ejecucin del programa en un factor de 1,18.


La ley de Amdahl se mide en unidades genricas, es decir los resultados no son
porcentajes, ni unidades de tiempo.
72
Optimizacin: Ley de Amdahl

73
Tcnicas de optimizacin

Pretenden mejorar el cdigo fuente para obtener un mayor


rendimiento.
Comprobacin experimental.

Algunas sencillas son:

Desenvolvimiento de ciclos (loop unrolling).


Reduccin de esfuerzo.
Tipos de variables .
Fusin de ciclos (loop jamming).
Expresiones redundantes.
Folding
Loop interchange.
Basura.
74
C. A. Tcnicas de optimizacin
Desenvolvimiento de ciclos

Esta tcnica de optimizacin consiste en desenvolver el cuerpo del ciclo dos o ms


veces incrementando los saltos de ciclo, con el fin de mejorar el reso de registros,
minimizar recurrencias y de exponer ms paralelismo a nivel instruccin.
Utilizaremos esta tcnica cuando la cantidad de iteraciones del ciclo es pequea y
constante.

Ejemplos:

int [] a=new int[3]; int [] a=new int[1000];


for(int n=0;n<3;n++) for(int n=0;n<a.length;n++)
a[n]=n*5; a[n]=n*5;

Se pueden sustituir por


int[] a=new int[3]; int[] a=new int[1000];
a[0]=0; for(int n=0;n<a.length;n+3){
a[1]=5; a[n]=n*5;
a[2]=10; a[n+1]=(n+1)*5;
a[n+2]=(n+2)*5;
} 75
C. A. Tcnicas de optimizacin
Reduccin de Esfuerzos (Strength Reduction)

Elimina las llamadas a mtodos (de los que muchas veces no


sabemos su coste).

Ejemplo:

double n=Math.pow(x,3);

Se puede sustituir por

double n= x*x*x;

76
C. A. Tcnicas de optimizacin
Tipos de Variables

Ejecutamos la operacin pero con tipos de datos mas pequeos.


Por ejemplo, para un mismo procesador, efectuar el producto de
dos nmeros es mucho ms lento si estos nmeros son de tipo
real que si son de tipo entero.

Ejemplo:

double [] a=new double[30000]; se puede sustituir por int [] a=new int[30000];


for(int n=0;n<a.length;n++) for(int n=0;n<a.length;n++)
a[n]=n*5; a[n]=n*5;

77
C. A. Tcnicas de optimizacin
Fusin de ciclos

Se utiliza cuando se puede verificar que los ciclos iteran la


misma cantidad de veces y estos se encuentran concatenados.
Unimos todas las instrucciones en un solo ciclo.

Ejemplo:

int[] a=new int[10000]; Se puede sustituir por int[] a=new int[10000];


Int[] b=new int[10000]; int[] b=new int[10000];
for(int n=0;n<a.length;n++) for(int n=0;n<a.length;n++){
a[n]=n+3; a[n]=n+3;
for(int n=0;n<b.length;n++) b[n]=a[n]*2;
b[n]=a[n]*2; }

78
C. A. Tcnicas de optimizacin
Expresiones redundantes
Eliminacin de las expresiones redundantes en sub-
expresiones.

Ejemplo:

int[] a=new int[10000];


String s=bababababababbaababab;
for(int n=0;n<s.length();n++)
a[n]=n*Math.pow(n,5)+Math.pow(n,5);

Se puede sustituir por:

int[] a=new int[10000];


String s=bababababababbaababab;
int tamao=s.length();
for(int n=0;n<tamao;n++)
a[n]=Math.pow(n,5)(n+1);
79
C. A. Tcnicas de optimizacin
Folding

Simplificacin de expresiones

Ejemplo:

int x=3+5+c;

Se puede sustituir por:

int x=8+c;

80
COMPLEJIDAD COMPUTACIONAL

81
COMPLEJIDAD COMPUTACIONAL
-Considera todos los posibles algoritmos para resolver un problema
(incluso los no pensados).

Tcnicas y Conceptos de la Complejidad Computacional

-Argumentos de teora de la Informacin


-Reduccin
-NP-complecin
-Otras tcnicas

Considera todos los posibles algoritmos para resolver un problema dado.

En algoritmia nos puede valer, para una funcin f(n), calcular O(f(n)) o encontrar una
g(n) que f(n) (g(n)) o, mucho mejor f(n)(g(n)).

Esto puede que no se encuentre.


82
COMPLEJIDAD COMPUTACIONAL
Argumentos de Teora de la Informacin
Se usa, principalmente, en problemas que implican comparacin entre elementos.

Se basan en rboles de decisin:


- rboles normalmente binarios
- Nodos internos: comparaciones
- Hojas: veredictos
- Viaje: camino desde la raz a una de las hojas

si no
n<3

si no no
n<2 si n<5

si si no
2 n<4 n<6
1

3 4 5 6
83
Argumentos de Teora de la Informacin

A todo algoritmo determinista le corresponde un rbol de decisin (si


tiene un nmero finito de preguntas).

Anlogamente, un rbol de decisin representa un algoritmo.

84
Argumentos de Teora de la Informacin
rbol de decisin: rbol binario (normalmente) que representa el
funcionamiento de un algoritmo para todos los posibles ejemplares de un
tamao dado.

Cada nodo interno contiene una prueba que se aplica a los datos.

Las hojas representan las salidas del algoritmo.

Problema de averiguar un nmero entre [1,106] O(log n) ( 2k106 k=20)

si no
<4

si no si
<2 <6 no
no
<3
si no 6
si
1 <5

2 3 4 5 85
Argumentos de Teora de la Informacin
Todo rbol binario con k hojas tiene una altura media log k.

Un rbol binario de altura k tiene como mximo 2k hojas.


En general: Un rbol n-ario de altura k tiene como mximo nk hojas (decisiones).

En el ejemplo con n[1..6] : Suma de longitud de los caminos 2+3+3+3+3+2=16;


Nmero de hojas=6 Altura media: k=log2 6=2,58

Caso Peor: rama mas larga o Altura (en el ejemplo 3).


(Altura de un rbol: distancia, nmero de arcos, de la raz a la hoja mas lejana.)
si no
<4

si no si
<2 <6 no
no
<3
si no 6
si
1 <5

2 3 4 5
86
Argumentos de Teora de la Informacin: Ordenacin

Ordenaciones:
Si se quieren ordenar n valores obtendremos n! hojas.
Altura media log n!O(n log n)

En el ejemplo: n=3; n!=6; caso medio: log 6=2.58 Peor caso: 3

si no
A<B

si no si
B<C B<C no
no
A<C
si no C<B<A
si
A<B<C A<C

A<C<B C<A<B B<A<C B<C<A 87


Argumentos de Teora de la Informacin: Ejemplo

Problema de la moneda falsa o no: Hay n monedas y, o bien todas son


iguales o una pesa distinto (mas o menos). Simplifiquemos con n=12.

Detectar en n/4=3 (para n=12; 12/4=3) pesadas como mximo si son


todas iguales o hay una, y solo una, falsa. En este caso decidir si pesa mas
o menos.

Posibilidades : 1 (todas iguales)+12 (una es falsa) x 2(pesa mas o


menos)=25

Con un rbol binario de altura 3, las pesadas, podramos tener 23<25


hojas, luego no nos vale.

Si utilizamos un rbol ternario 33>25 hojas, que si sirve.

88
Argumentos de Teora de la Informacin: Ejemplo
1234 5678 9 10 11 12
1+, 2+,3+,4+
5-,6-,7-,8- 1-, 2-,3-,4-
5+,6+,7+,8+
=9? 10? 11? 12?

1569 7 8 10 11 19 10 11
1+ 9-
7-, 8- 5-, 6-
9+
10+,11+
..
10-,11-
= 12?
=2+,3+,4+

7 8 2 3 10 11 1 12
10 11

= = =
= =
8- 1+ 7- 2+ 3+
4+ 11- 9+ 10- 12- = 12+
10+ 9- 11+
5 6

6- 5-
X

89
Argumentos de Teora de la Informacin: Ejemplo

Problema de la moneda falsa o no: Hay n monedas y, o bien todas son


iguales o una pesa distinto (mas o menos).

En general:

Si hay n monedas necesitamos 2*n+1 hojas por lo tanto hay que hacer k
pesadas de forma que 3k>2*n+1

Entonces:

n=3 2*3+1=7 y k=2


n=4 2*4+1=9 k=3
n=5 2*5+1=11 k=3
.
n=12 2*12+1=25 k=3
n=13 2*13+1=27 k=4
.
90
Argumentos de Teora de la Informacin (o no): Acertijo(I)
El acertijo lgico ms difcil: Los tres dioses: Verdad, Falso y, Aleatorio.

El acertijo lgico ms difcil del mundo es un ttulo que acu George


Boolos en La Repubblica 1992 bajo el ttulo L'indovinello pi difficile del
mondo para el siguiente acertijo lgico inspirado en Raymond Smullyan:

"Tres dioses A, B, y C son llamados, en algn orden, Verdad, Falso, y


Aleatorio. Verdad siempre habla expresando la verdad, Falso siempre
habla expresando algo falso, pero la respuesta de Aleatorio es
completamente aleatoria pudiendo ser verdadera o falsa. Su tarea es
determinar las identidades de A, B, y C preguntando tres preguntas cuya
respuesta es si o no; cada pregunta debe ser formulada a un nico dios.
Los dioses entienden espaol, pero contestarn todas las preguntas en su
propio idioma, en el cual las palabras para Si y No son 'da' y 'ja', en algn
orden. Usted no sabe que significado se asocia a cada palabra.
91
Argumentos de Teora de la Informacin (o no): Acertijo(II)
El acertijo lgico ms difcil: Los tres dioses: Verdad, Falso y, Aleatorio.

Boolos adems dio las siguientes aclaraciones:

Es posible formularle a un mismo dios ms de una pregunta (y por lo tanto puede


ocurrir que a algn dios no se le haga ninguna pregunta).
Cul es la segunda pregunta, y a qu dios se le realiza, puede depender de la
respuesta que se reciba a la primera pregunta. (Y en forma similar para la tercer
pregunta.)
La decisin sobre si Aleatorio responder con la verdad o la falsedad puede ser
pensado como que depende de arrojar una moneda dentro de su cabeza: si la
moneda cae cara l hablar con la verdad; si cae cruz, hablar falsamente.
Aleatorio responder 'da' o 'ja' toda vez que se le realice una pregunta Si-No.

A mi no me pregunteis, solo soy el teclista.

http://www.juegosdelogica.com/index.php/acertijos-matematicos-logica/16-solucion-
92
acertijos/314-solucion-al-acertijo-mas-dificil-del-mundo
rboles de decisin en Teora de juegos
En la teora de juegos los rboles de decisin son utilizados en la llamada forma extensiva, que
modeliza los juegos que presentan algn orden. En ellos siempre hay un nodo inicial del que
salen varias flechas que apuntan a otros nodos y se reproduce la metodologa antes explicada
llegando cada rama a un vector de nmeros.

Ejemplo: supongamos que en una partida de ajedrez donde se pueden dar los siguientes
movimientos a los que se les atribuye un cierto valor o ganancia:
T: comer torre (ganancia 3), C: comer caballo (ganancia 2), R: comer reina (ganancia 8),
N: No comer (ganancia 0)
Las posibilidades de actuar se representan en el siguiente grafo, donde los nodos representan el
jugador, la ganancia (positiva si es a favor de J1 y negativa si lo es para J2) y el par de valores que
ganan cada uno de los jugadores:
J1 ,0
(0,0) Come Caballo
Come torre
J2, 2
J2,3 Come torre
(2,0)
Come torre (3,0) Come Reina NO Come
J1,2 J1,-1
J1,0 J1, -5
(2,0) (2,3)
(3,3) (3,8)

Qu debe hacer J1? 93


rboles de decisin en Teora de juegos
Acciones simultneas en rboles de decisin

Los juegos simultneos son aquellos juegos en los que los jugadores toman la decisin a la vez, y
por tanto ninguno de ellos sabe qu decisin ha tomado el otro antes de elegir. Un ejemplo de
este tipo de juegos sera el de Piedra, papel o tijera. En el que los jugadores del mismo han de
escoger una de esas tres opciones sin saber cul de ellas escogern el resto.

E P G G E P P G E

Donde E=empatan G=gana el 1 P=pierde el 1


94
rboles de decisin en Teora de juegos
Juegos finitos y deterministas

En un juego finito y determinista , una situacin ser ganadora G si tiene algn descendiente
perdedor P; y una situacin es perdedora P si todos sus descendientes son ganadores (haga lo
que haga el otro tiene la posibilidad de ganar).
G

G P G
Ejemplo: Juego del Nim. En este juego, dos
jugadores , colocan un nmero arbitrario de
G G palillos sobre una superficie, separadas en filas.
Tanto el nmero de filas como el nmero de
fichas en cada fila son tambin arbitrarios. El
I
primer jugador toma cualquier nmero de
II
palillos de una fila, entre uno y el total de la fila,
I pero slo de una fila. El 2 jugador hace su
II I
I jugada de manera similar, retirando algunos de
las palillos que quedan, y los jugadores van
I alternndose en sus jugadas. Pierde el que retire
I
el ltimo palillo. 95
rboles de decisin: Algoritmo ID3

El algoritmo ID3 es utilizado dentro del mbito de la inteligencia artificial. Su uso se engloba en
la bsqueda de hiptesis o reglas en l, dado un conjunto de ejemplos o unas probabilidades a
priori.

Modelo de clasificacin tambin conocido como ID3 que significa "induccin mediante rboles
de decisin" que fue desarrollado por J. Ross Quinlan, capaz de tomar decisiones con gran
precisin. Sistema de aprendizaje supervisado que aplica la estrategia "divide y vencers" para
hacer la clasificacin, implementando mtodos y tcnicas para la realizacin de procesos
inteligentes, representando as el conocimiento y el aprendizaje, con el propsito de
automatizar tareas.

96
rboles de decisin: Algoritmo ID3

El ID3 permite determinar el rbol de decisin mnimo, para un conjunto de objetos. Este rbol
permite que la informacin se mantenga en forma organizada y entendible para cualquier
persona, adems hace uso de una secuencia de preguntas, donde cada una de las preguntas es
evaluada con el propsito de obtener la mejor respuesta posible.

Este modelo es un algoritmo de aprendizaje inductivo, es decir, busca establecer leyes o


principios generales sobre la base de la observacin de varios o todos los componentes de un
conjunto o clase. Aplica la estrategia divide y vencers para hacer la clasificacin de los objetos
y asociarlos a una clase, tomando en cuenta los valores de los atributos de los objetos. Un rbol
de decisin toma como entradas objetos o situaciones que se caracterizan mediante un
conjunto de propiedades.

El rbol proporciona como salida una decisin que puede ser si o no, para las funciones
97
booleanas, aunque tambin es posible representar funciones con un mayor rango de salidas.
rboles de decisin: Algoritmo ID3

La salida del algoritmo ID3 se representa como un grafo en forma de rbol, cuyos componentes
son:

Representacin de un rbol de decisin.


Un nodo principal llamado raz en la parte superior, de este nodo parten lneas hacia otros
nodos inferiores, que a su vez, pueden hacer las veces de nodo raz.
Nodos terminales, como su nombre indica, son nodos donde termina el flujo y que ya no son
padre de ningn otro nodo. Estos nodos terminales deben contener una respuesta, o sea, la
clasificacin a que pertenece el objeto que ha conducido hasta l.
Los dems nodos representan preguntas con respecto al valor
de uno de los atributos.
Las lneas representan las posibles respuestas que los atributos
pueden tomar.
98
rboles de decisin: Algoritmo ID3

La idea bsica del ID3 es de determinar, para un conjunto de ejemplos dados o una probabilidad
a priori, el atributo ms importante, o sea, aquel que posea el mayor poder discriminatorio para
dicho conjunto; ste atributo es usado para la clasificacin de la lista de objetos, basados en los
valores asociados con l mismo. Despus de haber hecho la primera prueba de atributo, sta
arrojar un resultado, el cual es en s mismo un nuevo problema de aprendizaje de rbol de
decisin, con la diferencia que contar con menos ejemplos y un atributo menos, por lo que,
cada atributo que se selecciona se descarta para la siguiente prueba.

99
rboles de decisin: Algoritmo ID3
Entropa
Medida de la incertidumbre existente ante un conjunto de mensajes, del cual va a
recibirse uno solo.

En general, un atributo que puede ayudar a discriminar ms objetos, tiende a reducir ms la


entropa, y por tal motivo, debe ser seleccionado como un nodo de prueba o de seleccin para
la siguiente subdivisin.
n
Entropia( S ) pi log 2 pi
1
Donde:
S: es una coleccin de objetos
Pi : es la probabilidad de los posibles valores
i: las posibles respuestas de los objetos

Para una muestra homognea la entropa es igual a 0, y por el contrario si la distribucin de


objetos que pertenecen a una clase es la misma, entonces la entropa es igual a 1, o sea es la
mxima incertidumbre.
Si en el clculo de la entropa se presentara una proporcin 0.0, entonces se tomar la expresin
100
0 log2 0 como igual a 0.
rboles de decisin: Algoritmo ID3
Ganancia de Informacin
Medida de discriminacin, un indicador del siguiente atributo a ser seleccionado para
continuar con el proceso de divisin, discriminando el atributo seleccionado entre los
dems atributos an no clasificados, y se calcula utilizando la frmula:

| Sv |
GI ( S , A) Entropia( S ) Entropia( Sv)
vV ( A) | S |

Donde:
S : es una coleccin de objetos
A : son los atributos de los objetos
V(A) : Conjunto de valores que A puede tomar

Ross Quinlan define el esquema del algoritmo ID3, el cual adopta los siguientes pasos:
1. Calcular la entropa para todas las clases.
2. Seleccionar el mejor atributo basado en la reduccin de la entropa.
3. Iterar hasta que todos los objetos sean clasificados.
101
rboles de decisin: Algoritmo ID3 Ejemplo

ATRIBUTO
Alumno Nota
Punt. y asist. Participacin Aprovechamiento

1 No asiste Media Excelente Exento


2 Asiste Alta Bueno Exento
3 No asiste Media Bueno Final
4 No asiste Baja Bueno Final
5 Asiste Alta Regular Final
6 Asiste Baja Deficiente Extraordinario

7 No asiste Media Regular Extraordinario

102
rboles de decisin: Algoritmo ID3 Ejemplo

103
rboles de decisin: Algoritmo ID3 Ejemplo

Variable Ganancia de informacin


(variable)
Puntualidad y 1.56-(4*1.5/7+3*1.58/7)
Asistencia =0.025
Participacin 1.56-(2*1/7+3*1.58/7+2*1/7)
=0.311
Aprovechamiento 1.56-
(1*0/7+2*1/7+3*0.92/7+1*0/7)
=0.88

104
rboles de decisin: Algoritmo ID3 Ejemplo
Tomando todos estos datos y calculando la ganancia de informacin de todos los atributos, nos
damos cuenta que el atributo "Aprovechamiento" es el mejor atributo, dado que posee la mayor
ganancia de informacin, de tal manera que se selecciona como un nodo de prueba. Quedando
el rbol de la siguiente manera:

Como los valores de "Bueno" y "Regular" todava no llegan a una respuesta, se necesita realizar
de nuevo el clculo para ellos, pero ahora solo tomando los atributos "Puntualidad y Asistencia"
y "Participacin", discriminando al atributo "Aprovechamiento" porque ya ha sido tomado como
prueba.

105
rboles de decisin: Algoritmo ID3 Ejemplo
Entonces para "Aprovechamiento = Bueno" se tiene:

ATRIBUTO
Alumno Nota
Punt. y asist. Participacin Aprovechamiento
2 Asiste Alta Bueno Exento
3 No asiste Media Bueno Final
4 No asiste Baja Bueno Final

106
rboles de decisin: Algoritmo ID3 Ejemplo
Entonces para "Aprovechamiento = Bueno" se tiene:

Ganancia de informacin
Variable
(Variable)
Puntualidad y
0.92-[2*0/3+1*0/3] = 0.92
asistencia
107
Participacin 0.92-[1*0/3+1*0/3+1*0/3] = 0.92
rboles de decisin: Algoritmo ID3 Ejemplo
("Aprovechamiento = Bueno)
Observando los resultados obtenidos, vemos que la ganancia de informacin de los 2 atributos
Puntualidad y Asistencia y Participacin es 0.0 para ambos casos, por tal motivo la seleccin
del nodo pregunta puede ser cualquiera de ellos.

Observamos, haciendo una rpida revisin para Aprovechamiento = Regular, que tambin
toma los mismos datos, por lo que, por convencin tomamos el atributo Puntualidad y
Asistencia como nodo pregunta.

Hasta ah donde concluye el rbol de decisin, quedando de la siguiente manera:

108
Reducciones lineales
Debido a la dificultad de calcular las complejidades en muchos de los problemas,
trataremos de calcular la complejidad en problemas similares.

Un problema se reduce a otro si podemos transformar casos del primer problema en


casos del segundo, de forma que al resolver el transformado proporcione una solucin
al original (problemas equivalentes).

Por ejemplo distintas formas de elevar a potencias, algoritmos de multiplicacin,


Se pueden considerar la potencia y la multiplicacin como problemas equivalentes ( e
incluso la divisin):
x2 x x
( x y)2 ( x y)2
x y
4
1
x2 x
1 1

x x 1
Y, por lo tanto, si mejoramos un algoritmo mejoraremos los otros 109
Reducciones lineales: Definiciones

Sean A y B dos problemas.

A es linealmente reducible a B:

AlB si O(t(n)) algoritmo para B O(t(n)) para A.

Si AlB y BlA son linealmente equivalentes AlB

AlB es una relacin de equivalencia

110
NP-COMPLETITUD

Problemas para los que no se conoce ningn algoritmo eficiente:


-Viajante de comercio
-Mochila
-Coloreado de grafos
-Ciclos Hamiltonianos
-Caminos simples largos en un grafo
-.

Hay problemas difciles de resolver pero de los que se puede verificar la


validez de una solucin:
-Comprobar si una sucesin de vrtices es un ciclo Hamiltoniano.
-Ver si un nmero es divisor de otro.

-.

es mas fcil verificar la validez de una solucin que encontrarla?

111
NP-COMPLETITUD: Clases P y NP
A algoritmo eficiente si AO(p(n)) donde p(n) es un polinomio
(hay que tener en cuenta constantes: n1000 es un disparate para n
relativamente grande)

Clase P
Clase de problemas resolubles mediante un algoritmo de tiempo
polinmico.
Problemas resolubles en tiempo polinmico con una mquina de Turing
determinsta.
(esto es, el tiempo de ejecucin del algoritmo en un ordenador viene
descrito por una frmula polinmica).

Clase NP [Non-Deterministic Polynomial-time]


Problemas resolubles en tiempo polinmico con una mquina de Turing
no determinsta. pero de los que se puede verificar la validez de una
solucin.
Un problema A es verificable eficientemente si x solucin de A.

La teora de la NP-completitud estudia la nocin de propiedades


verificables polinmicamente. 112
NP-COMPLETITUD: Clases P y NP

Sea X un problema ( por ej.: X={G/ G grafo Hamiltoniano} )

Sea Q, espacio de prueba, para X ( Q={sucesiones de vrtices de un grafo} )

Sistema de prueba F={<x,q>/ xX y qQ} XxQ . Esto significa que

(xX) (qQ )/<x,q>F y tambin: (xX) (qQ )/<x,q>F

En el ejemplo:
X={G/ G grafo Hamiltoniano}
Q={sucesiones de vrtices de un grafo}
Decimos que <G,s>F s es un ciclo Hamiltoniano de G.

113
NP-COMPLETITUD: Clases P y NP
NP es la clase de problemas que admiten un sistema de pruebas F XxQ / p(n)
polinomio y un algoritmo AO(p(n)) tal que:

-xX qQ /<x,q>F (q se denomina prueba o certificado) y, adems


-Tamao qtamao p(n), donde n es el tamao de x.
-<x,q> el algoritmo A puede verificar si <x,q> pertenece o no a F

La clase NP contiene los problemas con un sistema de prueba eficiente. Todo caso-si
(con solucin) debe tener por lo menos un q, certificado, verificable rpidamente.

PNP O(2nq) PNP?


NP-completoNP-P
114
NP-COMPLETITUD: Clases P y NP
Ejemplos de problemas NP

El Viajante: Dado un conjunto de n nodos, y las distancias entre todos los pares de nodos,
y un nmero k, decidir si hay un circuito cerrado (es decir, un "vendedor Tour ") que visita
cada nodo exactamente una vez y tiene longitud total como mximo k. El certificado es la
secuencia de nodos en el viaje.

Suma de subconjunto: Dada un conjunto de nmeros N={Ai} y un nmero T, decidir si hay


un subconjunto de N que sumen T. El certificado es la lista de elementos de este
subconjunto.

Programacin lineal: Dada una lista de m desigualdades lineales sobre n variables Ui (una
desigualdad lineal tiene la forma aiui b), decidir si existe una asignacin de nmeros ra
las variables Ui que satisface todas las desigualdades. El certificado es la asignacin.
115
NP-COMPLETITUD: Clases P y NP
Ejemplos de problemas NP
Isomorfismo entre grafos: Dadas dos grafos M1, M2, decidir si M1 y M2 son el mismo grafo,
declarando el cambio de nombre de los vrtices de un grafo a otro. El certificado es la
permutacin: :[n] [n] tal que M2 es igual a M1 despus de reordenar los ndices de M1
segn .

Nmeros compuestos: Dado un nmero N, decidir si N es un nmero compuesto (es decir,


no primo). El certificado es la factorizacin de N.

Conectividad: Dado un grafo G y dos vrtices s, t en G, decidir si s est conectado a t en G.


El certificado es el camino de s a t.

De algunos problemas no se conoce un algoritmo polinomial-tiempo, luego no hay


pruebas de que estn en P. El viajante, los problemas de programacin lineal son
conocidos como NP-completos, lo que implica que no estn en P a menos que P = NP.
Del problema del isomorfismo entre grafos y los problemas de factorizacin no se
conocen algoritmos ni en P ni en NP-completos. 116

Vous aimerez peut-être aussi