Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEMANA 1
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 1
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 1
ÍNDICE
3
ESTE DOCUMENTO CONTIENE LA SEMANA 1
INTRODUCCIÓN A LOS ALGORITMOS
OBJETIVOS ESPECÍFICOS
INTRODUCCIÓN
Cuando se presenta un problema en el entorno social, familiar o laboral siempre se buscan las
mejores opciones para su solución y, dependiendo del problema, también se busca resolverlo en
el menor tiempo posible.
El cerebro humano está diseñado para responder ante situaciones de manera automática y
también para analizar distintos caminos que permitan enfrentar esas situaciones. En principio se
busca entender la situación y de acuerdo a esa información recabada se da una respuesta. Todo
esto se hace siguiendo pasos o instrucciones.
En esta semana se estudiarán los algoritmos, sus tipos y aplicaciones, así como también los
elementos necesarios para la resolución de un problema haciendo uso de estos.
4
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1. INTRODUCCIÓN A LOS ALGORITMOS
En la vida cotidiana se pueden encontrar procesos que quizás pasen desapercibidos, pero que en
realidad siguen patrones para llevarse a cabo con éxito. Desde la preparación de un plato de
comida hasta en un sistema computacional pueden encontrarse lineamientos para su ejecución y
resulta difícil imaginar que correspondan tanto a pautas establecidas generadas en la mente del
ser humano como a programas desarrollados en una máquina como un computador. A estos pasos
se les denomina algoritmos y se encuentran en toda actividad realizada consciente o
inconscientemente de la vida diaria.
Con el uso de algoritmos se pueden describir de manera ordenada las instrucciones a seguir para
ejecutar un proceso y solucionar un problema, que puede ir desde un problema sencillo o
cotidiano hasta uno que sea más complejo y requiera un método sofisticado de resolución.
Muchas veces se realizan actividades en las cuales se emplean algoritmos y no se está consciente
de ello, como, por ejemplo, preparar una torta o realizar la limpieza del domicilio.
¿Qué es un algoritmo?
El algoritmo debe tener un fin y contener un número de pasos finito y realizable, que no
conlleve tiempos de ejecución infinitos.
Debe tener pasos definidos y no poseer ambigüedad, presentando reglas para una ejecución
ceñida.
5
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Puede tener desde cero a muchas entradas, pero debe tener al menos una salida luego de su
ejecución.
Así como debe poseer una cantidad exacta de pasos, debe estar pensado para un lapso de
tiempo definido, permitiendo suponer un tiempo de ejecución, optimizando los recursos
implementados para realizar la tarea.
LA LINTERNA NO FUNCIONA
¿TIENE
COLOCAR BATERÍAS
BATERÍAS? NO
SÍ
¿AMPOLLETA
COMPRAR AMPOLLETA
QUEMADA?
SÍ
NO
6
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.3. CLASIFICACIÓN DE ALGORITMOS
La clasificación de un algoritmo viene dada según cuál será su aplicación y los elementos que se
reciben como entrada para realizar los procesos dentro del mismo. Por ejemplo, si se desea
realizar un algoritmo para efectuar un programa que calcule las notas finales de un alumno, se
puede decir que su clasificación será computacional.
1.3.1. COMPUTACIONAL
Los algoritmos computacionales son los que se utilizan para que un computador ejecute ciertas
actividades, obteniéndose resultados a partir de estas. Utilizando un computador se optimiza el
tiempo en que se puede solucionar un problema dado, debido a que se puede obtener
rápidamente una respuesta gracias a su velocidad de procesamiento y, a su vez, si se implementa
en forma correcta el algoritmo y sus reglas, puede ser mucho más confiable la solución.
ABRIR APLICACIÓN
SÍ
7
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.3.2. NO COMPUTACIONAL
LEVANTAR LA BOCINA
SÍ
MARCAR NÚMERO
¿CONTESTAN?
REINTENTAR LLAMADA
NO
SÍ
HABLAR
COLGAR TELÉFONO
8
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.3.3. CUALITATIVO
Los algoritmos cualitativos son aquellos donde no intervienen cálculos o aquellos en cuyos pasos
no se involucra un cálculo numérico. Por ejemplo, las instrucciones para inflar un globo o para
armar un rompecabezas.
ESCOGER GLOBO
INFLAR GLOBO
¿SE
MANTIENE CAMBIAR GLOBO
INFLADO? NO DEFECTUOSO
SÍ
1.3.4. CUANTITATIVO
Los algoritmos cuantitativos son aquellos cuyos pasos dentro del proceso de ejecución están
definidos a través del uso de cálculos numéricos, retornando una salida óptima y confiable.
C = (A) + (B)
IMPRIME VALOR DE C
9
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2. LOS ALGORITMOS Y LA COMPUTACIÓN
Desde que se conocen los algoritmos hasta la actualidad, se ha determinado que la ejecución de
procesos siguiendo lineamientos y reglas optmiza el tiempo de respuesta y los recursos utilizados
para ello. Es por esta razón que se hacen necesarios dentro de cada una de las pequeñas y grandes
aplicaciones informáticas o sistemas automatizados a través del uso de un computador.
Dentro de una organización se pueden fijar escenarios y la acción a llevar a cabo para resolver
cada una de las situaciones que se puedan dar al presentarse un problema específico y con la
ayuda de las aplicaciones destinadas a tal fin se pueden resolver, e incluso preveer, situaciones
fuera de lo normal, como lo es un sistema de alarma contra incendio o un antivirus computacional.
INICIO
A, B, MCD
A, B
F
A! = B MCD = A MCD FIN
A>B
V F
A=A-B B=B-A
10
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.2. COMPLEJIDAD DE LOS ALGORITMOS
2.2.1. DEFINICIÓN
2.2.2. TIPOS
La complejidad se representa con la letra “O”, que no se considera un número, sino una función
que permite calcular la complejidad de acuerdo al crecimiento o cantidad de iteraciones
realizadas.
A. LOG
Son aquellos algoritmos en los cuales el tiempo de ejecución va aumentando según un criterio
logarítmico y esto es independiente del valor de su base siempre y cuando esta sea mayor a 1. En
algunos casos no se menciona la base debido a que carece de importancia. Su notación es O(log
n).
El mejor ejemplo de un algoritmo con complejidad O(log n) es el de búsqueda binaria. Para esto se
debe tener como entrada un conjunto de elementos ordenados, pues de esta manera el algoritmo
funciona correctamente.
11
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Fuente: https://goo.gl/td9tdi
B. LINEAL
Este tipo de complejidad en un algoritmo se presenta de una manera muy simple debido a que su
ejecución depende de una constante, por lo cual sus bucles son terminados a través de
comparaciones internas con dicho valor. Es el más usado hasta ahora. Su notación de acuerdo al
tiempo de ejecución o crecimiento es O(n). En este tipo de algoritmo se puede observar que la
constante va desde 1 hasta n.
Ejemplo 1:
Inicio
leer(base);
leer(altura);
a ← base * altura;
escribir(area);
Fin.
12
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Ejemplo 2:
max ← x1
for i = 2 to n {
if (xi > max)
max ← xi
}
C. CUADRÁTICO
Ejemplo:
Dado un conjunto de puntos en un plano (x1, y1),…, (xn, yn), encuentre la pareja de puntos más
cercana. Tipo O(n)²:
D. EXPONENCIAL
Estos algoritmos no son muy utilizados debido a su alto grado de consumo de recursos y su
elevado tiempo de ejecución. Se pueden presentar en casos donde exista recursividad con dos o
más llamadas internamente. Se debe evitar que una función recursiva se llame a sí misma y estas
se encadenen. Un ejemplo de un algoritmo exponencial de tipo O(2)ⁿ es la factorización de un
número.
13
ESTE DOCUMENTO CONTIENE LA SEMANA 1
x←2
Lista ← array()
Mientras x < (numero+1) y (numero <> 1) Lista contendrá los números primos
buscados.
Si (x es primo) y (numero es divisible por x)
Lista ← x Se agrega x a la lista de números
primos.
numero ← numero/x
Sino
x ← x+1
FinSi
FinMientras
Retorna Lista
Si se tienen bien claras las estructuras de datos que se manejan y estas se mantienen organizadas,
esto se puede considerar un gran paso a la hora de diseñar un algoritmo, pues ayuda a una mejor
comprensión del problema, se aprovechan mejor los recursos de tiempo y memoria, y se obtiene
un algoritmo más eficiente, pues se pueden controlar y prevenir efectivamente los escenarios y
errores que se puedan presentar. Mientras más clara se tenga la información de entrada, mejor
será su procesamiento y más factible y confiable su salida.
14
ESTE DOCUMENTO CONTIENE LA SEMANA 1
3.1. TÉCNICAS DE DISEÑO DE ALGORITMOS
La técnica de divide y vencerás se aplica cuando se tiene un problema muy complejo y la mejor
manera de resolverlo es dividirlo en pequeños subproblemas y así buscar resolverlos uno a uno.
Cuando ya se tengan todos resueltos se juntan las soluciones como un todo.
Luego, se resuelve cada uno de manera independiente, pudiendo hacerse de forma recursiva si es
necesario. Al dividir m en problemas de tamaño n, se garantiza que se resolverá el caso base. Para
finalizar se combinan las soluciones obtenidas y se construye la solución general que da
finalmente un algoritmo fuerte y eficaz.
También conocido como método devorador, se refiere a la búsqueda de un valor dentro de una
función, bien sea un máximo o un mínimo, pero siempre el óptimo. La solución que ofrece este
método es a través de una secuencia de decisiones irreversibles y que evalúa un elemento una
sola vez, el cual es descartado o seleccionado para que forme parte de la solución al problema
15
ESTE DOCUMENTO CONTIENE LA SEMANA 1
presentado si lo amerita. Si el elemento es descartado, no formará parte de la solución, no se
considerará.
Se dice que los datos son tratados de manera voraz pues se reciben de entrada y estos son
estudiados para ser seleccionados o desechados, por lo cual no siempre se logrará solucionar un
problema a través de este método. De no encontrar una solución, se debe recurrir a la
implementación de otra técnica. A pesar de esta desventaja, es muy utilizado debido a su rapidez
en encontrar una solución si el problema está dentro de su alcance, lo que implica un bajo costo
de recursos y tiempo.
voraz(C:conjunto):conjunto
{ C es el conjunto de todos los candidatos }
S ← vacio
{ S es el conjunto de soluciones}
mientras C <> vacío y no solución(S) hacer
x ← seleccionar (C)
C ← C- {x}
si es factible (S U {x}) entonces
S ← S U {x}
si solución(S)
entonces devolver S
si no devolver no existe solución
Al igual que el método divide y vencerás, con top-down el problema base se divide en
subproblemas para ser atacados uno a uno, de manera más sencilla. Es considerada una técnica
fundamental para la programación estructurada, pues se puede comprender mejor un programa
que ha quedado en forma de bloques refinados.
16
ESTE DOCUMENTO CONTIENE LA SEMANA 1
→ subproblema1 subpro1
→ subproblema1 → subproblema1 subpro2
→ subproblema1 subpro3
COMENTARIO FINAL
A través de los algoritmos se facilita la comprensión de un problema, permitiendo elaborar
programas más estructurados y entendibles para cualquier persona que no haya participado en el
proceso.
Haciendo uso de los distintos métodos y técnicas para encontrar una solución a un problema, se
puede generar una solución que será óptima, dependiendo del costo y del tiempo a emplear para
ello. Si se tiene un enfoque claro de lo que se busca junto con una buena organización de los datos
de entrada, el procesamiento de dichos datos será claro y la salida que se busca retornará con la
mejor solución.
17
ESTE DOCUMENTO CONTIENE LA SEMANA 1
REFERENCIAS
Aho, A.; Ullman, J. y Hopcroft, J. (1998). Estructuras de datos y algoritmos. 2.ª edición. México: S.
A. Alhambra Mexicana.
Caselli, H. (2009). Manual de algoritmos y estructura de datos. 7.ª edición. Recuperado de:
http://biblioteca.uns.edu.pe/saladocentes/archivoz/publicacionez/manual_algoritmos_y_
estructura_de_datos.pdf
18
ESTE DOCUMENTO CONTIENE LA SEMANA 1
19
ESTE DOCUMENTO CONTIENE LA SEMANA 1