Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TecnicasDisenoAlgoritmos PDF
TecnicasDisenoAlgoritmos PDF
Algoritmos
Algoritmos
Algoritmos voraces
Divide y conquista
Programación dinámica
Backtracking
1
Algoritmos Voraces
Algoritmos Voraces
2
Algoritmos Voraces
Algoritmos Voraces
3
Ejemplo Camino Mínimo
Mapa
4
Ejemplo Camino Mínimo
Posibles soluciones
Comenzar con un conjunto vacío T y seleccionar
en cada etapa la arista más barata no
considerada previamente
Seleccionar un nodo y construir un árbol a partir
de él
5
Algoritmo de Kruskal
Algoritmo de Kruskal
6
Algoritmo de Kruskal
Algoritmo de Kruskal
7
Algoritmo de PRIM
Algoritmo de PRIM
8
Algoritmo de PRIM
9
Algoritmo de Dijkstra
Algoritmo de Dijkstra
function Dijkstra(L[][])
C Å {1, 2, 3, …, n}
D[1] Å 0, P[1] Å {1}
Para i = 2 hasta n hacer
D[i] Å ∞, P[i] Å {}
Mientras |C| > 1 hacer
v Å min{D[u]: u ∈ C}
C Å C \ {v}
para cada w ∈ C hacer
si D[w]>D[v]+L[v,w] entonces D[w]ÅD[v]+L[v,w]
P[w]ÅP[v]∪{w}
10
Ejemplo 1
10 50
5 2
100 30
20
5
10
4 3
50
Ejemplo 2
11
Divide y Vencerás
Divide y Vencerás
12
Multiplicación de Números Grandes
981
1234
3924
2943
1962
981
1210554
Estrategia
13
Estrategia
Estrategia
14
Observaciones
Observaciones
15
Observaciones
16
Comentario
Cuestión de Análisis
17
Búsqueda Binaria
Búsqueda Binaria
18
Búsqueda Binaria
function busquedabin(T[], x)
{ si n = 0 o x > T[n] entonces devolver n+1;
devolver binrec(T, 1, n, x);
}
Análisis
19
Problema de Ordenar un Arreglo
20
Ordenación por Fusión
procedimiento ordenarporfusion(T[n])
{ si n es suficientemente pequeño
entonces ordenarporinsertar(T)
en caso contrario
U[1, …, n/2] Å T[1, …, n/2]
V[1, …, n/2] Å T[n/2 + 1, …, n]
ordenarporfusion(U)
ordenarporfusion(V)
fusionar(U,V,T)
}
21
Análisis
Notemos que:
Separar la matriz T en dos partes requiere un tiempo lineal
La función fusionar también requiere un tiempo lineal
Sea g(n) ∈ Θ(n)
Por tanto, la complejidad de la función queda
definida como:
T(n) = 2T(n/2)) + g(n)
De lo anterior se concluye que
T(n) ∈ Θ(n log2 n)
Ordenación Rápida
22
Ordenación Rápida
Ordenación Rápida
23
Análisis
1 n
t ( n) = ∑ ( g (n) + t (q − 1) + t (n − 1))
n i =1
Análisis
24
Multiplicación de Matrices
Algoritmo de Strassen
25
Algoritmo de Strassen
m2 + m3 m1 + m2 + m5 + m6
C=
m1 + m2 + m4 − m7 m1 + m2 + m5 + m5
Algoritmo de Strassen
26
Algoritmo de Strassen
Algoritmo de Strassen
27
Programación Dinámica
Programación Dinámica
28
Ejemplo 1: Coeficiente Binomial
4 3 3 4 3 3
C = C + C C = C + C
2 1 2 3 2 3
3 2 2 3 2 2
C = C + C C = C + C
1 0 1 2 1 2
2 1 1
C = C + C
1 0 1
29
Ejemplo 1: Coeficiente Binomial
30
Ejemplo 2: Devolver Cambio
31
Ejemplo 2: Devolver Cambio
Cantidad 0 1 2 3 4 5 6 7 8
d1 = 1 0 1 2 3 4 5 6 7 8
Monedas
d2 = 4 0 1 2 3 1 2 3 4 2
d3 = 6 0 1 2 3 1 2 1 2 2
NOTAS:
• Si alguno de los elementos a comparar caen fuera de la matriz, se consideran
a estos valores como +∞
• Si ambos elementos a comparar caen fuera de la tabla, se asigna +∞ a la
casilla correspondiente
32
Ejemplo 3: Algoritmo de Floyd
33
Ejemplo 3: Algoritmo de Floyd
34
Ejemplo 3: Algoritmo de Floyd
0 5 ∞ ∞
50 0 15 5
D0 = L =
30 ∞ 0 15
15 ∞ 5 0
30
1 3
15 0 5 ∞ ∞ 0 5 20 20
50 0 15 5 50 0 15 5
5 50 5 D1 = D2 =
15 30 35 0 15 30 35 0 15
15 20 5 0 15 20 5 0
15
2 4
5
0 5 20 10 0 5 15 10
45 0 15 5 20 0 10 5
D3 = D4 =
30 35 0 15 30 35 0 15
15 20 5 0 15 20 5 0
Vuelta Atrás
(Backtracking)
35
Introducción
Introducción
En el proceso de expansión:
No se tienen reglas fijas para ejecutarla –
dependiente del problema
El número de combinaciones a explorar puede
crecer de forma exponencial
En la práctica, es necesario implementar reglas que
limiten el número de posibles expansiones
Hay que tener cuidado en el tipo de restricciones a
implementar (costo para ejecutarla, preservar cualquier
solución válida del problema)
36
Condiciones para Implementar
Backtracking
La solución parcial Sk de un problema P se debe
poder expresar como una tupla
Sk = <s1, s2, …, sk>
Cada si en Sk representa un estado válido en P, donde S
es una solución parcial de P con dimensión “k”
A partir de sk se busca un conjunto E = {st: st es un estado
válido de P y st no forma parte de Sk}
Una expansión consiste en seleccionar un sx ∈ E:
Sk+1 = < s1, s2, …, sk, sx>
E = E \ {sx}
37
Ejemplo: El problema de las 8 Reinas
S = <4,7,3,8,2,5,1,6>
Restricciones:
Los valores de ri están restringidos al conjunto T =
{1, 2, 3, 4, 5, 6, 7, 8}
Dos reinas no pueden situarse en la misma
columna y en la misma fila
Por la definición de S, no hay 2 reinas en la misma fila
No pueden haber dos xi en S con el mismo valor
Dos reinas no pueden situarse en la misma
diagonal
Si (x,y) y (x’,y’) representan la posición de dos reinas,
entonces |x – x’| ≠ |y – y’|
38
Ejemplo: El problema de las 8 Reinas
39
El Problema de las Parejas Estables
HOMBRES
Pepe Juan Pedro José
Rosa Rita Rita Maria
Maria Petra Petra Rosa H[i,j]: preferencia del i-ésimo
Petra Rosa Rosa Petra hombre por las mujeres
Rita Maria Maria Rita
40
El Problema de las Parejas Estables
41