3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

41
Unidad de Virtualización - UPCI ELMER FIGUEROA TATAJE ALGORITMOS II

Transcript of 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Page 1: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Unidad de Virtualización - UPCI

ELMER FIGUEROA TATAJE

ALGORITMOS II

Page 2: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Unidad de Virtualización - UPCI

El concepto intuitivo de algoritmo lo tenemos prácticamente todos: “ Un algoritmo es una serie finita de pasos para resolver un problema.Hay que hacer énfasis en dos aspectos para que un algoritmo exista:1.- El numero de pasos debe ser finito. De esta manera el algoritmo debe terminar en un tiempo finito con la solución del problema.

Page 3: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

2.- El algoritmo debe ser capaz de determinar la solución del problema.De este modo podemos definir algoritmo como un conjunto de reglas operacionales inherentes a un computo.Se trata de un método sistemático susceptible a ser realizado mecánicamente, para resolver un problema dado.

Unidad de Virtualización - UPCI

Page 4: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Por otro lado seria un error creer que los algoritmos son exclusivos de la informática.También son algoritmos los que aprendimos en el colegio para multiplicar y dividir números de varias cifras.Siempre que se desee resolver un problema hay que plantearse que algoritmo utilizar.

Unidad de Virtualización - UPCI

Page 5: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

La respuesta a esta cuestión puede depender a numerosos factores a saber: “ tamaño del problema, el modo que esta planteado, y el tipo y la potencia disponible para su resolución.

Unidad de Virtualización - UPCI

Page 6: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

CARACTERISTICAS DE UN ALGORITMO

1.- Entrada: aquí se define lo que necesita el algoritmo.2.- Salida: aquí se define lo que produce el algoritmo.3.- No ambigüedad: debe ser explicito, siempre sabe que comando ejecutar.4.- Finito: el algoritmo debe de tener un numero finito de pasos.

Unidad de Virtualización - UPCI

Page 7: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

5.- Correcto: hace lo que se supone y/o esta programado para realizar. La solución es correcta.6.- Efectividad: cada instrucción se completa en tiempo finito. Cada instrucción debe ser lo suficientemente básica como para que en principio pueda ser ejecutada por cualquier persona usando papel y lápiz.

Unidad de Virtualización - UPCI

Page 8: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

7.- General.- Debe ser lo suficientemente general para contemplar todos los casos de entrada.

Unidad de Virtualización - UPCI

Page 9: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

ALGORITMOS

• Es un conjunto finito de instrucciones que especifican una secuencia de operaciones ordenadas en forma lógica para resolver un problema específico. En otras palabras, un algoritmo es un método para la solución de problemas.

Page 10: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

PROPIEDADES DE UN ALGORITMO

• Secuencialidad• Ausencia de Ambigüedades• Generalidad• Limitaciones

Page 11: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

SECUENCIALIDAD• Se debe especificar sin lugar a dudas la secuencia a

utilizar.• Un algoritmo debe tener una instrucción inicial única y

un sucesor único en cada secuencia.• Las instrucciones son llevadas a cabo de arriba hacia

abajo a menos que las mismas especifiquen lo contrario.

• Las entradas son las partidas de datos presentadas al algoritmo.

• Las salidas son partidas de datos procesados que son el resultado de la ejecución un programa basado en el algoritmo.

Page 12: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

AUSENCIA DE AMBIGÜEDAD• En algoritmo debe ser defino, claro, preciso y no

ambiguo. La representación de cada paso de un algoritmo debe dar lugar a una sola interpretación posible.

• Esta condición significa que cada vez que se presente para su ejecución un algoritmo con los mismos datos de entrada, se obtendrán los mismos resultados.

• Las instrucciones de un algoritmo debe ordenar a la computadora que solo lleve a cabo tareas que sea capaz de hacer. Una computadora no puede efectuar una instrucción si tiene información insuficiente o si el comando no está definido.

Page 13: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

GENERALIDAD• Un algoritmo se puede realizar para varios problemas

que se relacionan entre sí.• Un algoritmo se aplica a un problema o clase de

problemas específicos; el rango de las entradas o dominios se tiene que definir previamente, ya que está determinado el alcance o la generalidad del algoritmo.

Page 14: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

LIMITACIÓN• Un algoritmo es finito en tamaño y tiempo.• La ejecución de un algoritmo programado debe

finalizar después de que se haya llevado a cabo una cantidad finita de operaciones.

Page 15: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

DOMINIO DE UN ALGORITMO

• La clase o el conjunto de datos y condiciones para las cuales un algoritmo trabaja concretamente se llama dominio.

• Cuando se trata de resolver cualquier problema es necesario definir el dominio del algoritmo y después verificar que trabaja para todos los casos que se encuentran dentro del dominio.

• Es necesario incluir en el dominio todas las situaciones similares, pero los casos remotos o poco probables se permiten omitir.

Page 16: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

