Sie sind auf Seite 1von 46

Algoritmos

Fabio Martnez Carrillo

Matematicas
Discretas
Universidad Industrial de Santander - UIS

31 de octubre de 2016

1/28

Temas que se cubriran

Estudio de algunos algortimos clasicos


Buscar en listas
Ordenamiento

de algoritmos
Diseno
Complejidad computacional.

2/28

Algoritmos

Definicion
Es una secuencia de
instrucciones precisas para realizar

un calculo
o resolver un problema.
Herramienta para traducir un
problema dentro de un

contexto matematico

for cada trayectoria do


if || > 3 then

for cada caracterstica cinematica


i do
calcular Ft = F (i)
for cada
modo k do


if Ft kt tk then
kt = kt1 + (Ft kt1 )

2
(tk )2
=
kt1 Ft

k
(1 ) (t1
)2
k
tk = t1
+
end if
end for
K
X
k
Normalizar tk tal que
wt = 1
k =1

Listar en orden decreciente

tk
k
t

Mantener
B
modos:

K X
k
arg mn b;
wt > T

b=1

k=1

end for
end if
end for

3/28

Ejemplo
Escriba un algoritmo para encontrar el alumno con nota mas alta en el

primer parcial, en el grupo de matematicas


discretas.
Pseudocodigo
proposicional
relacion
C++, java

4/28

Propiedades de los algoritmos

Entrada
Salida

Definicion
Funcionamiento correcto
Finito
Efectividad
Generalidad

5/28

Agenda

Algoritmos de Busqueda

Algoritmos de ordenamiento

Algoritmos Voraces (greedy)

6/28

Algoritmos de Busqueda

Definicion
Localizar un elemento en una lista ordenada
Localizar un elemento x en una lista a1 , a2 , . . . , an , (x = ai )

7/28

Busqueda lineal

Busqeda lineal (x : a1 , a2 , . . . an ): enteros distintos


i := 1
while (i n x 6= 0) do
i := i + 1
end while
if i n then
index := i
else
index := 0
end if
return: index

Algortimo intuitivo que hace una busqueda secuencial, pero


normalmente tiene un costo computacional alto.

8/28

Busqueda Binaria
Busqeda Binaria (x : a1 , a2 , . . . an ): orden incremental
i := 1, punto inicial desde izq
j := n, punto inicial desde der
while (i < j) do
m := b(i + j)/2c
if x > am then
i := m + 1
else
index j := m
end if
if x = ai then
index := i
else
index := 0
end if
end while
return: index

Dada una lista a1 , a2 , . . . , an , donde a1 < a2 < . . . < an . Se inicia comparando


x en el termino medio am , donde m = b(n + 1)/2c.
Si x > am entonces la busqueda se hace en la segunda mitad de la lista
Si x < am entonces la busqueda se hace en la primera mitad de la lista
9/28

Algoritmo de busqueda de Google: PageRank

Familia de algoritmos utilizados para asignar de forma numerica


la
relevancia de los documentos indexados por un motor de busqueda

Gateo: indexacion

asociacion:
> factores
control de SPAM
10/28

Algoritmo de busqueda de Google: PageRank

Familia de algoritmos utilizados para asignar de forma numerica


la
relevancia de los documentos indexados por un motor de busqueda

Gateo: indexacion

asociacion:
> factores
control de SPAM
10/28

PageRank para la uis.edu.co

http://www.google.com/insidesearch/howsearchworks/thestory/
http://www2007.org/papers/paper570.pdf

11/28

Agenda

Algoritmos de Busqueda

Algoritmos de ordenamiento

Algoritmos Voraces (greedy)

12/28

Que es orden?

Definicion
Manera de colocar/categorizar elementos/entidades segun
un determinado
criterio o una determinada norma.
13/28

Algoritmo de ordenamiento
Es un conjunto de operaciones que pone
elementos en una lista en una secuencia dada
de orden
por una relacion
Subconjunto de n elementos
X = e1 , e2 , . . . , en de un conjunto de
referencia Y , X Y

14/28

Algoritmo de ordenamiento
Es un conjunto de operaciones que pone
elementos en una lista en una secuencia dada
de orden
por una relacion
Subconjunto de n elementos
X = e1 , e2 , . . . , en de un conjunto de
referencia Y , X Y
de
En Y se definen propiedades de relacion
orden total con las propiedades reflexiva,

antisimetrica
y transitiva

14/28

Algoritmo de ordenamiento
Es un conjunto de operaciones que pone
elementos en una lista en una secuencia dada
de orden
por una relacion
Subconjunto de n elementos
X = e1 , e2 , . . . , en de un conjunto de
referencia Y , X Y
de
En Y se definen propiedades de relacion
orden total con las propiedades reflexiva,

