Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Discretas
UNIDAD 4
FUNCIONES Y ALGORITMOS
TEMA 2:
ALGORITMOS
2
SUBTEMAS
8 13 20 27
Ejemplos de algoritmos
Orden (sort)
Inserción por orden (insertion sort)
Si añadimos el 16:
Primero se compara 16 y 27, como 27
es mayor se mueve un índice a la
derecha.
8 13 20 27
Ejemplos de algoritmos
Orden (sort)
Inserción por orden (insertion sort)
Después se compara 16 y 20, como 20
es mayor se mueve un índice a la
derecha:
8 13 20 27
Ejemplos de algoritmos
Orden (sort)
Inserción por orden (insertion sort)
Siguiendo el algoritmo, el 16 se
compara con 13, como 13 es menor el
16 ocupa el lugar donde estaba el
número 20:
8 13 16 20 27
Ejemplos de algoritmos
Orden (sort)
Algoritmo:
Entradas:
» s, sucesión
» n, cantidad de elementos en s
Salidas:
» s, (ordenada)
Ejemplos de algoritmos
Orden (sort)
Algoritmo:
inserción_por_orden (s, n) {
for i=2 to n {
//guardar s[i] en valor para //insertarla en el lugar correcto.
valor=s[i]
j=i-1
//si valor < s[j], se mueve s[j] a la derecha para dejar lugar
a s[i].
while (j >= 1 ^ valor <s[j]) {
s[j+1]=s[j]
j=j-1
}
s[j+1]=valor//insertar valor
}
}
Ejemplos de algoritmos
Tiempo y espacio para los algoritmos
Se debe tener en consideración el
tiempo (por ejemplo, el número de
pasos o sentencias totales) y el espacio
(el número de variables, longitud
(length) o tamaño (size) de las
sucesiones); esto servirá para
comparar entre varios algoritmos que
resuelven el mismo problema.
Ejemplos de algoritmos
Algoritmos aleatorios
» Un algoritmo aleatorizado no requiere
datos de entradas ni intermedios para
que pueda realizar una determinada
acción, esto quiere decir que en una
sentencia X requiere tomar un valor
aleatorio. Ejemplo:
» Suponga tener una función rand(i, j) que
devuelve un número aleatorio entre los
enteros i y j el mismo que utilizaremos
para desordenar una sucesión de la
siguiente forma:
Ejemplos de algoritmos
Algoritmos aleatorios
Entradas:
» s, sucesión con números ordenados
» n, cantidad de elementos en s
Salida:
» s, desordenado
Ejemplos de algoritmos
Algoritmos aleatorios
Algoritmo:
desordena (s, n) {
for i=1 to n-1{
valor=s[i]
indice_aleatorio=rand(i, n)
s[i]= s[indice_aleatorio]
s[indice_aleatorio]=valor
}
}
Ejemplos de algoritmos
Algoritmos aleatorios
Supongamos que s tiene la sucesión:
17 9 5 23 21
de entrada se va a desordenar, primero se cambia s[i]
y s[índice_aleatorio] donde i=1 e
índice_aleatorio=rand(1,5). Si j=3 el intercambio sería:
5 9 17 23 21
Luego, i=2. Si índice_aleatorio=rand(2, 5)=5, el
intercambio sería:
5 21 17 23 9
En conclusión, la salida depende del número aleatorio
que genere la función rand(i, j).
Análisis de algoritmos
Un algoritmo puede no ser óptimo
para ciertos tipos de entradas, por
ejemplo, el algoritmo de inserción
por orden sólo es óptimo cuando la
cantidad de elementos es menor o
igual a 50, más de eso no lo es; por
ello se debe realizar análisis de
algoritmos que es una práctica para
conocer el tiempo y el espacio que
ocupa al ejecutarlo.
Análisis de algoritmos
Representación de lo que tarda un algoritmo (tiempo=y) respecto a la
cantidad de datos n
La ecuación:
Algoritmos Recursivos
Algoritmo factorial(n):
Los pasos que realiza un algoritmo que
retorne el factorial de n ”factorial(n)”,
son:
1. Preguntar si n es igual a 0, si es
True, retorna 1
2. Caso contrario retorna:
“n * factorial(n – 1)”
Algoritmos Recursivos
Algoritmo factorial(5):
5 * factorial(5 - 1) factorial(4) factorial(3)
1 1 * factorial(1 - 1) 2 * factorial(2 - 1)
Algoritmos Recursivos
Algoritmo factorial(5):
factorial(5)
= 120 4 * factorial(4 - 1) 3 * factorial(3 - 1)
5 * 24 = 120 4 * 6 = 24 3*2=6
1 1 * factorial(1 - 1) 2 * factorial(2 - 1)
1*1=1 2*1=2
PREGUNTAS
• Ejemplos de algoritmos
• Análisis de algoritmos
• Algoritmos recursivos
27
BIBLIOGRAFÍA
• Espinosa Armenta, R. (2010).
Matemáticas Discretas. ALFAOMEGA.
• Richard, J. (2015). Matemáticas
Discretas. PEARSON.
• T, V. (2008). Matemáticas Discretas con
Teoría de Gráficas y Combinatoria. MC
GRAW HILL.