ERRORES EN LA CONTRUCCIÓN DEL DOMINIO.

• Errores del dominio: Se presentan cuando se no han especificado todas las

situaciones que se pueden presentar en la práctica o se han descuidado la apreciación de su importancia.A medida que se presenta el problema, se tiene que clasificar y hay tres opciones:

1. Ignorarlo porque es improbable y quizás nunca ocurra.

2. Restringir el dominio del algoritmo para excluirlo.3. Corregir el algoritmo.

Page 17: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

ERRORES DE LÓGICA:• Son aquellos errores que se detectan, después que se

ha definido en forma adecuada el dominio de un algoritmo, en la etapa de prueba o verificación.

• Se deben principalmente a las siguientes causas:1. Etapas incorrectas.2. Secuencia incorrecta de etapas3. El criterio de elección de un algoritmo debe hacerse

en base a criterios tales como:a) Que el algoritmo sea simple, es decir, fácil de entender y de

escribir.b) Que el algoritmo sea eficiente.

Page 18: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

MÉTODO HEURÍSTICO• La heurística proporciona un esquema o plan para

abordar los problemas poco conocidos, mejora la capacidad de crear soluciones y asegura que el método que se va a usar sea eficiente.

• En la etapa de planificación es donde se tiene la oportunidad de comparar métodos y seleccionar el más adecuado.

Page 19: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Surge la pregunta:• ¿ Cómo se pueden resolver los problemas para los que

no hay un método establecido o para los cuales no conocemos un algoritmo?.

Page 20: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

DISEÑO DE UN ALGORITMO• Un método heurística para diseñar algoritmo es el

denominado DIVIDE AND CONQUER, el cual es una técnica TOP-DOWN.

• Este método permite implementar la segmentación, descomposición de un problema largo y complejo en problemas independientes más pequeños y fáciles de resolver que el problema de partida.

• La técnica consiste en varias etapas.

Page 21: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

DESCOMPOSICIÓN DEL PROBLEMA DE PARTIDA EN SUBPROBLEMAS INDEPENDIENTES Y DETERMINACIÓN DE LAS

RELACIONES ENTRE ELLOS.

P

P1 P2 P3

Page 22: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

RESOLUCIÓN DE CADA SUBPROBLEMA• Si un sub-problema es

grande, por descomposición y continuando hasta que resulten de la descomposición sub -problemas fácilmente resolubles.

P1

P1.1 P1.2 P1.3

Page 23: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Composición de las soluciones de los sub- problemas para lograr la solución final

• El diseño del algoritmo que resuelve un problema, realizado con esta técnica recibe el nombre de DISEÑO DESCENDENTE y resulta en algoritmo muy legibles, claros, fáciles de entender, seguir y corregir.

• El diseño de un algoritmo no se hace de una sola vez, sino que se va resolviendo en una secuencia de pasos ( llamados PASOS DE REFINAMIENTO).

• En cada paso el problema es refinado agregando detalles significativos, por lo que el método se conoce como:

MÉTODO DE LOS REFINAMIENTOS SUCESIVOS.

Page 24: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

UN INGENIERO ES CONVOCADO PARA CONSTRUIR UN EDIFICIO

CONSTRUCCIÓN DEL

EDIFICIO

CONFECCICÓNDE LOSPLANOS

CONTRATACIÓNDEL

PERSONAL

COMPRA DEMATERIALES

DIRECCIÓNDE LA OBRA

Page 25: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

UN SUB- PROBLEMA

CONFECCIÓNDE LOSPLANOS

DISEÑO DELANTEPROYECTO

APROBACIÓNDEL

ANTEPROYECTO

ELABORACIÓN DE LOS PLANOS

APROBACIÓNDE LOSPLANOS

Page 26: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

OTRO SUB- PROBLEMA

CONTRATACIÓNDEL

PERSONAL

PEDIDO DECURRICULUM

VITAE

ANÁLISISDE LOS

CURRÍCULUMVITAE

ENTREVISTAS PERSONALES

REDACCIÓN DE LOS

CONTRATOS

Page 27: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

OTRO SUB- PROBLEMA

COMPRA DE

MATERIALES

CÁLCULODE

MATERIALES

PEDIDO DE

PRECIOS

SELECCIÓNDE

PROVEEDORES

Page 28: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

• Al utilizar el refinamiento por pasos el diseñador de un algoritmo debe saber donde detenerse, es decir, debe saber cuando un paso específico del algoritmo es lo suficientemente claro para no necesitar más refinamiento.

• Se necesita CONOCER LAS CAPACIDADES DE UN PROCESADOR no sólo para terminar los refinamientos, sino para dirigir la forma en que el refinamiento avanza.

Page 29: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

• Una computadora puede interpretar cualquier cosa expresadas de manera adecuada en un lenguaje de programación. Así el diseñador de un algoritmo de computadora puede orientar los pasos y la terminación del refinamiento hacia el tipo de lenguaje que se trate.

