Académique Documents
Professionnel Documents
Culture Documents
VINCULACIÓN DIDÁCTICA
CONTENIDO-COMPETENCIAS:
Diferencia entre los diferentes tipos de problemas que se le presenten para que, con base
en ello, identifica la solución correcta para cada problema, mediante el desarrollo de un
algoritmo que permita encontrar la solución más rápida.
1
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
1.1. INTRODUCCIÓN
Pretendemos presentar una serie de conceptos y definiciones propios del estudio de los
algoritmos, su análisis y diseño.
Objetivo general:
Que los estudiantes alcancen una visión general y sistemática de lo que conocemos como
algoritmos.
Objetivos específicos:
2
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Los algoritmos no son sólo una curiosidad académica u objeto de estudio de una ciencia.
Son la base de todo proceso metódico, formal o informal, y los encontramos por todas
partes con múltiples nombres: receta, proceso, método, técnica, procedimiento, fórmula,
rutina, conjuro. Un diccionario común describirá como algoritmo al conjunto de símbolos
y procedimientos usados en la realización de un cálculo. Descripciones similares se
encuentran incluso en los diccionarios
3
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
esta razón, aunque no haya sido él el inventor del primer algoritmo, merece que este
concepto esté asociado a su nombre.
Los babilonios que habitaron en la antigua Mesopotamia, empleaban unas pequeñas bolas
hechas de semillas o pequeñas piedras, a manera de "cuentas" y que eran agrupadas en
carriles de caña. Más aún, en 1.800 A.C. un matemático babilónico inventó los algoritmos
que le permitieron resolver problemas de cálculo numérico. En 1850 A.C. un algoritmo de
multiplicación similar al de expansión binaria es usado por los egipcios.
Podemos ver que tanto las matemáticas como la computación se originan del acto de
contar. Sin embargo, las primeras se encargan de descubrir las verdades acerca de las
estructuras abstractas; la segunda, de estudiar el conjunto de acciones que obedecen a
reglas formales estructuradas en el tiempo.
4
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Ilustración 2. Alan M. Turing Ilustración 3. Emil León Post A este respecto los trabajos
de Alan M. Turing y Emil León
Post han sido decisivos y con
profundas implicaciones en
ambas disciplinas.
Es un método para resolver un problema mediante una serie de datos precisos, definidos
y finitos.
5
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
1.1.3. Generalidades
6
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Esto en cuanto a la solución de problemas, pero hay otra habilidad de pensamiento que
también se puede ayudar a desarrollar con un curso de Algoritmos Computacionales y
Programación: La Creatividad.
El reto enorme que recae hoy sobre los sistemas educativos a distancia consiste en lograr
que se generen las estrategias adecuadas para que los estudiantes se desarrollen como
pensadores creativos. Para la sociedad actual es prioritario que las personas desarrollen
sus habilidades de pensamiento de orden superior para que puedan desempeñarse con
éxito en ella. Desde este punto de vista, la presente unidad de aprendizaje, se concentra
en el desarrollo de la creatividad y de habilidades para solucionar problemas
predefinidos.
Solución de problemas
Una de las acepciones que trae el Diccionario de Real Academia de la Lengua Española
(RAE) respecto a la palabra Problema es “Planteamiento de una situación cuya respuesta
desconocida debe obtenerse a través de métodos científicos”. Con miras a lograr esa
respuesta, un problema se puede definir como una situación en la cual se trata de alcanzar
una meta y para lograrlo se deben hallar y utilizar medios y estrategias.
7
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
La mayoría de problemas tienen algunos elementos en común: un estado inicial; una meta,
lo que se pretende lograr; un conjunto de recursos, lo que está permitido hacer y/o
utilizar; y un dominio, el estado actual de conocimientos, habilidades y energía de quien va
a resolverlo (Moursund, 1999).
Casi todos los problemas requieren, que quien los resuelve, los divida en submetas que,
cuando son dominadas (por lo regular en orden), llevan a alcanzar el objetivo. La solución
de problemas también requiere que se realicen operaciones durante el estado inicial y las
submetas, actividades (conductuales, cognoscitivas) que alteran la naturaleza de tales
estados (Schunk, 1997).
Ensayo y error: Consiste en actuar hasta que algo funcione. Puede tomar mucho tiempo
y no es seguro que se llegue a una solución. Es una estrategia apropiada cuando las
soluciones posibles son pocas y se pueden probar todas, empezando por la que ofrece
mayor probabilidad de resolver el problema.
Por ejemplo, una bombilla que no prende: revisar la bombilla, verificar la corriente
eléctrica, verificar el interruptor.
Iluminación: Implica la súbita conciencia de una solución que sea viable. Es muy utilizado
el modelo de cuatro pasos formulado por Wallas (1921): preparación, incubación,
iluminación y verificación. Estos cuatro momentos también se conocen como proceso
creativo. Algunas investigaciones han determinado que cuando en el periodo de
incubación se incluye una interrupción en el trabajo sobre un problema se logran mejores
resultados desde el punto de vista de la creatividad. La incubación ayuda a "olvidar" falsas
8
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
pistas, mientras que no hacer interrupciones o descansos puede hacer que la persona que
trata de encontrar una solución creativa se estanque en estrategias inapropiadas.
9
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Como se puede apreciar, hay muchas estrategias para solucionar problemas; sin embargo,
se utilizaran dos de estas estrategias: Heurística y Algorítmica. Según Polya (1957), cuando
se resuelven problemas, intervienen cuatro operaciones mentales:
- Entender el problema
- Trazar un plan
- Revisar
Interpretación dinámica y cíclica de las etapas planteadas por Polya para resolver
problemas.
10
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
TIP
Organizar la información
Ejemplo:
En un juego, el ganador obtiene una ficha roja; el segundo, una ficha azul; y el tercero, una
amarilla. Al final de varias rondas, el puntaje se calcula de la siguiente manera: Al cubo de
la cantidad de fichas rojas se adiciona el doble de fichas azules y se descuenta el cuadrado
de las fichas amarillas. Si Andrés llegó 3 veces en primer lugar, 4 veces de último y 6 veces
de intermedio, ¿Qué puntaje obtuvo?
Comprender el problema
Hacer el plan
Para hallar el puntaje que obtiene Andrés por sus llegadas de primero, calcular el cubo
de la cantidad de fichas rojas
Para hallar el puntaje por sus llegadas en segundo lugar, calcular el doble de la cantidad
de fichas azules
Para hallar el puntaje que pierde por sus llegadas en último lugar, calcular el cuadrado
de la cantidad de fichas amarillas
Para hallar el puntaje total, calcular la suma de los puntajes por las fichas rojas y azules,
restarle los puntos de las fichas amarillas
12
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Obtenidos con las fichas rojas y azules (27 + 12 = 39 puntos) y de este resultado restar
los puntos representados por las fichas amarillas (39 – 16 = 23 puntos)
13
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
1.3. ALGORITMOS
El programador de computadoras es antes que nada una persona que resuelve problemas,
por lo que para llegar a ser un programador eficaz se necesita aprender a resolver
problemas de un modo riguroso y sistemático. A la metodología necesaria para resolver
problemas mediante programas se denomina Metodología de la Programación. El eje
central de esta metodología es el concepto, ya tratado, de algoritmo.
Euclides, el gran matemático griego (del siglo IV antes de Cristo) que invento un método
para encontrar el máximo común divisor de dos números, se considera con
Al’Khwarizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan
como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar
en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin
embargo, el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida
14
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
diaria, una receta de un plato de cocina se puede expresar en español, inglés o francés,
pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato se realizaran sin
importar el idioma del cocinero.
Con el logro de computadoras cada vez más rápidas se podría caer en la tentación de
preguntarse si vale la pena preocuparse por aumentar la eficiencia de los algoritmos. ¿No
sería más sencillo aguardar a la siguiente generación de computadoras?. Vamos a
demostrar que esto no es así. Supongamos que se dispone, para resolver un problema
dado, de un algoritmo que necesita un tiempo exponencial y que, en una computadora, su
implementación del mismo emplea 10-4 x 2n segundos.
Este programa podrá resolver un ejemplar de tamaño n=10 en una décima de segundo.
Necesitará casi 10 minutos para resolver un ejemplar de tamaño 20. Un día entero no
bastará para resolver uno de tamaño 30. En un año de cálculo ininterrumpido, a duras
penas se resolverá uno de tamaño 38. Imaginemos que necesitamos resolver ejemplares
más grandes y compramos para ello un computador cien veces más rápido. El mismo
algoritmo conseguirá resolver ahora un ejemplar de tamaño n en sólo 10-6 2n segundos.
¡Qué decepción al constatar que, en un año, apenas se consigue resolver un ejemplar de
tamaño 45! En general, si en un tiempo dado se podía resolver un ejemplar de tamaño n,
con la nueva computadora se resolverá uno de tamaño n+7 en ese mismo tiempo.
15
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Definición de lenguaje
Lenguaje: Es una serie de símbolos que sirven para transmitir uno o más mensajes
(ideas) entre dos entidades diferentes, a la transmisión de mensajes se le conoce
comúnmente como comunicación.
16
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
c. Lenguaje alto nivel: Los lenguajes de programación de alto nivel (BASIC, Pascal,
Cobol, Fortran, etc.) son aquellos en los que las instrucciones o sentencias a la
computadora son escritas con palabras similares a los lenguajes humanos (en general
en inglés), lo que facilita la escritura y compresión del programa.
Cuando se habla de algoritmos, con frecuencia aparecen tres tipos de pensamiento que
generalmente se relacionan con ellos y que se utilizan indiscriminadamente como
sinónimos por lo tanto es importante puntualizar a qué se refiere cada uno de estos
pensamientos:
Pensamiento Computacional
17
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Pensamiento Algorítmico
Pensamiento Procedimental
Por otra parte y de acuerdo con un reporte del Consejo Nacional de Investigación de
Estados Unidos (National Research Council, NRC, 2004), conocido como “Being Fluent
with Information Technology”, el Pensamiento Algorítmico incluye elementos tales como:
Una diferencia notoria entre un algoritmo y un programa es que el algoritmo incorpora las
características estructurales básicas de la computación, independientemente de los
detalles de su implementación; mientras que un programa tiene un conjunto específico de
detalles para resolver un problema. Se puede observar que una técnica de solución
(correspondiente al algoritmo) se puede utilizar en diferentes situaciones problemáticas
(correspondiente a los programas). De manera inversa, se espera que una solución exitosa
de problemas incorpore procesos generales que son independientes de las situaciones
específicas (NRC, 2004).
18
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Un programa consiste de uno o más procedimientos con instrucciones paso a paso que
pueden ejecutarse en una computadora; por lo tanto, utilizar el diseño de procedimientos
que solucionen o ayuden a solucionar problemas con diferentes niveles de complejidad es
un recurso que puede aprovechar el docente para captar el interés de los estudiantes en
actividades de programación.
¿Qué es un Algoritmo?
Problema es una función o asociación de entradas con salidas. Un problema puede tener
muchos algoritmos por tanto, un algoritmo es un procedimiento para resolver un
problema cuyos pasos son concretos y no ambiguos. El algoritmo debe ser correcto, de
longitud finita y debe terminar para todas las entradas, un programa es una instanciación
de un algoritmo en un lenguaje de programación.
Tipos de algoritmos:
Cualitativos: Emplean palabras. Ejemplo: Receta de cocina, cambiar una rueda, usar la
guía telefónica.
1. Inicio
20
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
3. Leer la página
5. Sí: Ve al paso 7
6. No: Ve al paso 5
8. Ve al paso 3
9. Cerrar el libro
10. Fin
21
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
1.4.1. Preciso
Indicar el orden de realización de cada paso, cada paso de un algoritmo debe estar
precisamente definido y sin ambigüedades.
1.4.2. Definido
1.4.3. Finito
• Debe ser correcto y debe resolver el problema planteado en todas sus facetas
22
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
“8 platos”
23
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
2 kilos de frijoles
2 zanahorias peladas
1 cucharada de sal
16 tazas de agua
Proceso
a. Se lavan bien los frijoles y se dejan remojando en el agua desde la noche anterior
d. Se cocinan sin sal hasta que estén blandos, aproximadamente por 1 hora
e. Se licúa una pequeña cantidad de los frijoles con la zanahoria, los cubos de caldo y la
sal, y se agrega a los frijoles
f. Se cocinan media hora más con la olla destapada hasta que espesen
24
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
RESUMEN UNIDAD 1
En cada proceso que realizamos en nuestra vida cotidiana nos vemos en la necesidad de
utilizar los algoritmos para la solución de problemas, utilizando los diferentes métodos
establecidos o no establecidos, para ello tenemos que decidir sobre la naturaleza del
problema y cuál sería la solución más viable monitoreando nuestros propios pensamientos
y analizar las posibles estrategias de solución, nos damos cuenta que para poder
resolverlo necesitamos desarrollar nuestra creatividad y tener habilidades para ir
solucionando problemas predefinidos y con la practica día a día podemos desarrollar
algoritmos computacionales los cuales nos ayudaran a tener una más rápida y mejor
solución a problemas más complejos.
Definimos como algoritmo: aplicar adecuadamente una serie de pasos detallados que
aseguran una solución correcta. Existen varias técnicas para la solución de problemas, sin
embargo, Poyla nos dice que intervienen 4 operaciones mentales al momento de
solucionar un problema, estas son las siguientes:
- Entender el problema
- Trazar un plan
- Revisar
Mohammed Al'Khwarizmi, matemático persa que vivió durante el siglo IX y alcanzo gran
reputación por el enunciado de las reglas para sumar, restar, multiplicar y dividir números
decimales; La traducción al latín del apellido de la palabra algorismus derivo
posteriormente en algoritmo.
25
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
Euclides, el gran matemático griego (del siglo IV antes de Cristo) que invento un método
para encontrar el máximo común divisor de dos números, se considera con Al’Khwarizmi
el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).
Para finalizar vimos las características principales de los algoritmos y como los llevamos a
cabo y nos damos cuenta que es lo que hacemos a diario en nuestra vida cotidiana al
resolver un problema pero ahora ya podemos utilizar nuevas técnicas y podemos realizar
nuestro algoritmo para cualquier problema que enfrentemos ya sea que utilicemos solo
palabras o números ya que existen dos tipos de algoritmos los cuales son: cualitativos y
cuantitativos, es decir podemos hacer el algoritmo de cómo preparar una sopa
(cualitativo) o bien el algoritmo de cómo realizar una suma de tres números (cuantitativo).
26
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD I. GENERALIDADES Y SOLUCIÓN DE PROBLEMAS CON ALGORITMOS
1.4 Características de
un algoritmo
REFERENCIAS COMPLEMENTARIAS
http://fcasua.contad.unam.mx/apuntes/interiores/docs/98/1/analisis_algoritmos.pdf
27
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
INTRODUCCION
El contenido tematico de esta unidad pretende lograr que identifiques las diferentes
técnicas para la representación de algoritmos en la cual estudiaremos y aprenderemos
desde que es y como realizar un diagrama de flujo, pseudocódigos, diagramas, hasta la
creación y desarrollo de algoritmos.
1
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Como tercer tema tenemos los diagramas estructurados los cuales son una técnica hibrida
entre diagramas de flujo y pseudocódigos. Estudiaremos sus características y la
representación de las estructuras de control (secuencia, iteración y decisión).
Para finalizar nuestra unidad estudiaremos los pasos para la creación y desarrollo de los
algoritmos, conociendo a fondo cada uno de ellos los pasos que veremos son los sigientes:
Declaración del problema, desarrollo de un modelo, diseño de procedimientos de
solución, validación, implementación, análisis y complejidad, pruebas y documentación.
Cabe señalar que cada uno de los temas que veremos en esta unidad son de vital
importancia para una buena representación de los algoritmos.
VINCULACIÓN DIDÁCTICA
CONTENIDO-COMPETENCIAS:
El diagrama de flujo se compone de figuras que ilustran los pasos o procesos a seguir para
alcanzar la solución del problema. Los símbolos presentados permiten crear una
estructura gráfica flexible que ilustra los pasos a seguir. Un diagrama de flujo permite con
facilidad la posterior escritura de un programa en algún lenguaje de programación.
2
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Los diagramas de flujo son una de las técnicas más utilizadas para representar gráficamente
la secuencia de instrucciones de un algoritmo. Estas instrucciones están compuestas por
operaciones, decisiones lógicas y ciclos repetitivos, entre otros. La solución de un
problema puede contener varios conjuntos de instrucciones (procedimientos o métodos)
que tienen como finalidad ejecutar cada uno de los procesos necesarios para llegar a la
solución de un problema a partir de los datos disponibles (estado inicial).
Numerosas investigaciones han mostrado que el Aprendizaje Visual es uno de los mejores
métodos para enseñar habilidades del pensamiento. Las técnicas que utilizan formas
gráficas para representar ideas e información ayudan a los estudiantes a clarificar su
pensamiento, y a procesar, organizar y priorizar nueva información.
• Identificar pasos erróneos: Sobre un diagrama es más fácil identificar los cambios
que se requieren para el correcto funcionamiento de un programa de computador que
hacerlo sobre el código.
3
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Forzar la identificación de todos los pasos de una solución de forma clara y lógica
Representar gráficamente una solución (es más simple hacerlo con gráficas que
mediante palabras)
2.1.2. Simbología
Un diagrama de flujo utiliza símbolos estándar en el que cada paso del algoritmo se
visualiza dentro del símbolo y en el orden en que estos pasos se ejecutan, se indica
conectándolos con flechas llamadas líneas de flujo, ya que indican el flujo lógico del
algoritmo.
Los símbolos utilizados en los diagramas de flujo han sido estandarizados por la ANSI
(American National Institute) y por la ISO (International Standard Organization).
4
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Símbolo Función
5
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Símbolo Función
Ilustración 2. Inicio Símbolo utilizado para marcar el inicio y el fin del diagrama de
flujo
Ilustración 3. Lectura Símbolo utilizado para ingresar los datos de entrada (expresa
lectura)
Ilustración 5. Dirección Símbolos utilizados para indicar la dirección del flujo del
diagrama
Ilustración 8. Decisión múltiple Símbolo utilizado para representar una decisión múltiple. En
su interior se almacena un selector y dependiendo de su valor,
se sigue por una de las ramas
6
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Símbolo Función
Ilustración 10. Conexión Símbolo utilizado para expresar conexión dentro de una
misma página
Ilustración 11. Conexión entre Símbolo utilizado para expresar conexión entre páginas
paginas
diferentes
Asignar un título al diagrama y verificar que esté completo y describa con exactitud el
proceso elegido
7
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas
verticales y horizontales y no se deben cruzar.
Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar
conectadas.
El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a
derecha (left-right).
Si el diagrama de flujo requiere más de una hoja para su construcción, se debe utilizar
conectores adecuados y enumerar las páginas convenientemente.
8
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
A un símbolo del diagrama (excepto líneas) no puede llegar más de una línea.
9
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ejemplo 2.1. Construya un diagrama de flujo tal que dado los datos A, B, C y D que
representan números enteros, escriba los mismos en orden inverso.
Solución
Ejemplo 2.2. Escriba (en papel) un diagrama de flujo que tenga como entradas los datos
enteros A y B y escriba el resultado de la siguiente expresión:
(A + B) ^2 / 3
El símbolo ^2 : Al cuadrado
Solución
Consideraciones:
10
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
1 5 6 11 121 40.33
2 7 10 17 289 96.33
3 0 3 3 9 3.00
4 12 2 14 196 65.33
5 14 -5 9 81 27.00
La prueba de escritorio es una herramienta útil para entender que hace un determinado
diagrama de flujo, o para verificar que un algoritmo cumple con la especificación sin
necesidad de ejecutarlo. Básicamente, una prueba de escritorio es una ejecución ‘a mano’
del algoritmo, por lo tanto se debe llevar registro de los valores que va tomando cada una
de las variables involucradas en el mismo.
Ejemplo 2.3. Un estudiante obtiene 5 calificaciones a lo largo del semestre. Escriba (en
papel) un diagrama de flujo que imprima el promedio de sus calificaciones.
Solución
11
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Consideraciones:
d. Diagrama de flujo
4 10 5 6 7 6.4
1 1 1 1 1 1
4 5 10 20 3 8.4
10 3 10 5 2 6.0
12
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
http://www.eduteka.org/modulos.php?catx=4&idSubX=117
• GraFI-co http://www.eduteka.org/pdfdir/graFIco.rar
• SmartDraw http://www.smartdraw.com
• WinEsquema http://www.softonic.com/ie/27771/WinEsquema
• OrgPlus http://www.tucows.com/preview/281861.html
13
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
2.2. PSEUDOCÓDIGOS
– Inicio
– Fin
– Leer
– Escribir
Inicio
Fin
14
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operación
15
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Se elabora el pseudocódigo:
Inicio
Leer A, B, C, D
Escribir D, C, B, A
Fin
Observaciones
16
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
utilizar:
Se elabora el pseudocódigo:
Inicio
DIV 2
Hace un calculo
AREA BASE *
ALTURA
Calcular el área
Mostrar AREA
Final
Ejemplo 2.8. Obtener el cuadrado y el cubo de un número entero positivo y mostrar los
resultados, hacer el pseudocódigo y el diagrama de flujo.
17
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Se elabora el pseudocódigo
Inicio
Leer NUM
CUA NUM*NUM
CUB NUM^3
Escribir resultados:
Fin
18
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Se elabora el pseudocódigo:
Inicio
Leer BASE
Leer ALTURA
Calcular el área
Calcular el perímetro
PERIMETRO 2*(BASE+ALTURA)
Escribir resultados:
El área AREA
El perímetro PERIMETRO
Fin
Antes de iniciar con el estudio del tercer tema de esta unidad te invitamos a realizar los
ejercicios propuestos en la Actividad Complementaria 2.1 con el fin de reforzar tu
aprendizaje al máximo, así como la Actividad de Aprendizaje 2.1. ¡¡Mucho éxito!!
19
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
20
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ejemplo 2.10:
Inicio
Acción 1
Acción 2
………..
Fin
21
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Diagrama estructurado: Son una técnica que permite formular algoritmos mediante
una representación geométrica y de asignación de espacios de un bloque específico.
22
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Requiere de hojas muy extensas para ser escrito, debido a que carece de conectores
que permitan su conexión con otras hojas
Cuenta con un conjunto limitado de símbolos para representar los pasos del algoritmo,
por ello se apoya en expresiones del lenguaje natural; sin embargo, dado que el lenguaje
natural es muy extenso y se presta para la ambigüedad, solo se utiliza un conjunto de
palabras, a las que se denomina palabras reservadas.
Secuencia
Iteración
Ciclo Mientras
23
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ciclo Repetir
24
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Decisión
Decisión simple.
Alternativa doble
Alternativa múltiple
25
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ejemplo 2.12. Elabora una solución, la más conveniente, para calcular el valor de la suma
1 + 2 + 3 + … + 100, utilizando la estructura mientras (algoritmo visto en clase).
algoritmo suma_1_a_100
var
Inicio
contador ← 1
SUMA ← 0
contador ← contador + 1
fin_mientras
fin
algoritmo suma_1_a_100
var
begin
contador ← 1
SUMA ← 0
contador ← contador + 1
endwhile
end
27
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ejemplo 2.13. Elabora una solución, la más conveniente, para calcular la suma de todos
los números pares entre 2 y 1000, utilizando la estructura desde.
algoritmo pares_2_a_1000
var
entero: i, SUMA
inicio
SUMA ← 0
SUMA ← SUMA + i
fin_desde
28
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
fin
algoritmo pares_2_a_1000
var
entero: i, SUMA
begin
SUMA ← 0
SUMA ← SUMA + i
endfor
end
29
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Ejemplo 2.14. Elabora una solución, la más conveniente, para calcular la suma de los
números impares hasta N (inclusive), utilizando la estructura repetir.
algoritmo impares_1_a_N
var
inicio
SUMA ← 0
contador ← 1
Leer (N)
repetir
30
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
contador ← contador + 2
fin
Ejemplo 2.15. Elabora una solución, la más conveniente, para calcular el factorial de un
número N (N! = N * (N – 1) * (N – 2) * … * 3 * 2 * 1).
algoritmo factorial
var
entero: i, N, FACTORIAL
inicio
31
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
leer (N)
si N < 0 entonces
si_no
FACTORIAL ← 1
Si N > 1 entonces
FACTORIAL ← FACTORIAL * i
fin_desde
fin_si
fin_si
fin si
32
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
II. Determinación de la salida deseada: Los datos seleccionados deben ser arreglados en
una forma ordenada para producir información, esta salida podría ser una salida de
impresión o de presentación en el monitor
III. Determinación de los datos de entrada: Una vez identificada la salida que se desea,
se pueden determinar los datos de entrada y la fuente de estos datos, los datos
deben ser recolectados y analizados
33
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
Descripción narrada
Notación matemática
Pseudocódigo
Diagramas de flujo
Lenguaje de computadora
Esta fase se lleva a cabo en un papel, estableciendo lo más claramente posible la finalidad
de cada etapa, los datos que se necesitan de entrada, los datos que producirán en salida,
los algoritmos que se utilizaran, etc.
Para diseñar un algoritmo de solución se debe comenzar por identificar las tareas más
importantes para resolver el problema y disponerlas en el orden en el que han de ser
ejecutadas. Los pasos en esta primera descripción pueden requerir una revisión adicional
antes de obtener un algoritmo claro, preciso y completo, es diseñar cualquier solución al
problema o las aplicaciones que se requieren para satisfacer las necesidades, en este paso
se genera una solución con técnicas de programación como diseño descendente de
programas, pseudocódigos, diagramas de flujo y estructuras lógicas.
34
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
2.4.4. Validación
Prueba de escritorio: Este paso se aplica siguiendo paso por paso las instrucciones del
algoritmo, anotando los diferentes valores que van tomando las variables, de forma que se
pueda verificar si hay errores en alguna instrucción, obviamente éste método es muy
engorroso para algoritmos muy extensos, por lo que en estos casos no sería aplicable.
2.4.5. Implementación
Una vez que el algoritmo está diseñado, representado mediante pseudocódigo y verificado
se debe pasar a la fase de codificación o traducción del algoritmo a un determinado
lenguaje de programación, que deberá ser completada con la ejecución y comprobación
del programa en computadora.
2.4.7. Pruebas
35
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
2.4.8. Documentación
Consiste en describir por escrito a nivel técnico los procedimientos relacionados con el
problema, algoritmo o programa y su modo de uso. También se debe documentar el
programa para que sea más entendible.
- Usuarios
- Operadores
- Programadores
- Analistas de sistemas
- Administradores de sistemas
Los documentos que se elaboran son el Manual de Usuario y Manual del Analista.
A los usuarios se les elabora un manual de referencia para que aprendan a utilizar el
programa. Esto se hace a través de capacitaciones y revisión de la documentación del
manual de usuario, el manual del usuario no está escrito a nivel técnico sino al de los
distintos usuarios previstos y explica en detalle cómo usar el programa, es la descripción
de las tareas que realiza el programa, instrucciones necesarias para su instalación puesta
en marcha y funcionamiento, recomendaciones de uso, menús de opciones, método de
entrada y salida de datos, mensajes de error, recuperación de errores, etc. A los
operadores por si se presentan mensajes de error, sepan cómo responder a ellos. Además
que se encargan de darle soporte técnico al programa.
A los programadores a través del manual del analista para que recuerden aspectos de la
elaboración del programa o en caso que otras personas puedan actualizarlo o modificarlo
(darle mantenimiento) y no son necesariamente las personas que lo diseñaron. Es por ello,
que la documentación debe contener algoritmos y diagramas de flujo de los diferentes
módulos que lo constituyen y las relaciones que se establecen entre ellos; listados del
programa, corridas, descripción de variables que se emplean en cada módulo, cuáles son
36
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
A los analistas de sistemas que son las personas que deberán proporcionar toda la
información al programador, estos se encargan de hacer una investigación previa de cómo
realizar la solución del problema, el algoritmo y el programa, y debe documentar con las
herramientas necesarias para que el programador pueda desarrollar el sistema en algún
lenguaje de programación adecuado.
Hemos llegado al término de esta unidad donde has podido conocer los algoritmos
computacionales y los métodos para desarrollarlos. Te invitamos a resolver la Actividad
Complementaria 2.2 para reforzar tus conocimientos y la Actividad de Aprendizaje 2.2
que sumará puntos a tu calificación.
RESUMEN DE LA UNIDAD 2
Algunas de las ventajas que se tiene al construir los diagramas de flujo es que hace más
visible la información que utilizamos en la solución de un problema, esto ayuda a clarificar
las ideas de lo que queremos resolver a procesar organizar y priorizar nueva información,
además de que estimulan el pensamiento creativo el cual es indispensable para la solución
37
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
de problemas; así mismo nos ayuda a identificar los pasos erróneos que pudiéramos tener
y hacer las modificaciones pertinentes para posteriormente poder agilizar la codificación
del algoritmo a un lenguaje de programación.
Un diagrama de flujo utiliza símbolos estándar en el que cada paso del algoritmo se
visualiza dentro del símbolo y en el orden en que estos pasos se ejecutan, se indica
conectándolos con flechas llamadas líneas de flujo, ya que indican el flujo lógico del
algoritmo.
Los diagramas de flujo siempre deben de tener un inicio y un fin, aunque existen infinidad
de símbolos utilizados en los diagramas de flujo, el esquema general del diagrama de flujo
es el siguiente:
38
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
2.2 Técnicas de
diseño de Algoritmos
REFERENCIAS COMPLEMENTARIAS
39
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 2. TÉCNICAS PARA LA REPRESENTACIÓN DE ALGORITMOS
https://es.slideshare.net/angelfg/ejemplos-de-algoritmos
40
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
INTRODUCCION
En esta unidad temática se pretende mostrar los componentes y técnicas para el diseño de
algoritmos, de esta manera podremos elegir que componentes llevara nuestro algoritmo
de acuerdo al problema que deseemos resolver a si mismo utilizar la mejor técnica para
hacerlo más rápido y eficiente.
En el siguiente tema podremos apreciar las técnicas de diseño de algoritmos, las cuales
nos ayudaran a automatizar nuestros programas y de acuerdo a cada uno de ellos
podemos utilizar la técnica más sencilla que facilite la elaboración de nuestro algoritmo, las
1
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
técnicas que veremos son las siguientes: Programación estructurada, el diseño de Top-
Down, la programación modular y la codificación estructurada.
Para finalizar con nuestra unidad temática estudiaremos el tema de estrategias de diseño
de algoritmos de las cuales podemos elegir la que mejor se adapte para el diseño de
nuestro algoritmo, dependiendo del problema que deseemos resolver, las estrategias que
veremos son: Recursión, dividir para conquistar, técnicas Ávidas, método de retroceso y
programación dinámica.
VINCULACIÓN DIDÁCTICA
CONTENIDO-COMPETENCIAS:
Definición de algoritmo
2
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
algoritmo Sumar
variables
entero a, b, c
inicio
escribir( "Introduzca el primer número (entero): " )
leer( a )
leer( b )
c←a+b
fin
3
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Datos: Es la expresión general que describe los objetos con los cuales opera el programa.
Por ejemplo, la edad y el domicilio de una persona, forman parte de sus datos. Los datos
se sitúan en objetos llamados variables.
Los datos que utilizan los programas (o algoritmos) se pueden clasificar en base a
diferentes criterios. Uno de los más significativos es aquel que dice que todos los datos
que utilizan los programas son simples o compuestos “estructuras de datos”.
a) Simples
Año...: 2006
Letra...: t
Una letra se representa con un carácter del alfabeto. Pero, cuando varias letras se
agrupan, entonces se obtiene un dato compuesto por varios caracteres.
4
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Conjuntos de simples que están relacionados entre si, arrays, cadena de caracteres,
etc.
Ejemplo: Una fecha es un dato compuesto por tres datos simples (día, mes, año).
Fecha:
Día : 30
Mes : 11
Año : 2006
A continuación, se van a estudiar cinco tipos de datos: entero, real, lógico, carácter y
cadena, de ellos, tan solo el tipo cadena es compuesto. Los demás son los tipos de datos
simples considerados estándares. Esto quiere decir que la mayoría de los lenguajes de
programación permiten trabajar con ellos. Por ejemplo, en lenguaje C es posible utilizar
datos de tipo entero, real y carácter, sin embargo, los datos de tipo lógico no se pueden
utilizar, ya que, no existen en este lenguaje. Existen otros tipos de datos, simples y
compuestos, que se estudiarán más adelante. A los tipos de datos simples estándares
también se les conoce como tipos de datos primitivos, básicos o fundamentales.
3.1.2. Operadores
Operación de asignación
5
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Tipos de Operadores:
b) Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <>
c) Lógicos o Booleanos (su resultado es un valor de verdad): not, and, or, nand, nor.
0 0 0 0 1 1 1 0
0 1 0 1 1 0 0 1
1 0 0 1 1 0
1 1 1 1 0 0
6
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
3.1.3. Variables
Las Variables son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información. Son objetos cuyo valor puede ser modificado a lo largo de
la ejecución de un programa. Las variables llevan un nombre llamado identificador. Este
puede ser una cadena de letras y dígitos, es importante mencionar que depende del
lenguaje a utilizar.
Los Identificadores son palabras creadas por los programadores para dar nombre a los
objetos y demás elementos que necesitamos declarar en un programa: variables,
constantes, tipos, estructuras de datos, archivos, subprogramas, etc. En C++ y en Php, no
así en HTML, las letras mayúsculas se tratan como diferentes y distintas unas de otras.
Por ejemplo, si se desea obtener un reporte para cada uno de los empleados de una
empresa, con sus datos generales, la fecha y cantidad de dinero que recibieron la última
semana, el dato fecha puede ser una constante ya que es el mismo para todos.
3.1.4. Expresiones
7
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Por ejemplo:
Instrucciones
Tipos de instrucciones:
a) Instrucciones de declaración
b) Instrucciones primitivas
Son las que hacen funciones sencillas como leer, escribir por pantalla o una asignación.
leer (variable)
imprimir (variable)
asignación a = b + 1
c) Instrucciones de control
Tipos:
8
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Estructura Secuencial
Estructura Selectiva
Estructura Secuencial
Ilustración 2. Estructura secuencial Indica que las instrucciones de un programa se ejecutan una
después de la otra, en el mismo orden en el cual aparecen
en el programa.
9
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Estructura Selectiva
10
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Con la programación estructurada, elaborar algoritmos sigue siendo una labor que
demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo
podemos obtener las siguientes ventajas:
1. Los algoritmos son más fáciles de entender. Un algoritmo estructurado puede ser
leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a
otro en la lógica, lo cual es típico de otros estilos programación.
2. Se logra una reducción del esfuerzo en las pruebas. El seguimiento de las fallas o
depuración (debugging o pruebas de escritorio) se facilita debido a la lógica más
visible, de tal forma que los errores se pueden detectar y corregir más fácilmente.
11
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
algunos procedimientos del periódico New York Times. El desarrollo de este proyecto
hizo que se dispersara y se ampliara la idea de hacer los programas con esta filosofía de
trabajo al resto de los desarrolladores de IBM, así como al resto de la industria del
software. Por su parte, Nicklaus Wirth, desarrolló entre otros lenguajes, el lenguaje de
programación Pascal, escribió un artículo muy importante acerca del Desarrollo de
programas por medio de refinamiento de pasos. Esta idea de diseñar programas
permaneció como principal corriente de desarrollo hasta fines de la década de 1980.
El diseño top-down es una herramienta que presenta en primer lugar una solución a un
problema general utilizando tres o cuatro pasos solamente. Cada uno de esos pasos en la
primera solución se divide en otros subpasos. Este proceso se repite varias veces, en cada
iteración se produce una solución más detallada al problema original. Cuando los pasos ya
no se pueden subdividir, el algoritmo ha terminado. El diseño top-down también se
conoce como descomposición funcional o refinamiento de pasos.
Top Down
12
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial, que
recibe el refinamiento progresivo del repertorio de instrucciones que van a formar parte
del programa.
- Las diferentes partes del problema pueden ser programadas de modo independiente e
incluso por diferentes personas.
- El programa final queda estructurado en forma de bloque o módulos lo que hace más
sencilla su lectura y mantenimiento.
Es un camino hacia arriba, desde lo sencillo a lo complejo, desde las partes componentes
hasta las unidades englobadoras.
La abstracción del problema. La aprehensión del problema. ¿Por qué unas personas ven
cosas que otras no ven teniendo delante lo mismo?
13
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
En la figura tenemos el conocido efecto óptico de la copa y las dos caras, según
consideremos como fondo la parte blanca o la parte gris veremos una cosa u otra. Los
procesos de abstracción y aprehensión están en buena medida condicionados por nuestras
características personales, nuestras capacidades pero también por el ejercicio y esfuerzo,
el empeño y el uso de métodos o enfoques adecuados.
Analizaremos ahora lo que los programadores llaman diseño top – down de algoritmos
desde una perspectiva un poco libre. Existen desarrollos teóricos más o menos detallados,
pero nos conformaremos con “aprehender el espíritu”. El llamado diseño top – down
(arriba – abajo) de algoritmos o programas, no es otra cosa que trasladar al ámbito de la
programación una estrategia de resolución de problemas muy antigua, basada en la
capacidad humana de abstracción. Quizás algún emperador romano llegó a plantearse un
esquema parecido al siguiente:
14
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
15
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
muy sencilla, aplicando los criterios de abstracción y concreción que estamos viendo y
vamos a seguir desarrollando. La clasificación de problemas podemos definirla de una
nueva manera:
Aprehensión global del problema significa que, aunque lo resolvamos por partes o paso a
paso, el proceso en su totalidad lo tenemos presente y conocemos o somos conscientes
de todas las partes.
Resolución por módulos en sucesión significaría que hemos dividido el problema en partes
y nos centramos en una de ellas, desconociendo o ignorando a las demás. El concepto de
módulo aplicado en la clasificación es libre: no ha de coincidir exactamente con lo que
hemos llamado módulo como elemento definido de programación. Podría sustituirse por
“partes” o “componentes”.
La resolución grupal sería la aplicable a problemas que se dividen en partes pero no para
abordar una detrás de la otra, como estaremos obligados a hacer si trabajamos solos, sino
16
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
para abordar varias partes simultáneamente o lo que se llama “atacar el problema por
varios frentes”.
1. Planeta Tierra
17
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
La numeración es libre pero ha de reflejar cuáles son las partes componentes de cada
estructura superior.
Cada elemento del gráfico se denomina nodo. Cada nodo se encuentra en un nivel de
concreción o definición. El nivel 0 corresponde al problema primigenio que no ha sufrido
subdivisiones, el nivel 1 a los nodos que se derivan de una única división, el nivel 2 a los
nodos que se derivan de la división de nodos del nivel 1, el nivel 3 a los nodos que se
derivan de la división de nodos del nivel 2 y así sucesivamente.
18
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
El nivel de desarrollo tiene que ser determinado por el algoritmo o programador. ¿Por
qué el nodo 1 no se subdivide? Porque el contenido del nodo 1 se controla mentalmente,
se entiende sin problema. Si se desglosa, se estará prácticamente a nivel de instrucción
elemental, haciendo uso de la metodología Top-Down el esquema descendente para ver la
estructura del algoritmo o programa.
19
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Otra cuestión que podemos ver es que dentro de los nodos de un nivel, algunos son
relativamente abstractos y otros elementales. Por ejemplo, en el nivel 2 el nodo “Preparar
datos para entrada en fórmula” goza de cierta abstracción, mientras que el nodo 8
“Mostrar volumen del cilindro” es de carácter elemental. Conclusión: el nivel en que se
encuentra un nodo no necesariamente refleja su grado de abstracción, siendo este
intrínseco al nodo sin importar su situación. Así, en un problema muy largo podríamos
20
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Por último, en relación al esquema anterior, vemos un nodo que da lugar a otro de
inferior nivel sin que exista subdivisión. Esto obedece a abstracciones que constan de un
único componente elemental o a procesos englobadores que comprenden un único
elemento. Normalmente se trata de nodos abstractos cuya descendencia podría ser
amplia, pero que por circunstancias específicas del programa engloban a un solo elemento.
En este caso, “Salida de resultados” podría constar de distintos componentes, pero por
circunstancias específicas del algoritmo sólo tiene una.
Ejemplo 2.
En este ejemplo se supone que por circunstancias específicas del programa se estableció
una única vía al entrar en el nodo de condiciones de acceso. Pero podía haber sido del
tipo:
21
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
22
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Concepto de subalgoritmo
Ventajas
23
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
24
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
25
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Ambas dependen del tipo de computadora y compilador, por lo que no se estudiará aquí
la eficiencia de los programas, sino la eficiencia de los algoritmos. Asimismo, este análisis
dependerá de si trabajamos con máquinas de un solo procesador o de varios de ellos.
La calidad de un algoritmo puede ser avalada utilizando varios criterios. Uno de los
criterios más importantes es el tiempo utilizado en la ejecución del algoritmo. Existen
varios aspectos a considerar en cada criterio de tiempo, uno de ellos está relacionado con
el tiempo de ejecución requerido por los diferentes algoritmos, para encontrar la solución
final de un problema o cálculo particular, normalmente, un problema se puede resolver
por métodos distintos, con diferentes grados de eficiencia, por ejemplo: búsqueda de un
número en una guía telefónica.
Recurso Tiempo
Aplicaciones informáticas que trabajan “en tiempo real” requieren que los cálculos se
realicen en el menor tiempo posible.
Recurso Memoria
26
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
El Análisis A Priori (o teórico) entrega una función que limita el tiempo de cálculo de un
algoritmo, consiste en obtener una expresión que indique el comportamiento del
algoritmo en función de los parámetros que influyan, esto es interesante porque:
La predicción del costo del algoritmo puede evitar una implementación posiblemente
laboriosa
Un lenguaje concreto
Un compilador concreto
Datos concretos
c) Simplicidad
27
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
e) Elegancia
Una instancia de un algoritmo o programa es una copia de una versión ejecutable del
programa que ha sido escrito en la memoria del computador.
Un problema de computadora tiene una o más instancias, que son valores particulares
para los datos de entrada, sobre los cuales se puede ejecutar el algoritmo para resolver el
problema.
28
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Es claro que para cada algoritmo la cantidad de recurso (tiempo, memoria) utilizados
depende fuertemente de los datos de entrada. En general, la cantidad de recursos crece a
medida que crece el tamaño de la entrada. El análisis de esta cantidad de recursos no es
viable de ser realizado instancia por instancia.
En ocasiones es útil definir el tamaño de la entrada en base a dos o más magnitudes. Por
ejemplo, para un grafo es frecuente utilizar la cantidad de nodos y de arcos. En cualquier
caso, se debe elegir la misma variable para comparar algoritmos distintos aplicados a los
mismos datos.
3.4.1. Recursión
Una instancia del problema se soluciona según la solución de una o más instancias
diferentes y más pequeñas que ella, es una herramienta poderosa que sirve para resolver
cierto tipo de problemas reduciendo la complejidad y ocultando los detalles del problema.
Esta herramienta consiste en que una función o procedimiento se llama a sí mismo, una
29
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
gran cantidad de algoritmos pueden ser descritos con mayor claridad en términos de
recursividad, típicamente el resultado será que sus programas serán más pequeños.
• Una definición recursiva es aquella en la que el objeto que se define forma parte de la
definición (recuerde la regla gramatical: lo definido nunca debe formar parte de la
definición)
Ventajas:
Desventajas:
Esta técnica es muy utilizada en la solución de problemas, esto se debe a que la idea básica
de esta técnica es simple, tenemos un problema complejo al cual dividimos en
30
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Muchos algoritmos útiles tienen una estructura recursiva, de modo que para resolver un
problema se llaman recursivamente a sí mismos una o más veces para solucionar
subproblemas muy similares. Esta estructura obedece a una estrategia dividir-y-conquistar,
en que se ejecuta tres pasos en cada nivel de la recursión:
Combinar. Combinan estas soluciones para crear una solución al problema original.
El método ávido es una técnica que se utiliza para encontrar la solución óptima a un
problema. La manera de lograrlo es tomar un elemento a la vez e ir agregándolo a la
solución siempre que y cuando el hacerlo mantenga la solución óptima encontrada hasta
ese momento.
El nombre de algoritmos ávidos, también conocidos como voraces (su nombre original
proviene del término inglés greedy) se debe a su comportamiento: en cada etapa “toman
lo que pueden” sin analizar consecuencias, es decir, son glotones por naturaleza, en lo que
sigue veremos un conjunto de problemas que muestran cómo diseñar algoritmos ávidos y
cuál es su comportamiento, en este tipo de algoritmos el proceso no acaba cuando
disponemos de la implementación del procedimiento que lo lleva a cabo, lo importante es
31
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Los algoritmos ávidos o voraces (Greedy Algorithms) son algoritmos que toman
decisiones de corto alcance, basadas en información inmediatamente disponible, sin
importar consecuencias futuras. Suelen ser bastante simples y se emplean sobre todo para
resolver problemas de optimización, como por ejemplo, encontrar la secuencia óptima
para procesar un conjunto de tareas por una computadora, hallar el camino mínimo de un
grafo, etc. Habitualmente, los elementos que intervienen son:
e. una función de selección que escoge el candidato aún no seleccionado que es más
prometedor
f. una función objetivo que da el valor/coste de una solución (tiempo total del proceso,
la longitud del camino, etc.) y que es la que se pretende maximizar o minimizar
32
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Ejemplo 1. Problema del cambio. Suponiendo que el sistema monetario de un país está
formado por monedas de valores v1,v2,...,vn, el problema del cambio de dinero consiste
en descomponer cualquier cantidad dada M en monedas de ese país utilizando el menor
número posible de monedas.
Planteamiento
En primer lugar, es fácil implementar un algoritmo ávido para resolver este problema, que
es el que sigue el proceso que usualmente utilizamos en nuestra vida diaria. Sin embargo,
tal algoritmo va a depender del sistema monetario utilizado y por ello vamos a plantearnos
dos situaciones para las cuales deseamos conocer si el algoritmo ávido encuentra siempre
la solución óptima:
a) Suponiendo que cada moneda del sistema monetario del país vale al menos el doble
que la moneda de valor inferior, que existe una moneda de valor unitario, y que
disponemos de un número ilimitado de monedas de cada valor.
Solución
Algoritmo
VAR moneda:MONEDAS;
BEGIN
cambio[moneda]:=0
END;
WHILE valor[moneda]<=n DO
INC(cambio[moneda]);
DEC(n,valor[moneda])
END
END
END Cambio;
Este algoritmo es de complejidad lineal respecto al número de monedas del país, y por
tanto muy eficiente. Respecto a las dos cuestiones planteadas, comenzaremos por la
primera, supongamos que nuestro sistema monetario está compuesto por las siguientes
monedas:
Tal sistema verifica las condiciones del enunciado pues disponemos de moneda de valor
unitario y cada una de ellas vale más del doble de la moneda inmediatamente inferior.
15 = 11 + 1 + 1 + 1 + 1
Es decir, mediante el uso de cinco monedas, sin embargo, existe una descomposición que
utiliza menos monedas (exactamente tres):
15 = 5 + 5 + 5
34
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Aunque queda comprobado que bajo estas circunstancias el diseño ávido no puede
utilizarse, las razones por las que el algoritmo falla quedarán al descubierto cuando
analicemos el siguiente punto.
Esta técnica se utiliza en algoritmos de búsqueda. Los algoritmos diseñados en base a esta
técnica pueden realizar una búsqueda exhaustiva de un espacio grande de búsqueda (del
orden n! o aún cn). Para ser efectiva normalmente deben de utilizarse heurísticas que
permitan reducir el espacio de búsqueda tanto como sea posible. El principio es sencillo,
tratar todas las soluciones posibles para un problema.
Para que un problema pueda ser abordado por esta técnica ha de cumplir dos
condiciones:
35
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
3. Cálculo del valor de la solución óptima mediante una tabla en donde se almacenan
soluciones a problemas parciales para reutilizar los cálculos
| 1 si n = 0,1
Fib(n) = |
Por tanto, la forma más natural de calcular los términos de esa sucesión es mediante un
programa recursivo:
PROCEDURE FibRec(n:CARDINAL):CARDINAL;
BEGIN
ELSE
END
END FibRec;
36
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
RESUMEN DE LA UNIDAD 3
Datos: son los objetos con los cuales opera el programa, por ejemplo: edad,
domicilio de una persona, cantidad etc., los datos los podemos clasificar en simples
o compuestos
Operadores: un operador es un símbolo o palabra que significa que se ha de
realizar cierta acción entre uno o dos valores que son llamados operadores. Los
operadores son aquellos que nos sirven para hacer operaciones. por ejemplo suma
resta, división y multiplicación
Los operadores se clasifican en aritméticos, relacionales, lógicos o Booleanos y
alfanuméricos
Variables: son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información
37
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
Estructura Secuencial
Estructura Selectiva
Estructura Repetitiva (Iterativa)
Y para finalizar hemos visto que tenemos varias técnicas para el diseño de los algoritmos
las cuales son: recursión, divide para conquistar, técnicas ávidas, método del retroceso
(backtracking) y la programación dinámica.
38
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 3. COMPONENTES Y TÉCNICAS DE DISEÑO DE ALGORITMOS
3.2 Técnicas de
diseño de Algoritmos
3.4. Estrategias de
diseño de algoritmos.
39
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
SECUENCIA DIDACTICA
VINCULACIÓN DIDÁCTICA
CONTENIDO-COMPETENCIAS:
1
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
INTRODUCCION
El contenido temático de esta unidad pretende lograr que identifiques los diferentes tipos
de algoritmos que podemos utilizar para la solución de un problema utilizando los menos
recursos posibles, a su vez también conoceremos diferentes lenguajes de programación
los cuales nos servirán para desarrollar los programas necesarios para solucionar
problemas de una forma rápida y eficaz.
En el tercer tema podemos apreciar la teoría de grafos donde nos daremos cuenta que en
la informática utilizamos infinidad de grafos, así mismo en los algoritmos utilizaremos los
siguientes: grafo no dirigido, grafo dirigido, ddefiniciones básicas, grafos con pesos y árbol.
Es muy importante que en cada uno de los contenidos que veremos pongas mucha
atención y analices a fondo, así mismo se proactivo y proactiva e investiga las dudas que te
surjan y no puedas encontrarlas dentro del contenido y aproveches al máximo la
información.
2
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Animo compañero y compañera estas en la recta final para terminar esta unidad temática.
Conceptos preliminares.
Clave: La parte de un registro por la cual se ordena la lista. Por ejemplo, una lista de
registros con campos nombre, dirección y teléfono se puede ordenar alfabéticamente
de acuerdo al clave nombre, en este caso los campos dirección y teléfono no se toman
en cuenta en el ordenamiento.
Registro: Un grupo de datos que forman la lista. Pueden ser datos atómicos (enteros,
caracteres, reales, etc.) o grupos de ellos, que en C equivalen a las estructuras.
3
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Estabilidad: Cómo se comporta con registros que tienen claves iguales. Algunos
algoritmos mantienen el orden relativo entre éstos y otros no. Veamos un ejemplo. Si
tenemos la siguiente lista de datos (nombre, edad): "Pedro 19, Juan 23, Felipe 15,
Marcela 20, Juan 18, Marcela 17", y la ordenamos alfabéticamente por el nombre con
un algoritmo estable quedaría así: "Felipe 15, Marcela 20, Marcela 17, Juan 23, Juan 18,
Pedro 19". Un algoritmo no estable podría dejar a Juan 18 antes de Juan 23, o a
Marcela 20 después de Marcela 17.
Tiempo de ejecución: La complejidad del algoritmo, que no tiene que ver con
dificultad, sino con rendimiento. Es una función independiente de la implementación.
Identificar una operación fundamental que realice el algoritmo, que en este caso es
comparar, ahora contar cuántas veces el algoritmo necesita comparar, si en una lista
de n términos realiza n comparaciones la complejidad es O(n).
El ordenamiento por inserción (insertion sort en inglés) es una manera muy natural de
ordenar para un ser humano y puede usarse fácilmente para ordenar un mazo de cartas
numeradas en forma arbitraria, requiere O(n²) operaciones para ordenar una lista de n
elementos.
4
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
derecha). En este punto se inserta el elemento k+1 debiendo desplazarse los demás
elementos.
Ejemplo de funcionamiento: El 32 debe ser insertado entre 26 y 47, y por lo tanto 47, 59 y
96 deben ser desplazados.
k+1
11 26 47 59 96 32
5
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
11 26 47 59 96
11 26 32 47 59 96
1 26 47 59 96 32
11 26 47 59 96
11 26 47 59 96
11 26 47 59 96
11 26 32 47 59 96
El algoritmo en pseudocódigo (con listas que empiezan por 0) debería ser como el
siguiente:
Pseudocódigo
index=A[i]
j=i-1
A[j+1] = A[j]
j=j-1
fin mientras
A[j+1] = index
fin para
fin algoritmo
6
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Aunque este algoritmo tiene un mejor orden de complejidad que el de burbuja, es muy
ineficiente al compararlo con otros algoritmos como quicksort, sin embargo, para listas
relativamente pequeñas el orden por inserción es una buena elección, no sólo porque
puede ser más rápido para cantidades pequeñas de elementos sino particularmente debido
a su facilidad de programación.
Implementación
Lenguaje de programación C
int i, j, indice;
indice = vector[i];
vector[j + 1] = vector[j];
vector[j+1] = indice;
7
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
int i, j, index;
index = v.at(i);
j = i-1;
v.at(j+1)=v.at(j);
j--;
v.erase(v.begin()+j+1);
v.insert(v.begin()+j+1,index);
int aux;
int j;
aux=v[i];
v[j+1] = v[j];
v[j] = aux;
8
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
JavaScript
var j = i-1;
vector[j + 1] = vector[j];
j--;
vector[j+1] = temp;
Php
function insert_sort($arr){
$count = count($arr);
$tmp = $arr[$i];
$arr[$j+1] = $arr[$j];
$arr[$j+1] = $tmp;
return $arr;
Pascal
9
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Var
i, j, index : Integer;
Begin
For i := 2 to array_size do
Begin
index := insertion[i];
j := i-1;
Begin
insertion[j+1] := insertion[j];
j := j - 1;
End;
insertion[j+1] := index;
End;
End;
Su funcionamiento es el siguiente:
10
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Y en general:
Después de terminar esta primera pasada, el frente de la lista está ordenado y el resto de
la lista A[1], A[2]...A[n-1] permanece desordenada, la siguiente pasada busca en esta lista
desordenada y selecciona el elemento más pequeño, que se almacena entonces en la
posición A[1].
De este modo los elementos A[0] y A[1] están ordenados y la sublista A[2], A[3]...A[n-1]
desordenada; entonces, se selecciona el elemento más pequeño y se intercambia con A[2].
Ejemplo. Aplicar el algoritmo por selección, considere un array A con 5 valores enteros
51, 21, 39, 80, 36:
Solución
11
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 3. Solución
De esta manera se puede escribir el siguiente pseudocódigo para ordenar una lista de n
elementos indexados desde el 1:
Pseudocódigo
minimo = i;
minimo = j /* (!) */
fin si
fin para
intercambiar(lista[i], lista[minimo])
fin para
12
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Java
void selecccion(int[] a)
int min = i;
min = j;
13
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
if (i != min)
a[i] = a[min];
a[min] = aux;
int min,i,j,aux,ban;
ban=0;
if(ban){
aux=x[min];
14
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
x[min]=x[i];
x[i]=aux;
Basic
For i = 1 To n - 1
minimo = i
For j = i + 1 To n
minimo = j
End If
Next j
temp = x(i)
x(i) = x(minimo)
x(minimo) = temp
Next i
C++
#include <iostream>
#include <vector>
void ordena_seleccion(vector<T>& v) {
15
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
int min = i;
T aux = v[i];
v[i] = v[min];
v[min] = aux;
JavaScript
var menor = i;
vector[menor] = vector[i];
vector[i] = temp;
PHP
function IntercambiarElementos(&$arreglo,$pos1,$pos2){
$aux=$arreglo[$pos1];
16
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
$arreglo[$pos1]=$arreglo[$pos2];
$arreglo[$pos2]=$aux;
function PosicionMenorElemento($arreglo,$posinicial){
$posmenor=$posinicial;
for($i=$posinicial+1;$i<count($arreglo);$i++){
if($arreglo[$i]<$arreglo[$posmenor]){
$posmenor=$i;
return $posmenor;
function OrdenamientoPorSeleccion(&$arreglo){
for($i=0;$i<count($arreglo);$i++){
$posmenor=PosicionMenorElemento($arreglo,$i);
if($posmenor>$i){
IntercambiarElementos($arreglo,$i,$posmenor);
17
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
La burbuja son dos términos de la lista seguidos, j y j+1, que se comparan si el primero es
menor que el segundo sus valores se intercambian.
Esta comparación se repite en el centro de los dos bucles dando lugar a la postre a una
lista ordenada, puede verse que el número de repeticiones sola depende de n y no del
orden de los términos, esto es, si pasamos al algoritmo una lista ya ordenada, realizara
todas las comparaciones exactamente igual que para una lista no ordenada, esta es una
característica de este algoritmo, luego veremos una variante que evita este inconveniente.
En el caso de un array (lista) con n elementos, la ordenación por burbuja requiere hasta n-
1 pasadas, por cada pasada se comparan elementos adyacentes y se intercambian sus
valores cuando el primer elemento es mayor que el segundo elemento, al final de cada
pasada, el elemento mayor ha “burbujeado” hasta la cima de la sublista actual. Por
18
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
ejemplo, después que la pasada 0 está completa, la cola de la lista A[n-1] está ordenada y
el frente de la lista permanece desordenado. Las etapas del algoritmo son :
El proceso termina con la pasada n-1, en la que el elemento más pequeño se almacena
en A[0] . El algoritmo tiene una mejora inmediata, el proceso de ordenación puede
terminar en la pasada n-1, o bien antes. Si en un una pasada no se produce intercambio
alguno entre elementos del array es porque ya está ordenado, entonces no es
necesario mas pasadas.
Procedimiento (Algoritmo)
Pseudocodigo: Complejidad
aux=vec[j]; T(1)
vec[j]=vec[j+1]; T(1)
vec[j+1]=aux;} T(1)
19
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Solución
Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor, si
este es realmente el mayor de todo el vector se llevará hasta la última casilla, si no es
así, será reemplazado por uno mayor que él
Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector.
Una de las deficiencias del algoritmo es que ya cuando ha ordenado parte del vector
vuelve a compararlo cuando esto ya no es necesario
Vector
Variables
pos 0 1 2 3 4 5 6 7
0 1 55 12 cambio 44 12 55 42 94 18 6 67
0 2 55 42 cambio 44 12 42 55 94 18 6 67
0 4 94 18 cambio 44 12 42 55 18 94 6 67
0 5 94 6 cambio 44 12 42 55 18 6 94 67
0 6 94 67 cambio 44 12 42 55 18 6 67 94
1 0 44 12 cambio 12 44 42 55 18 6 67 94
1 1 44 42 cambio 12 42 44 55 18 6 67 94
1 3 55 18 cambio 2 42 44 18 55 6 67 94
20
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Vector
Variables
pos 0 1 2 3 4 5 6 7
1 4 55 6 cambio 12 42 44 18 6 55 67 94
2 2 44 18 cambio 12 42 18 44 6 55 67 94
2 3 44 6 cambio 12 42 18 6 44 55 67 94
3 1 42 18 cambio 12 18 42 6 44 55 67 94
3 2 42 6 cambio 12 18 6 42 44 55 67 94
4 1 18 6 cambio 12 6 18 42 44 55 67 94
5 0 12 6 ordenado 6 12 18 42 44 55 67 94
Solución
Ir comparando desde la casilla 0 numero tras número hasta encontrar uno mayor, si
este es realmente el mayor de todo el vector se llevará hasta la última casilla, si no es
así, será reemplazado por uno mayor que él
Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector
Una de las deficiencias del algoritmo es que ya cuando ha ordenado parte del vector
vuelve a compararlo cuando esto ya no es necesario
21
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
arreglo
8 6 4 26 acción
original
22
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
23
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
El algoritmo terminará, bien cuando se finalice la última pasada (n-1) o bien cuando el
valor del interruptor sea falso (0), es decir no se haya hecho ningún intercambio. La
condición para realizar una nueva pasada se define en la expresión lógica: (pasada < n-1)
&& interruptor
C#
int temp = 0;
24
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
temp = vector[x];
vector[x-1] = temp;
25
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
El algoritmo básico del método Quicksort consiste en tomar cualquier elemento de la lista
al cual denominaremos como pivote, dependiendo de la partición en que se elija, el
algoritmo será más o menos eficiente.
26
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Otra opción puede ser recorrer la lista para saber de antemano qué elemento ocupará
la posición central de la lista, para elegirlo como pivote. Esto puede hacerse en O(n) y
asegura que hasta en el peor de los casos, el algoritmo sea O(n·log n). No obstante, el
cálculo adicional rebaja bastante la eficiencia del algoritmo en el caso promedio.
Técnicas de reposicionamiento
Una idea preliminar para ubicar el pivote en su posición final sería contar la cantidad de
elementos menores que él, y colocarlo un lugar más arriba, moviendo luego todos esos
elementos menores que él a su izquierda, para que pueda aplicarse la recursividad.
Existe, no obstante, un procedimiento mucho más efectivo. Se utilizan dos índices: i, al que
llamaremos índice izquierdo y j al que llamaremos índice derecho. El algoritmo es el
siguiente:
Cuando lista[i] sea mayor que el pivote y lista[j] sea menor, se intercambian los
elementos en esas posiciones
El punto en que se cruzan los índices es la posición adecuada para colocar el pivote,
porque sabemos que a un lado los elementos son todos menores y al otro son todos
mayores (o habrían sido intercambiados)
http://upload.wikimedia.org/wikipedia/commons/3/37/Bubble_sort_animation.gif
http://upload.wikimedia.org/wikipedia/commons/6/6a/Sorting_quicksort_anim.gif
Pseudocódigo
inicio
variables i,j,central:entero
leer(A[i])
Fin para
primero = 1
ultimo = 100
qsort(A[],100)
Fin
i = primero
j = ultimo
repetir
mientras A[i]central
j=j-1
fin mientras
si i < = j
aux = A[i]
A[j] = A[i]
A[i] = aux
28
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
i=i+1
j=j-1
fin si
si primero < j
partir(primero,j)
fin si
si i < ultimo
partir(i, ultimo)
fin si
29
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 10. Se ordena una lista de números enteros aplicando el algoritmo quicksort
30
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 11. Seguimiento del ejercicio se ordena una lista de números enteros aplicando el algoritmo quicksort
Nota: El algoritmo quicksort requiere una estrategia de partición y la selección idónea del
pivote. Las etapas fundamentales del algoritmo dependen del pivote elegido aunque la
estrategia de partición suele ser similar.
Lista original: 8 1 4 9 6 3 5 2 7 0
Solución
La etapa 2 requiere mover todos los elementos menores que el pivote a la parte izquierda
del array y los elementos mayores a la parte derecha. Para ello se recorre la lista de
31
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
izquierda a derecha utilizando un índice i, que se inicializa a la posición más baja (inferior),
buscando un elemento mayor al pivote. También se recorre la lista de derecha a izquierda
buscando un elemento menor. Para hacer esto se utilizará un índice j inicializado a la
posición más alta (superior).
Ilustración 12. Ordenar una lista de números enteros aplicando el algoritmo quicksort
Ilustración 13. Ordenar una lista de números enteros aplicando el algoritmo quicksort
Ilustración 14. Ordenar una lista de números enteros aplicando el algoritmo quicksort
32
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 15. Ordenar una lista de números enteros aplicando el algoritmo quicksort
Ilustración 16. Ordenar una lista de números enteros aplicando el algoritmo quicksort
Los índices tienen actualmente los valores i = 5, j = 5. Continua la exploración hasta que i
> j, acaba con i = 6, j = 5.
Ilustración 17. Ordenar una lista de números enteros aplicando el algoritmo quicksort
En esta posición los índices i y j han cruzado posiciones en el array. En este caso se
detiene la búsqueda y no se realiza ningún intercambio ya que el elemento al que accede j
está ya correctamente situado. Las dos sublistas ya han sido creadas, la lista original se ha
dividido en dos particiones:
33
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 18. Ordenar una lista de números enteros aplicando el algoritmo quicksort
Solución
(IZQ-DER)
34
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Conjunto
x16
(DER-IZQ)
x44
(DER-IZQ)
(IZQ-DER)
x35
(DER-IZQ)
35
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
12, 08
x12
(DER-IZQ)
El vector ordenado:
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un
montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima)
en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una
propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o
el mayor, según se haya definido el montículo) de todos los almacenados en él.
36
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Descripción
montículo M
integer i := 124578
for i = 0..n:
insertar_en_monticulo(M, A[i])
for i = 0..n:
A[i] = extraer_cima_del_monticulo(M)
return A
http://upload.wikimedia.org/wikipedia/commons/f/fe/Heap_sort_example.gif
#include "HeapSort.h"
37
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
#include <iostream>
#include <math.h>
this->array = array;
this->arraySize = arraySize;
void HeapSort::heapsort()
this->crearHeap( i );
int j = i;
38
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
this->array[padre] = this->array[j];
this->array[j] = aux;
j = padre;
void HeapSort::DoSort()
this->heapsort();
void main()
39
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 20. John Von Neumann Fue desarrollado en 1945 por John Von Neumann.
El ordenamiento por mezcla incorpora dos ideas principales para mejorar su tiempo de
ejecución:
1. Una lista pequeña necesitará menos pasos para ordenarse que una lista grande
2. Se necesitan menos pasos para construir una lista ordenada a partir de dos listas
también ordenadas, que a partir de dos listas desordenadas. Por ejemplo, sólo será
necesario entrelazar cada lista una vez que están ordenadas
40
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Pseudocódigo
41
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
k = 0;
i = a;
j = c + 1;
n = b - a;
B[k] = A[i];
i = i + 1;
else
B[k] = A[j];
j = j + 1;
k = k + 1;
};
while ( i < c + 1 )
B[k] = A[i];
i++;
k++;
};
42
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
while ( j < b + 1 )
B[k] = A[j];
j++;
k++;
};
i = a;
A[i] = B[k];
i++;
};
};
begin
else:
return A
43
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
end
begin
integer p1 := 0
integer p2 := 0
//del array y no el length de este mismo, de otro modo seria (n1 + n2)
p1 := p1 + 1
else
p2 := p2 + 1
return R
end
C++
// En el código usamos la clase vector (#include <vector.h>) para crear los vectores,
// obviamente funciona igual de bien si se utilizan los arrays tipo C: TIPO V[]
44
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
aux[k] = v[i];
i++;
else {
aux[k] = v[j];
j++;
k++;
/* Uno de los dos sub-vectores ya ha sido copiado del todo, simplemente debemos
copiar todo el sub-vector que nos falte */
aux[k] = v[i];
i++;
k++;
aux[k] = v[j];
45
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
j++;
k++;
Visual Basic
Option Base 1
Dim N As Integer
46
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
For i = 1 To N
Next
MergeSort N, A, 1, N
For j = 1 To N
Next
Unload Me
End Sub
Sub Merge(N As Integer, ByRef A() As Integer, ini As Integer, med As Integer, fin As
Integer)
Dim n1 As Integer
n1 = med - ini + 1
Dim n2 As Integer
n2 = fin - med
For z = 1 To n1
L(z) = A(ini + z - 1)
Next
For z = 1 To n2
R(z) = A(med + z)
47
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Next
L(n1 + 1) = 32767
R(n2 + 1) = 32767
Dim i As Integer
Dim j As Integer
i=1
j=1
A(k) = L(i)
i=i+1
A(k) = R(j)
j=j+1
End If
Next
End Sub
Sub MergeSort(N As Integer, ByRef A() As Integer, inicio As Integer, fin As Integer)
48
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
End If
End Sub
Java
int n = L.length;
if (n > 1){
L1[i] = L[i];
L2[i-m] = L[i];
L = merge(OrdenaMerge(L1), OrdenaMerge(L2));
return L;
49
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
L[i-1] = l[i];
return L;
int i = 0;
L[i++] = L1[0];
L1 = eliminar(L1);
if (L1.length == 0){
while (L2.length != 0) {
L[i++] = L2[0];
L2 = eliminar(L2);
else{
L[i++] = L2[0];
L2 = eliminar(L2);
if (L2.length == 0) {
while (L1.length != 0) {
L[i++] = L1[0];
50
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
L1 = eliminar(L1);
return L;
int x;
x = (int)(ran.nextDouble()*10000);
A[i] = x;
System.out.println(A[i]);
return A;
51
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
this.A = A;
Un algoritmo de búsqueda es aquel que está diseñado para localizar un elemento con
ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro
correspondiente a cierta persona en una base de datos, o el mejor movimiento en una
partida de ajedrez. La variante más simple del problema es la búsqueda de un número en
un vector.
Los fundadores de la técnica son George Dantzig, quien publicó el algoritmo simplex, en
1947, John von Neumann, que desarrolló la teoría de la dualidad en el mismo año y Leonid
52
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Aplicaciones
53
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
empresas, ya sea para aumentar al máximo los ingresos o reducir al mínimo los costos de
un sistema de producción, algunos ejemplos son la mezcla de alimentos, la gestión de
inventarios, la cartera y la gestión de las finanzas, la asignación de recursos humanos y
recursos de máquinas, la planificación de campañas de publicidad, etc.
Otros son:
Aprovechamiento óptimo de los recursos de una cuenca hidrográfica, para un año con
afluencias caracterizadas por corresponder a una determinada frecuencia
Soporte para toma de decisión en tiempo real, para operación de un sistema de obras
hidráulicas
54
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ejemplo 1. Este es un caso curioso, con solo 6 variables (un caso real de problema de
transporte puede tener fácilmente más de 1.000 variables) en el cual se aprecia la utilidad
de este procedimiento de cálculo.
55
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
56
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Sin embargo, formulando el problema para ser resuelto por la programación lineal se
tienen las siguientes ecuaciones:
Restricciones de la producción:
El algoritmo de búsqueda binaria es un excelente método para buscar datos dentro de una
estructura (generalmente un arreglo unidimensional). Se le da el nombre de búsqueda
57
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
binaria por que el algoritmo divide en dos el arreglo, aludiendo al concepto de bit, el cual
puede tener dos estados.
La única condición para usar este algoritmo es que los datos dentro del arreglo estén
ordenados de menor a mayor.
La solución más fácil para realizar una búsqueda es por fuerza bruta, pero este método
puede resultar bastante ineficiente cuando se tiene una gran cantidad de datos, ya que
habría que buscar posición por posición hasta encontrar el dato que queremos.
El pseudocódigo por fuerza bruta es bastante sencillo:
Solo se recorre todo el arreglo y verificamos si la posición i es igual al dato que queremos
buscar, el código anterior se puede mejorar simplemente agregandole una bandera, pero
aun así no es lo suficientemente bueno.
5. Volvemos al paso 2
58
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ejemplo 1. Supongamos que tenemos el arreglo {2, 3, 5, 7, 9, 11, 14, 18, 22, 25} y
queremos buscar el dato 18.
1. Entonces
centro = (9 + 0) / 2
centro = 4
actualizamos inferior = centro + 1, esto hace que podamos descartar todos los datos
del centro hacia atrás, esto reduce nuestro arreglo a {11, 14, 18, 22, 25}
59
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
60
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
System.out.println("\nElemento no encontrado");
else
System.out.println("\nElemento " + elemento + " encontrado en la posición " +
posicion);
}
}
Un árbol binario de búsqueda también llamados BST (acrónimo del inglés Binary
Search Tree) es un tipo particular de árbol binario que presenta una estructura de datos
en forma de árbol usada en informática.
Ilustración 26. Árbol binario de búsqueda. Para una fácil comprensión queda resumido
en que es un árbol binario que cumple que
el subárbol izquierdo de cualquier nodo (si
no está vacío) contiene valores menores
que el que contiene dicho nodo, y el
subárbol derecho (si no está vacío)
contiene valores mayores.
Para estas definiciones se considera que hay una relación de orden establecida entre los
elementos de los nodos. Que cierta relación esté definida, o no, depende de cada lenguaje
de programación. De aquí se deduce que puede haber distintos árboles binarios de
búsqueda para un mismo conjunto de elementos.
La altura h en el peor de los casos siempre el mismo tamaño que el número de elementos
disponibles. Y en el mejor de los casos viene dada por la expresión
61
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Dependiendo de las necesidades del usuario que trate con una estructura de este tipo se
podrá permitir la igualdad estricta en alguno, en ninguno o en ambos de los subárboles
que penden de la raíz. Permitir el uso de la igualdad provoca la aparición de valores dobles
y hace la búsqueda más compleja.
Un árbol binario de búsqueda no deja de ser un caso particular de árbol binario, así
usando la siguiente especificación de árbol binario.
Operaciones
Todas las operaciones realizadas sobre árboles binarios de búsqueda están basadas en la
comparación de los elementos o clave de los mismos, por lo que es necesaria una
subrutina, que puede estar predefinida en el lenguaje de programación, que los compare y
pueda establecer una relación de orden entre ellos, es decir, que dados dos elementos sea
capaz de reconocer cual es mayor y cual menor. Se habla de clave de un elemento porque
en la mayoría de los casos el contenido de los nodos será otro tipo de estructura y es
necesario que la comparación se haga sobre algún campo al que se denomina clave.
Búsqueda
La búsqueda consiste acceder a la raíz del árbol, si el elemento a localizar coincide con
éste la búsqueda ha concluido con éxito, si el elemento es menor se busca en el subárbol
izquierdo y si es mayor en el derecho. Si se alcanza un nodo hoja y el elemento no ha sido
encontrado se supone que no existe en el árbol. Cabe destacar que la búsqueda en este
tipo de árboles es muy eficiente, representa una función logarítmica. El máximo número
de comparaciones que necesitaríamos para saber si un elemento se encuentra en un árbol
binario de búsqueda estaría entre [log2(N+1)] y N, siendo N el número de nodos. La
búsqueda de un elemento en un ABB (Árbol Binario de Búsqueda) se puede realizar de
dos formas, iterativa o recursiva.
62
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
C#
abb p;
dato e;
e=NULL;
p=t;
if (!estaVacio(p))
if (k < p->k)
p=p->l;
if (p->k < k)
p=p->r;
if (!estaVacio(p) &&(p->d!=NULL) )
63
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
e=copiaDato(p->d);
return e;
Inserción
La inserción es similar a la búsqueda y se puede dar una solución tanto iterativa como
recursiva. Si tenemos inicialmente como parámetro un árbol vacío se crea un nuevo nodo
como único contenido el elemento a insertar. Si no lo está, se comprueba si el elemento
dado es menor que la raíz del árbol inicial con lo que se inserta en el subárbol izquierdo y
si es mayor se inserta en el subárbol derecho. De esta forma las inserciones se hacen en
las hojas.
VARIABLES
nuevonodo,pav,pret:TABB
clavenueva:Tclave
ele:TElemento
INICIO
EN OTRO CASO
ele = pav^.elem
EN OTRO CASO
65
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
FINSI
FINMIENTRAS
ele = pret^.elem
EN OTRO CASO
FINSI
FINSI
FIN
VARIABLES
ele:TElemento
INICIO
SI (ABBVacío(árbol)) ENTONCES
EN OTRO CASO
ele = InfoABB(árbol)
InsertarABB(árbol^.izq, dato)
66
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
EN OTRO CASO
InsertarABB(árbol^.dch, dato)
FINSI
FINSI
FIN
Borrado
Borrar un nodo sin hijos o nodo hoja: simplemente se borra y se establece a nulo
el apuntador de su padre.
Nodo a eliminar 74
Nodo a eliminar 70
67
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Borrar un nodo con dos subárboles hijo: la solución está en reemplazar el valor
del nodo por el de su predecesor o por el de su sucesor en inorden y posteriormente
borrar este nodo. Su predecesor en inorden será el nodo más a la derecha de su
subárbol izquierdo (mayor nodo del subarbol izquierdo), y su sucesor el nodo más a la
izquierda de su subárbol derecho (menor nodo del subarbol derecho). En la siguiente
figura se muestra cómo existe la posibilidad de realizar cualquiera de ambos
reemplazos:
Nodo a eliminar 59
C#
tArbol *aux;
if (*a == NULL)
return;
borrar(&(*a)->hDerecho, elem);
borrar(&(*a)->hIzquierdo, elem);
68
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
aux = *a;
if ((*a)->hIzquierdo == NULL)
*a = (*a)->hDerecho;
*a = (*a)->hIzquierdo;
else
reemplazar(&(*a)->hIzquierdo, &aux);
free(aux);
if ((*a)->hDerecho == NULL)
(*aux)->clave = (*a)->clave;
*aux = *a;
*a = (*a)->hIzquierdo;
else
reemplazar(&(*a)->hDerecho, aux);
69
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Recorridos
Los recorridos en anchura son por niveles, se realiza horizontalmente desde la raíz a
todos los hijos antes de pasar a la descendencia de alguno de los hijos.
El coste de recorrer el ABB es O(n) ya que se necesitan visitar todos los vértices.
El recorrido en profundidad lleva al camino desde la raíz hacia el descendiente más lejano
del primer hijo y luego continúa con el siguiente hijo. Como recorridos en profundidad
tenemos inorden, preorden y postorden.
Los tres criterios principales para recorrer un árbol binario y visitar todos sus nodos son,
recorrer el árbol en:
Preorden:
1. Visitar la raíz
Entreorden:
2. Visitar la raíz
Postorden:
3. Visitar la raíz
70
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Inorden =[6, 9, 13, 14, 15, 17, 20, 26, 64, 72].
Solución.
Recorridos
Postorden(Izq-Der-Raiz): D,E,B,F,G,C,A
71
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Definición
Una función de Hash es una caja negra que tiene como entrada una llave y como salida una
dirección h(K)=address
Ejemplo. h(LOWELL)=4
Función Hash
A las funciones hash (adopción más o menos directa del término inglés hash function)
también se les llama funciones picadillo, funciones resumen o funciones de digest
(adopción más o menos directa del término inglés equivalente digest function) 1 2 3 Una
función hash H es una función computable mediante un algoritmo,
72
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
H: U → M
X → h(x)
que tiene como entrada un conjunto de elementos, que suelen ser cadenas, y los
convierte (mapea) en un rango de salida finito, normalmente cadenas de longitud fija. Es
decir, la función actúa como una proyección del conjunto U sobre el conjunto M.
Observar que M puede ser un conjunto definido de enteros. En este caso podemos
considerar que la longitud es fija si el conjunto es un rango de números de enteros ya que
podemos considerar que la longitud fija es la del número con mayor número de cifras.
Todos los números se pueden convertir al número especificado de cifras simplemente
anteponiendo ceros.
Terminología asociada
Se dice que se produce una colisión cuando dos entradas distintas de la función de hash
producen la misma salida. De la definición de función hash podemos decir que U, el
dominio de la función, puede tener infinitos elementos; sin embargo, M, el rango de la
función, tiene un número finito de elementos debido a que el tamaño de sus cadenas es
fijo. Por tanto la posibilidad de existencia de colisiones es intrínseca a la definición de
función hash. Una buena función de hash es una que tiene pocas colisiones en el conjunto
esperado de entrada. Es decir, se desea que la probabilidad de colisión sea muy baja.
73
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Aplicaciones
En la firma digital
74
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
a) Cuando se usa para firmar algoritmos de firma por bloques donde los
mensajes son más largos que el bloque, no es seguro firmar mensajes bloque a
bloque ya que un enemigo podría borrar bloques del mensaje firmado o
insertar bloques de su elección en el mensaje antes de que sea firmado. Al
usar una función hash hacemos una transformación que hace a la firma
dependiente de todas las partes del mensaje.
b) Normalmente los valores hash son mucho más cortos que los datos originales
de entrada. Se puede mejorar mucho la velocidad de firma firmando el valor
hash en lugar de firmar el dato original.
75
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
hash criptográficas para que sea difícil generar otros ficheros falso que tengan el
mismo valor hash. Otro ejemplo de uso esta tecnología para verificar la integridad
es calcular y guardar el valor hash de archivos para poder verificar posteriormente
que nadie (Ejemplo un virus) los ha modificado. Si en lugar de verificar la integridad
de un solo contenido lo que se quiere es verificar la integridad de un conjunto de
elementos, se pueden usar algoritmos basados en funciones hash como los árboles
de Merkle que se basan en aplicar reiteradamente las funciones hash sobre los
elementos del conjunto y sobre los valores hash resultantes.
76
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Derivación de claves: Por ejemplo en algunas aplicaciones usan funciones hash para
derivar una clave de sesión a partir de un número de transacción y una clave
maestra. Otro ejemplo de aplicación sería el uso de funciones hash para conseguir
sistemas de autenticación con claves de un solo uso o OTP (del inglés One Time
Password). En este tipo de sistemas la clave es válida para un solo uso. Estos
sistemas están basados se basan en tener un semilla inicial y luego ir generando
claves (mediante un algoritmo que puede usar funciones hash) que pueden tener
un solo uso y así evitar ataques de REPLAY.
77
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
solamente capturando el sonido y comparándolo con estos valores hash. Este tipo
de algoritmos también se puede utilizar para protección de contenidos multimedia
ya que permite validar automáticamente si cierto fichero multimedia está
protegido o no por derechos de autor.
Identificar un registro en una base de datos y permitir con ello un acceso más
rápido a los registros (incluso más rápido que teniendo índices).
Detección de virus: Para detectar los virus muchos antivirus definen funciones
hash que capturan la esencia del virus y que permiten distinguirlos de otros
programas o virus. Es lo que se llama firma del virus. Estas firmas son usadas por
los antivirus para poder detectarlos.
Muchas de las aplicaciones de las funciones hash son relativas al campo de la criptografía
(Cifradores, acumuladores criptográficos, firma digital, protocolos criptográficos de
autenticación). La Criptografía es una rama de las matemáticas que proporciona
herramientas para conseguir seguridad en los sistemas de información. Las funciones hash
interesantes en el área de la criptografía se caracterizan por cumplir una serie de
propiedades que permiten a las utilidades criptográficas que las utilizan ser resistente
frente ataques que intentan vulnerar la seguridad del sistema. A las funciones hash que
cumplen estas propiedades se las llama funciones hash criptográficas.
78
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
La función de hash ideal debería ser biyectiva, esto es, que a cada elemento le
corresponda un índice, y que a cada índice le corresponda un elemento, pero no siempre
es fácil encontrar esa función, e incluso a veces es inútil, ya que puedes no saber el
número de elementos a almacenar. La función de hash depende de cada problema y de
cada finalidad, y se pueden utilizar con números o cadenas, pero las más utilizadas son:
Restas sucesivas: esta función se emplea con claves numéricas entre las que existen
huecos de tamaño conocido, obteniéndose direcciones consecutivas. Por ejemplo, si el
número de expediente de un alumno universitario está formado por el año de entrada
en la universidad, seguido de un número identificativo de tres cifras, y suponiendo que
entran un máximo de 400 alumnos al año, se le asignarían las claves:
79
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
...
yyyy-nnn --> N = yyyynnn-1998000+(400*(yyyy-1998))
13000000 --> 0
12345678 --> 7
13602499 --> 1
71140205 --> 6
73062138 --> 6
Mitad del cuadrado: consiste en elevar al cuadrado la clave y coger las cifras centrales.
Este método también presenta problemas de colisión:
123*123=15129 --> 51
136*136=18496 --> 84
730*730=532900 --> 29
301*301=90601 --> 06
625*625=390625 --> 06
Truncamiento: consiste en ignorar parte del número y utilizar los elementos restantes
como índice. También se produce colisión. Por ejemplo, si un número de 8 cifras se
debe ordenar en un array de 1000 elementos, se pueden coger la primer, la tercer y la
última cifras para formar un nuevo número:
81
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
contiene la última "A" de la palabra, y así sucesivamente hasta que comprueba la primera
posición del texto para una "A".
La razón por la que Boyer-Moore elige este enfoque está más clara cuando consideramos
que pasa si la verificación falla-por ejemplo, si en lugar de una "N" en la octava posición,
encontramos una "X". La "X" no aparece en "ANPANMAN", y esto significa que no hay
coincidencia para la cadena buscada en el inicio del texto-o en las siguientes siete
posiciones, puesto que todas fallarían también con la "X". Después de comprobar los ocho
caracteres de la palabra "ANPANMAN" para tan sólo un carácter "X", seremos capaces
de saltar hacia delante y comenzar buscando una coincidencia en el final en la 16.ª posición
del texto.
Esto explica por qué el rendimiento del caso promedio del algoritmo, para un texto de
El algoritmo pre-calcula dos tablas para procesar la información que obtiene en cada
verificación fallada: una tabla calcula cuantas posiciones hay por delante en la siguiente
búsqueda basada en el valor del carácter que no coincide; la otra hace un cálculo similar
basado en cuantos caracteres coincidieron satisfactoriamente antes del intento de
coincidencia fallado. (Puesto que estas dos tablas devuelven resultados indicando cuán
lejos "saltar" hacia delante, son llamada en ocasiones "tablas de salto", que no deberían ser
confundidas con el significado más común de tabla de saltos en ciencia de la computación)
El algoritmo se desplazará con el valor más grande de los dos valores de salto cuando no
ocurra una coincidencia.
82
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Tabla primera
La "A" no coincidente en la posición 5 (3 atrás desde la última letra de la aguja) excluye las
primeras 6 de las posibles posiciones iniciales mostradas.
Rellénese la primera tabla como sigue, para cada i menor que la longitud de la cadena de
búsqueda, constrúyase el patrón consistente en los últimos i caracteres de la cadena
precedida por un carácter no-coincidente, alinéense a la derecha el patrón y la cadena, y
anótese el menor número de caracteres para que el patrón tenga que desplazarse a la
izquierda para una coincidencia.
4 ANMAN 6
5 PANMAN 6
83
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
6 NPANMAN 6
7 ANPANMAN 6
Segunda tabla
Inicia en el último carácter de la cadena vista y muévase hacia el primer carácter, cada vez
que usted se mueve a la izquierda, si el carácter sobre el que está no está en ya en la tabla,
añádalo; su valor de desplazamiento es la distancia desde el carácter más a la derecha.
Todos los otros caracteres reciben un valor igual a la longitud de la cadena de búsqueda.
Ejemplo: Para la cadena ANPANMAN, la segunda tabla sería como se muestra (por claridad,
las entradas son mostradas en el orden que serían añadidas a la tabla): (La N que se
supuestamente sería cero está basada en la segunda N desde la derecha porque solo
anotamos el cálculo para las primeras letras).
N 3
P 5
Caracteres restantes 8
84
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Introducción
La teoría de grafos (también llamada teoría de las gráficas) es un campo de estudio de las
matemáticas y las ciencias de la computación, que estudia las propiedades de los grafos
(también llamadas gráficas) estructuras que constan de dos partes, el conjunto de vértices,
nodos o puntos; y el conjunto de aristas, líneas o lados (edges en inglés) que pueden ser
orientados o no, la teoría de grafos es una rama de la matemáticas discretas y aplicadas, y
es una disciplina que unifica diversas áreas como combinatoria, álgebra, probabilidad,
geometría de polígonos, aritmética y topología, actualmente ha tenido mayor
preponderancia en el campo de la informática, las ciencias de la computación y
telecomunicaciones.
Ejemplos de grafos:
85
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 34. Grafo pez Ilustración 35. Grafo arco Ilustración 36. Grafo dodecaedro
Definición 1:
Definición 2.
Los extremos de una arista son los vértices que comparte dicha arista
86
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Por otro lado, debido a su generalidad y a la gran diversidad de formas que pueden usarse,
resulta complejo tratar con todas las ideas relacionadas con un grafo.
La teoría de los grafos estudia las propiedades de colecciones de objetos llamados nodos
(o vértices) conectados por vínculos llamados enlaces (varios otros nombres son:
arcos,
Grafo
87
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Historia
El origen de la teoría de grafos se remonta al siglo XVIII Ilustración 40. Los 7 puentes del río
pregel en Königsberg
con el problema de los puentes de Königsberg, el cual
consistía en encontrar un camino que recorriera los
siete puentes del río pregel en la ciudad de Königsberg,
actualmente Kaliningrado, de modo que se recorrieran
todos los puentes pasando una sola vez por cada uno de
ellos.
88
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 43. Francis Guthirie En 1852 Francis Guthrie planteó el problema de los
cuatro colores el cual afirma que es posible, utilizando
solamente cuatro colores, colorear cualquier mapa de
países de tal forma que dos países vecinos nunca tengan el
mismo color. Este problema, que no fue resuelto hasta un
siglo después por Kenneth Appel y Wolfgang Haken en
1976, puede ser considerado como el nacimiento de la
teoría de grafos. Al tratar de resolverlo, los matemáticos
definieron términos y conceptos teóricos fundamentales
de los grafos.
89
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
El término «grafo», proviene de la expresión «graphic notation» usada por primera vez
por Edward Frankland y posteriormente adoptada por Alexander Crum Brown en 1884, y
hacía referencia a la representación gráfica de los enlaces entre los átomos de una
molécula.
Aplicaciones
La teoría de grafos resuelve diversos problemas como por ejemplo la síntesis de circuitos
secuenciales, contadores o sistemas de apertura, se utiliza para diferentes áreas por
ejemplo, Dibujo computacional en Ingeniería, para modelar trayectos como el de una
línea de autobús a través de las calles de una ciudad, en el que se puede obtener caminos
óptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de
Floyd. Para la administración de proyectos, se utilizan técnicas como PERT en las que se
modelan los mismos utilizando grafos y optimizando los tiempos para concretar los
mismos, ha servido de inspiración para las ciencias sociales, en especial para desarrollar un
concepto no metafórico de red social que sustituye los nodos por los actores sociales y
verifica la posición, centralidad e importancia de cada actor dentro de la red. Esta medida
permite cuantificar y abstraer relaciones complejas, de manera que la estructura social
puede representarse gráficamente. Por ejemplo, una red social puede representar la
estructura de poder dentro de una sociedad al identificar los vínculos (aristas), su
dirección e intensidad, la idea de la manera en que el poder se transmite y a quiénes.
90
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 44. Mapas Ilustración 45. Ilustración 46. Ilustración 47. Ilustración 48.
conceptuales Plano de estaciones Circuitos electrónicos Organigramas Isómeros Química
del metro.
Tipos de grafos
Grafo simple. o simplemente grafo es aquel que acepta una sola una arista
uniendo dos vértices cualesquiera. Esto es equivalente a decir que una arista
cualquiera es la única que une dos vértices específicos. Es la definición estándar de
un grafo.
Multígrafo. o pseudografo son grafos que aceptan más de una arista entre dos
vértices. Estas aristas se llaman múltiples o lazos (loops en inglés). Los grafos simples
son una subclase de esta categoría de grafos. También se les llama grafos no-
dirigidos.
Grafo dirigido. Son grafos en los cuales se ha añadido una orientación a las aristas,
representada gráficamente por una flecha.
Hipergrafo. Grafos en los cuales las aristas tienen más de dos extremos, es decir,
las aristas son incidentes a 3 o más vértices.
91
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
92
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Vértice adyacente: El vértice y es adyacente al vértice x, si y solo si, (x, y) es una arista del
grafo. En este caso, el arco (x, y) es incidente sobre el vértice y.
Camino: Es una secuencia de vértices v1, v2,…, vn tal que (vi -> vi+1) es una arista para 1
i n. Este camino conecta a v1 con vn.
Un ejemplo de grafo dirigido lo constituye la red de aguas de una ciudad ya que cada
tubería sólo admite que el agua la recorra en un único sentido.
Grafo Concepto
93
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Grafo Concepto
Ilustración 58. Arista Arista. Una arista o arco es una relación matemática
que conecta dos vértices. Una arista dirigida es una
arista de un dígrafo y tiene una dirección asociada
consigo, esto es, posee un vértice inicial y un vértice
final. Una arista no dirigida es una donde no se
Vértices unidos por una arista. distingue un vértice inicial ni uno final.
94
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Grafo Concepto
Ilustración 60. Bucle o lazo Bucle. Un bucle o lazo (loop en inglés) en un grafo o
digrafo es una arista que conecta al mismo vértice
consigo mismo. Un grafo simple no puede tener bucles.
95
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Camino.
Un camino es una sucesión de vértices tal que de cada uno de sus vértices existe una
arista hacia el vértice sucesor. Un camino simple es aquel en que todas las aristas del
camino son diferentes.
Dos caminos son ajenos o independientes si no tienen ningún vértice en común excepto el
primero y el último.
La longitud de un camino es el número de aristas que usa dicho camino, contando aristas
recorridas varias veces el mismo número de veces que las recorramos. En el ejemplo, (1,
2, 5, 1, 2, 3) es un camino con longitud 5, y (5, 2, 1) es un camino simple de longitud 2.
Camino simple: Es un camino en donde todos sus vértices son distintos, solo su vértice
de partida y de fin pueden ser los mismos.
Longitud del camino: Es el número de arcos a lo largo del camino (número de vértices
- 1, en caminos simples que no vuelven al punto de partida).
Grafo dirigido etiquetado: Es un grafo dirigido en el cual cada arco, cada vértice o
ambos pueden tener una etiqueta asociada. Una etiqueta puede ser un nombre o un valor
de cualquier tipo.
Ejemplos:
96
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
4.3.5. Arboles
Un árbol es una estructura de datos jerarquizada Cada dato reside en un nudo, y existen
relaciones de parentesco entre nudos.
Ilustración 66. Árbol Un árbol está constituido por una colección de elementos
denominados nudos, uno de los cuales se distingue con el
nombre raíz, junto con una relación de 'parentesco' que
establece una estructura jerárquica sobre los nudos. Cada
nudo tiene un padre (excepto la raíz) y puede tener cero o
más hijos. Se denomina hoja a un nudo sin hijos.
97
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Nivel: número de ramas que hay que recorrer para llegar de la raíz a un nodo. Ejemplo: el
nivel del nodo a es 1 (es un convenio), el nivel del nodo e es 3.
Anchura: es el mayor valor del número de nodos que hay en un nivel. En la figura, la
anchura es 3.
98
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
99
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Introducción
Lenguajes de programación hay en gran cantidad, algunos han evolucionado a lo largo del
tiempo y siguen vigentes en el transcurso de muchos años, mientras que otros han sido
operativos durante un período más o menos largo y actualmente no se usan.
Dada esta gran variedad de lenguajes, no se pretende dar una visión de todos, sino una
clasificación en diversos tipos y concretar algunos de ellos. En general un lenguaje es un
método conveniente y sencillo de describir las estructuras de información y las secuencias
de acciones necesarias para ejecutar una tarea concreta.
100
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
escribieron en ese tipo de código, denominado código máquina basado en dos dígitos 0 y
1, por ser entendible directamente por la máquina (computadora). La enojosa tarea de
programar en código máquina hizo que el alfabeto evolucionase y los lenguajes de
programación comenzaran a utilizar códigos o juegos de caracteres similares al utilizado
en los lenguajes humanos. Así, hoy día la mayoría de las computadoras trabajan con
diferentes tipos de juegos de caracteres de los que se destacan el código ASCII y el
EBCDIC.
Dos son los códigos más utilizados actualmente en computadoras, ASCII (American
Standard Code for Information Interchan-c) y EBCDIC (Extended Binary Coded Decimal
Intercha-@ige Code).
El código ASCII básico utiliza 7 bits (dígitos binarios. 0,1) para cada carácter a representar,
lo que supone un total de 27 (128) caracteres distintos. El código ASCII ampliado utiliza 8
bits y en ese caso consta de 256 caracteres. Este código ASCII ha adquirido una gran
popularidad. Ya que es el estándar en todas las familias de computadoras personales.
El código EBCDIC utiliza 8 bits por carácter v por consiguiente consta de 256 caracteres
distintos, su notoriedad reside en ser el utilizado por la firma, en general un carácter
ocupara un byte de almacenamiento de memoria, en computación, un programa es una
secuencia de instrucciones que permiten a una computadora procesar información
conocida como datos de entrada (input) para producir una información de salida (ouput) o
resultados.
Sintaxis: Reglas que indican cómo realizar las construcciones del lenguaje.
Lenguajes de alto nivel: Son lenguajes de programación que se asemejan a las lenguas
humanas usando palabras y frases fáciles de entender.
En un lenguaje de bajo nivel cada instrucción corresponde a una acción ejecutable por la
computadora, mientras que en los lenguajes de alto nivel una instrucción suele
corresponder a varias acciones.
102
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
• Utilizan notaciones cercanas a las usadas por las personas en un determinado ámbito
• Se suelen incluir instrucciones potentes de uso frecuente que son ofrecidas por el
lenguaje de programación
Lenguajes de programación hay en gran cantidad, algunos han evolucionado a lo largo del
tiempo y siguen vigentes en el transcurso de muchos años, mientras que otros han sido
operativos durante un período más o menos largo y actualmente no se usan. Dada esta
gran variedad de lenguajes, no se pretende dar una visión de todos, sino una clasificación
en diversos tipos y concretar algunos de ellos. En general un lenguaje es un método
conveniente y sencillo de describir las estructuras de información y las secuencias de
acciones necesarias para ejecutar una tarea concreta.
103
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Dos son los códigos más utilizados actualmente en computadoras, ASCII (American
Standard Code for Information Interchan-c) y EBCDIC (Extended Binary Coded Decimal
Intercha-@ige Code). El código ASCII básico utiliza 7 bits (dígitos binarios. 0,1) para cada
carácter a representar, lo que supone un total de 27 (128) caracteres distintos. El código
ASCII ampliado utiliza 8 bits y en ese caso consta de 256 caracteres. Este código ASCII ha
adquirido una gran popularidad, ya que es el estándar en todas las familias de
computadoras personales.
El código EBCDIC utiliza 8 bits por carácter v por consiguiente consta de 256 caracteres
distintos. Su notoriedad reside en ser el utilizado por la firma. En general un carácter
ocupara un byte de almacenamiento de memoria. Al igual que los lenguajes humanos, tales
como el inglés o el español, los lenguajes de programación poseen una estructura
(gramática o sintaxis) y un significado (semántica). La gramática española trata de los
diferentes, modos (reglas) en que pueden ser combinados los diferentes tipos de palabras
para formar sentencias o frases aceptables en español. Los lenguajes de computadoras
tienen menos combinaciones aceptables que los lenguajes naturales, sin embargo, estas
combinaciones deben ser utilizadas correctamente; ello contrasta con los lenguajes
naturales que se pueden utilizar aunque no sigan reglas gramaticales e incluso aunque no
sean comprendidos.
Generaciones de Lenguajes:
Estos lenguajes están íntimamente ligados a la CPU y por eso no son transferibles.
(Baja portabilidad). Para los programadores es posible escribir programas directamente
en lenguaje de máquina, pero las instrucciones son difíciles de recordar y los
programas resultan largos y laboriosos de escribir y también de corregir y depurar.
105
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Con la tercera generación avanzamos a los lenguajes de alto nivel, muchos de los
cuales se consideran exportables. Esto es, pueden correr en más de un tipo de
computadoras, se pueden exportar de una máquina a otra.
107
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Intérpretes y Compiladores
Ejemplos. Pascal, Cobol, Fortran, Ada, Modula 2, C, C++, C#, Php-Zend y muchos
otros. El compilador, informa al usuario de la presencia de errores en el programa fuente,
pasándose a crear el programa objeto cuando está libre de errores. El código objeto
puede ser ejecutado posteriormente. Una vez traducido un programa, su ejecución es
independiente de su compilación. Involucra dos pasos en su operación:
La ventaja principal es que al tener el código objeto, el programa se ejecuta más rápido.
Fases de compilación:
109
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Lenguajes de programación
Los lenguajes más antiguos han experimentado revisiones periódicas para reflejar la
influencia de otras áreas de la computación; los más nuevos reflejan una composición de
experiencias adquiridas en el diseño y de usos de estos y cientos de otros lenguajes más
antiguos. Algunas de las principales influencias en la evolución de diseños de lenguajes se
listan a continuación:
110
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Las aplicaciones
El lenguaje apropiado que se use a menudo, depende del dominio de la aplicación que
resuelve el problema. El lenguaje adecuado que conviene usar para diversos dominios de
aplicación ha evolucionado a lo largo de los últimos 30 años. A continuación se muestra
una tabla con algunos de los lenguajes más importantes para diversos dominios de
aplicación.
FORTRAN
En los años 50 se realizaron varios compiladores primitivos y fue en 1957 cuando apareció
el primer compilador de FORTRAN. El compilador de FORTRAN (FORmula
TRANslator) estaba diseñado para traducir a lenguaje máquina expresiones y operaciones
matemáticas, e incluso permitía la manipulación de matrices.
La aparición del FORTRAN fue un gran cambio para los programadores que no todos
aceptaron de buen grado. No les gustaba que sus programas fueran tratados por la
112
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
computadora como meros datos, y argumentaban que el código máquina generado por el
compilador nunca podría ser tan eficiente como el escrito por ellos directamente.
Esto no era generalmente así, puesto que el FORTRAN no fue diseñado pensando en
crear un lenguaje bien estructurado sino pensando en crear un traductor de expresiones
aritméticas a código máquina muy eficiente. Por ello, el diseño lógico de la computadora
IBM 704 para el que fue creado casi puede deducirse del lenguaje FORTRAN. En
diferentes versiones, cada vez más estructuradas, el lenguaje FORTRAN se ha utilizado
extensivamente desde que apareció hasta hoy en día, y puede considerarse el lenguaje
estándar del cálculo científico.
COBOL
Esta organización es en gran parte el resultado de dos objetivos del diseño: el de separar
los elementos del programa dependientes de la máquina y el de separar las descripciones
de los algoritmos, para que cada uno pueda modificarse sin afectar al otro. El resultado es
una organización tripartita de programa. Las representaciones de datos de COBOL, tienen
un sabor definitivo de aplicación a los negocios pero son bastantes flexibles. La estructura
de datos básica es el registro. Los números y las cadenas de caracteres son los tipos de
datos elementales básicos. Las operaciones primarias integradas incluyen operaciones
aritméticas simples, lógicas y relaciónales.
ALGOL60
conocida data del año 1968 que se conoció con el nombre de Proporciona recursos para
estructurar datos, similares a los que se pueden encontrar en lenguajes derivados de
ALGOL 60 como Pascal, C o Modula-2. Permite sobrecarga de operadores y colocar una
declaración en cualquier lugar donde pueda aparecer un enunciado (como en C++).
LISP
114
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
BASIC
El tiempo de ejecución que emplea el programa compilado puede ser hasta diez veces
inferior que el empleado en el caso de actuar bajo intérprete. Mientras se está en fase de
desarrollo es muy conveniente trabajar en intérprete porque la inmediata ejecución del
programa en cada momento permite detectar los errores con gran rapidez, lo que es muy
positivo en un lenguaje destinado a principiantes que lógicamente cometen un gran
número de errores al desarrollar un programa.
El BASIC es un lenguaje poco estandarizado y hay diferencias bastantes apreciables del que
se utiliza en unos y otros sistemas. Aunque es un lenguaje poco utilizado en la informática
profesional, se ha empleado mucho en los microcomputadores y mientras en los primeros
años de los 80´s fue el lenguaje en el que se solían desarrollar las aplicaciones en micros.
Hay una versión avanzada del BASIC, denominada QUICK BASIC que además de dar
mayores prestaciones presenta las características de un lenguaje de programación algo
estructurado, evitando así el desarrollo de los típicos programas espagueti. A fines de los
90´s el BASIC ha dejado de utilizarse. Su heredero, aunque ya casi irreconocible, es el
Visual Basic cuya orientación a objetos lo ha hecho casi imprescindible en la programación
de la parte cliente de cualquier sistema cliente servidor.
115
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
PASCAL
Pascal que se nombró gracias al matemático Blaise Pascal, el original idioma de Pascal
apareció en 1971 con última revisión publicada en 1973. Fue diseñado para enseñar las
técnicas de programación y otros temas a los estudiantes de la universidad y era el idioma
de opción de los años 60 a los 80s. Es un lenguaje estructurado en bloques. Un programa
en Pascal está formado siempre por un solo bloque de programas principal, que contiene
dentro de él definiciones del subprograma usado.
La parte más innovadora del diseño descansa en el trato de los tipos de datos. Una gran
sección de diferentes tipos de datos se proporciona: enteros, reales, carácter,
enumeraciones, booleanos, arreglos, registros, archivos secuenciales y una forma limitada
de conjuntos. Pascal permite que se dé por el programador la definición separada de un
tipo de datos. Pascal puede implementarse en forma eficiente sobre computadoras
convencionales. La traducción se hace en el código de máquina ejecutable, a pesar de que
116
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
117
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
118
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
Ilustración 79. Bjarne Stroustrup En 1980 Bjarne Stroustrup de los laboratorios Bell de
Murray Hill, New Jersey, inspirado en el lenguaje
Simula67 adiciono las características de la programación
orientada a objetos (incluyendo la ventaja de una
biblioteca de funciones orientada a objetos) y lo
denomino C con clases. Para 1983 dicha denominación
cambio a la de C++. Con este nuevo enfoque surge la
nueva metodología que aumenta las posibilidades de la
programación bajo nuevos conceptos.
119
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
RESUMEN DE LA UNIDAD 4.
Ordenamiento por inserción: esta es una de las técnicas más comunes las suelen utilizar
en el juego de cartas, ya que consiste en insertar cada carta en el lugar correcto ya se ha
de mayo a menor o viceversa, otro ejemplo seria cuando ya tenemos una lista de nombres
ordenada alfabéticamente y nos dan uno nuevo, tenemos que buscar el lugar correcto en
donde meterlo, de esa manera simple y sencilla funciona.
Ordenamiento rápido: este algoritmo fue creado por el científico británico Antony
Richard basándose en la técnica divide y vencerás lo cual permite que se solucione en un
120
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
tiempo promedio, lo que hace es elegir un elemento de la lista al el cual llamaremos pivote
posteriormente colocara de un lado a los elementos mayores que él y del otro lado a los
elementos menores, si hay números iguales al pivote se ponen a su lado ya sea derecho o
izquierdo, ya que se hizo esto obtenemos dos sublistas y con cada una se repetirá el
proceso y así sucesivamente mientras estás contengan más de un elemento, al término del
proceso los elementos quedaran ordenados.
Ordenamiento por montículo: Este algoritmo consiste en almacenar todos los elementos
del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como
nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado.
2. Algoritmos de búsqueda: es aquel que está diseñado para buscar un elemento con
ciertas propiedades dentro de una estructura de datos.
Podemos utilizar diferentes tipos de búsqueda entre ellas están:
Búsqueda binaria: se le llama así ya que el algoritmo divide en dos arreglos, la única
condición para utilizar este arreglo es que los datos dentro del arreglo estén
ordenadas de menor a mayor, busca posición por posición hasta obtener el dato
que queremos.
Arboles de búsqueda: Un árbol binario de búsqueda también llamados BST
(acrónimo del inglés Binary Search Tree) es un tipo particular de árbol binario que
presenta una estructura de datos en forma de árbol usada en informática.
Búsqueda por transformación de claves: Una función de Hash es una caja negra que
tiene como entrada una llave y como salida una dirección h(K)=address
121
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
122
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63
UNIDAD 4. TIPOS DE ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN
4.2. Algoritmos de
Búsqueda.
4.4. Lenguajes de
Programación.
123
AV. JOSÉ MA. MORELOS PTE. NO. 905
SECRETARÍA DE EDUCACIÓN
TERCER PISO COLONIA LA MERCED
SUBSECRETARÍA DE EDUCACIÓN MEDIA SUPERIOR Y SUPERIOR
TOLUCA, ESTADO DE MÉXICO, C.P. 50080
UNIVERSIDAD DIGITAL DEL ESTADO DE MÉXICO
TELÉFONO 318-48-63