antisimetrica
y transitiva
Encontrar una secuencia de los elementos
X he (1), . . . , e (n)i tal que
e (1) . . . e (n)

14/28

Algoritmos de ordenamiento

Algoritmos basicos
(Intuitivo)

por insercion

por seleccion
por intercambio directo (burbuja)
..
.

Algoritmos eficientes (NO Intuitivo)


Mergesort
Quicksort
Heapsort
Shellsort
..
.
Libro: The Art of Computer Programming

15/28

Algoritmo de Burbuja

Uno de lo mas simples algoritmos de ordenamiento. Sucesivamente


compara elementos adyacentes y si estan en orden equivocado los
intercambia (swap).
16/28

Algoritmo de Burbuja

Algoritmo Burbuja (a1 , a2 , . . . an ): numeros reales n 2


for i := 1 hasta n 1 do
for j := 1 hasta n i do
if aj > aj+1 then
swap(aj , aj+1 )
end if
end for
end for
a1 , a2 , . . . , an : orden incremental

Uno de lo mas simples algoritmos de ordenamiento. Sucesivamente


compara elementos adyacentes y si estan en orden equivocado los
intercambia (swap).

16/28

Algoritmo de Burbuja

Uno de lo mas simples algoritmos de ordenamiento. Sucesivamente


compara elementos adyacentes y si estan en orden equivocado los
intercambia (swap).
16/28


Algoritmo de insercion

Algoritmo simple de ordenamiento. El j-esimo elemento es insertado


de los j 1 elementos ordenados.
en la correcta posicion
17/28


Algoritmo de insercion

(a1 , a2 , . . . an ): numeros reales n 2


Algoritmo insercion
for j := 2 hasta n do
i := 1
while (aj > ai ) do
i := i + 1
end while
m := aj
for k := 0 hasta j i 1 do
ajk := ajk 1
end for
ai := m
end for
a1 , a2 , . . . , an : orden incremental

Algoritmo simple de ordenamiento. El j-esimo elemento es insertado


de los j 1 elementos ordenados.
en la correcta posicion

17/28


Algoritmo de insercion

Algoritmo simple de ordenamiento. El j-esimo elemento es insertado


de los j 1 elementos ordenados.
en la correcta posicion
17/28

Algoritmo Quicksort

18/28

algoritmo Quicksort
Descripcion

Basado en la estrategia de

divide y venceras.
Algoritmo computacional de

ordenamiento rapido.
Apropiado en aplicaciones
complejas con capacidades
de manejar grandes
volumenes de datos. a
a
Autor del Algortimo: C. A. R. Hoare (1962).

Mas usado en el mundo.

19/28

algoritmo Quicksort
Descripcion

de un pivote
Definicion

20/28

algoritmo Quicksort
Descripcion

de un pivote
Definicion
Los elementos a la izquierda
del pivote son menores y los
de la derecha son mayores
que este.

20/28

algoritmo Quicksort
Descripcion

de un pivote
Definicion
Los elementos a la izquierda
del pivote son menores y los
de la derecha son mayores
que este.
Ordenamos por separado y de
forma recursiva

20/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Corriendo el algoritmo Quicksort

21/28

Agenda

Algoritmos de Busqueda

Algoritmos de ordenamiento

Algoritmos Voraces (greedy)

22/28

Algoritmos Voraces (greedy)

Definicion
optima

Sigue una heurstica consistente en elegir la opcion


en cada
general optima.

paso local con la esperanza de llegar a una solucion

Problemas de optimizacion
Ejemplos: encontrar la ruta mas corta, codificar msjs con menos
bits posibles, otros.
23/28

Ejemplo

Cambio con monedas

Suponga que su maquina


tiene para dar cambio unicamente monedas

de 1, 5, 10, 25 centimos.
Cual sera el algoritmo para dar n centimos
de
cambio en estas denominaciones?.
*Desarrolle una prueba para dar un cambio de 67.

24/28

Ejemplo
Cambio con monedas

Suponga que su maquina


tiene para dar cambio unicamente monedas

de 1, 5, 10, 25 centimos.
Cual sera el algoritmo para dar n centimos
de
cambio en estas denominaciones?.
*Desarrolle una prueba para dar un cambio de 67.
Algoritmo cambios (c1 , c2 , . . . cr : denominaciones de moneda, c1 > c2 > . . . >
cr , n es un entero positivo)
for i := 1 hasta r do
ci usadas
di := 0, di cuenta las monedas de denominacion
while (n ci ) do
di := di + 1
n := n ci
end while
ci
di numero
de monenas de la denominacion

end for
devolver cambio

24/28

25/28

26/28

27/28


Muchas gracias por su atencion

28/28