Está en la página 1de 22

Estructura de Datos

Ing. Urbano de
Jesus Flores
Zaragoza
Algoritmos
Algoritmos
 Definición
 Procedimiento computacional bien definido
que toma un conjunto de valores de entrada y
produce un conjunto de valores de salida. El
algoritmo es la secuencia de pasos que
transforma los valores de entrada en valores
de salida
 Ejemplo: Algoritmo de ordenamiento:
• Entrada: Secuencia de números <a1, a2.., an>
• Salida: Secuencia de números <a1’, a2’.., an’> tales
que: a1’ ≤ a2’ … ≤ an’

Ing. Urbano de J. Flores


Algoritmos
 Instancia del problema: dada una
entrada <31,41,10,5> el algoritmo de
ordenamiento debe dar como salida
<5,10,31,41>
 Existen diversos algoritmos de
ordenamiento con ventajas y
desventajas
 Algoritmo correcto: Para cualquier
instancia termina con la salida
correcta
Ing. Urbano de J. Flores
Algoritmos
 Otra definición: Secuencia finita de
instrucciones, cada una de las cuales
tiene un significado claro y puede ser
realizado con una cantidad finita de
esfuerzo en un intervalo de tiempo
finito

Ing. Urbano de J. Flores


Algoritmos
 Para resolver un problema
 Debe formularse en términos de un
modelo formal
 Una vez formulado el modelo se intenta
encontrar una solución en términos del
modelo
 Debe encontrarse una estructura de
datos adecuada

Ing. Urbano de J. Flores


Ejemplo
 Es posible utilizar un
modelo matemático para
diseñar la secuencia de los E
semáforos en una
intersección complicada.
Para construir el patrón de D
luces se debe crear un
programa que acepte
como entrada un conjunto
de vueltas permitidas en
la intersección y C
A
particionar este conjunto
en el menor número de
grupos posibles de vueltas B
permitidas sin ocasionar
colisiones(¿modelar?)
 (...) Ing. Urbano de J. Flores
Ejemplo
 Se puede modelar
AB AC AD
como un grafo
 Un grafo es un
conjunto de puntos
llamados vértices y BA BC BD
lineas que unen los
puntos llamadas
aristas
DA DB DC
 Los vértices son las
vueltas posibles
 Las aristas son las
vueltas no EA EB EC ED
simultáneas
 (…)

Ing. Urbano de J. Flores


Estructura de datos
AB AC AD BA BC BD DA DB DC EA EB EC ED

AB 1 1 1 1

AC 1 1 1 1 1

AD 1 1 1

BA

BC 1 1 1

...

(…)
Ing. Urbano de J. Flores
Solución
 Una vez representado el problema
podemos intentar buscar una solución
 Problema de coloreado de grafos:
Consiste en encontrar una combinación
mínima de colores tales que no existan
dos vértices conectados del mismo color
 Es un problema NP-completo
 El primer enfoque es buscar una solución
exahustiva
 Un enfoque mas conveniente es buscar
una solución heurística Ing. Urbano de J. Flores
Algoritmo “greedy”
 Primero se selecciona un color y se
colorean la mayor cantidad de vértices,
luego se seleeciona otro color y se realiza
lo mismo. Para colorear un vértices con
un color nuevo se realiza lo siguiente:
 Seleccionar un vértice no coloreado y se
colorea con el color nuevo
 Busca en la lista de vértices no coloreados t
determina si hay una arista entre los vértices,
si no la hay, se colorea con el color nuevo

Ing. Urbano de J. Flores


Algoritmo “greedy”
 Se le llama
“greedy” porque
intenta colorear 3
tantos vértices
como pueda sin 1 6 2
importar
desventajas 5

potenciales
 (...)

Ing. Urbano de J. Flores


Aplicación del algoritmo
“greedy”
 Coloreamos de
azul AB, por lo
Color Vuelta
tanto se puede
Azul AB,AC,AD,
colorear AC,AD,BA, BA,DC,ED
DC y ED Rojo BC,BD,EA
 Continuamos con Verde DA,DB
el color rojo: Amarillo EB,EC
BC,BD y EA

Ing. Urbano de J. Flores


Algoritmo
 Una vez que el problema se ha
modelado se formula el algoritmo
 El algoritmo empieza a definirse en
forma general y luego se refina en
niveles

Ing. Urbano de J. Flores


Nivel Inicial
procedure greedy(var G:GRAPH; var newclr: SET);
begin
newclr := ;
for each vertice no coloreado v de G do begin
if v no es adyacente a ningun vertice en newclr then begin
marca v coloreado;
agrega v a newclr;
end;
end;
end;

(...)

Ing. Urbano de J. Flores


Primer Refinamiento
procedure greedy(var G:GRAPH; var newclr: SET);
begin
newclr := ;
for each vertice no coloreado v de G do begin
found := false;
for each vertice w de newclr do
if hay una arista entre v y w en G then
found := true;
if found = false then begin
marca v coloreado;
agrega v a newclr;
end;
end;
end; (...)

Ing. Urbano de J. Flores


Segundo Refinamiento
procedure greedy(var G:GRAPH; var newclr: SET);
var
found : boolean;
v, w: integer;
begin
newclr := ;
v:= primer vertice no coloreado de G;
while v<>null do begin
found := false;
w := primer vertice de newclr
while w<>null do begin
if hay una arista entre v y w en G then
found := true;
w := siguiente vertice de newclr;
end;
if found = false then begin
marca v coloreado;
agrega v a newclr;
end;
v := siguiente vertice no coloreado de G
end;
end; (...)
Ing. Urbano de J. Flores
Importancia de los
algoritmos
 Si las computadoras fueran
infinitamente rápidas y la memoria
fuera gratis, habría razón para
estudiar los algoritmos? (…)
 Las computadoras no son
infinitamente rápidas y la memoria
cuesta, por eso debemos hacer
algoritmos eficientes
Ing. Urbano de J. Flores
Eficiencia
 Los algoritmos pueden diferir en
eficiencia
 Insertion sort: c1n2, es mas rápido para
n pequeñas
 Merge sort: c2nlogn

Ing. Urbano de J. Flores


Eficiencia (Ejemplo)
 Computadora A  Computadora B
 Insertion Sort  Merge Sort
 1,000,000,000 ips  10,000,000 ips
 2n2  50nlogn
 1,000,000  1,000,000
numeros numeros
 2(106)2/109=2000  50(106)log106/107
=100

Ing. Urbano de J. Flores


Problema
Determinar para cada f(n) el tamaño mas grande de n que
puede ser resuelto en el tiempo t asumiendo que el programa
toma f(n) microsegundos
f(n)\t 1s 1m 1h 1d 1 mes 1 año 1 siglo

n2

n3

2n

n!

(…)
Ing. Urbano de J. Flores
Ejercicios
 En una computadora se realizan pruebas
de algoritmos de ordenamientos por
insercion (8n2 pasos) y por merge
(64nlogn pasos), para que valores de n es
mas rápido el algoritmo de insercion?
 Cual es el valor mas pequeño en el que
un algoritmo de 100n2 es mas rápido que
un algoritmo de 2n
 (…)

Ing. Urbano de J. Flores