Page 30: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Algoritmos de ordenamientoUn método de ordenamiento se considera estable si el orden relativo de los elementos no se altera por el proceso de ordenamiento.Hay dos categorías importantes y disjuntas de algoritmos de ordenación:

Unidad de Virtualización - UPCI

Page 31: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

- Ordenación interna, cuando la cantidad de registros es sumamente pequeña y el proceso puede llevarse a cabo en la memoria.

- Ordenación Externa, cuando hay demasiados registros para permitir una ordenación interna; en este caso es necesario almacenarse en disco.

Por ahora nos ocuparemos solo de la ordenación interna.

Unidad de Virtualización - UPCI

Page 32: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Los algoritmos de ordenación interna se clasifican según con la cantidad de trabajo necesaria para ordenar una secuencia de n elementos en :A) Ordenamiento por Inserción.- Este es uno de los métodos mas sencillos. Consta en tomar uno por uno los elementos del arreglo y recorrerlos hacia su posición con respecto a los anteriormente mencionados. Luego empieza con el segundo elemento y lo ordena con respecto al primero. Luego continua con el tercero y lo coloca en su posición

Unidad de Virtualización - UPCI

Page 33: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Ordenada con respecto a los dos anteriores, y así sucesivamente hasta recorrer todas las posiciones del arreglo. B) Ordenamiento por selección, este método consiste en encontrar el menor de todos los elementos del arreglo e intercambiarlo con el que esta en la primera posición. Luego el segundo mas pequeño y así sucesivamente hasta ordenar todo el arreglo.

Unidad de Virtualización - UPCI

Page 34: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

C) Ordenamiento burbuja, este método opera de la siguiente manera: Se recorre el arreglo intercambiando los elementos adyacentes que estén desordenados. Se recorre el arreglo tantas veces hasta que no hayan cambios que realizar.Prácticamente lo que hace es tomar el elemento mayor y lo va recorriendo de posición en posición hasta ponerlo en su lugar.

Unidad de Virtualización - UPCI

Page 35: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

D) Ordenamiento Rápido, la idea básica de este algoritmo es elegir un elemento llamado pivote y ejecutar una secuencia de intercambios tal que todos los elementos menores que el pivote queden a la izquierda y todos los mayores a la derecha.

Unidad de Virtualización - UPCI

Page 36: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Programación estructurada

• Los principios metodológicos básicos de la programación estructurada son los de subdividir el problema inicial o de partida en partes manejables para su análisis y hacer de esta manera que se agilice el proceso de entender el problema y la solución.

Page 37: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Básicamente, estas subdivisiones deseadas( llamadas módulos) deben satisfacer los siguientes requisitos:

1. Los módulos deben estas jerarquizados.2. Deben ser pequeños y sencillos.3. Se deberán utilizar tantos módulos de menor

jerarquía como sea necesario para cumplir con la restricción de ser pequeños y sencillos.

4. Se deberán usar las estructuras de control y datos adecuadas para cumplir con el requisito de pequeños y sencillos.

5. Los módulos deben ser legibles para cualquier persona aunque tenga solamente conocimientos elementales de programación.

Page 38: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

LENGUAJE DE DISEÑO DE PROGRAMAS

Como la meta es escribir algoritmos que sean procesados en una computadora, se va a producir un lenguaje de diseño adecuado.

Se llamará LENGUAJE DE DESCRIPCIÓN DE PROGRAMAS a la herramienta que permitirá diseñar programas de codificación también conocido como pseudocódigo.

Page 39: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

Este pseudo- lenguaje tiene las siguientes características:1. Permite expresar de manera informal las estructuras del algoritmo 2. Permite expresar las ideas en frases del lenguaje propio o natural

idioma español o ingles.3. Es similar al lenguaje de programación pero no está ligado a

ninguna regla formal de sintaxis como aquellos.4. No es un lenguaje compilable5. Por convención se hace un sangrado en el texto que ayuda a la

percepción visual de la lógica del diseño.6. Permite expresar diseños de fácil comprensión que podrá

convertirse sin dificultad a código en el lenguaje de implementación.

7. El pseudocódigo generado es más fácil de cambiar y corregir que el código del programa.

Page 40: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

DIAGRAMA DE FLUJO• Un diagrama de flujo es otra técnica de diseño de

algoritmos. Consiste en una serie de símbolos que denotan acciones, decisiones o procedimientos que se unen mediante flechas y/o conectores.

• Esta representación nos ayudará a conocer la información que tenemos, el lugar donde la tenemos, que debemos hacer con ella y como presentarla.

• Debe tener las cualidades de sencillez, claridad y normalización en su diseño.

Page 41: 3fe4748d06e2bda9b044381a001e73bc_370475046863118_Algoritmica-II

GRACIAS POR SU ATENCION

Unidad de Virtualización - UPCI