martes, 18 de marzo de 2014

INFORMATICA ALGORITMOS





Algoritmo
Un conjunto de pasos que nos permite obtener la solución a un problema.


Una serie de pasos organizados que describe el proceso que se debe
seguir para dar solución a un problema específico.
Una secuencia finita de instrucciones realizables, no ambiguas, cuya ejecución conduce a la resolución de un problema.

DE 2 tipos: Gráfica: con símbolos, utilizando diagramas de flujo.
No gráfica: describiendo las operaciones que llevará a cabo, utilizando un pseudocódigo
Deterministas: en cada paso del algoritmo se determina, de forma única, el siguiente pasó.
No deterministas: deben decidir en cada paso de la ejecución entre varias alternativas y agotarlas todas antes de encontrar la solución.
Características
Finito. Él algoritmo debe acabar tras un número finito de paso. Es casi fundamental  que sea un número razonable de pasos. Por ejemplo, en el caso de la lavadora son cinco pasos; en el de la receta, siete pasos.
Definido. El algoritmo debe definirse de formas precisa para cada paso, es decir si se sigue dos veces, se debe obtener el mismo resultado cada vez. Esto quiere decir que cada vez que pongamos a trabajar la lavadora o cada vez que hagamos el pay de queso, la ropa debe tener la misma limpieza y el pay el mismo sabor y consistencia.
Preciso. Todas las operaciones que el algoritmo realizará deben ser lo suficientemente claras, es decir, hay que evitar toda ambigüedad al definir cada paso, de modo que puedan ser llevadas a cabo en forma exacta y en un tiempo finito por una persona.

Partes
Entrada. El algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar. Estas cantidades pertenecen, además, al conjunto, especificado de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc.
Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por la computadora.
Proceso. Descripción de las operaciones que se llevarán a cabo con las entradas como datos para obtener la salida de acuerdo con la tarea para la cual fue diseñado.
Salida. El algoritmo tiene una o más salidas, en elación con las entradas.

Características de un buen algoritmo
1.-Corrección. El algoritmo debe estar bien planteado, de tal modo que siempre lleve al resultado correcto.
2. Funcionalidad. Nunca se debe olvidar que la característica más simple e importante de un algoritmo es que funcione.
3. Eficiencia. La eficiencia de un algoritmo se mide por los recursos que éste consume. En particular, se habla de la memoria y el tiempo de ejecución. A pesar de que con la reducción de los costos y del hardware es posible diseñar computadoras más rápidas y con más memoria, no hay que desperdiciar estos recursos, sino tratar de desarrollar algoritmo más eficiente.
4. Claridad. El algoritmo debe estar bien documentado. La documentación ayuda a comprender el funcionamiento de los algoritmos. Ciertos detalles o algunas partes especiales de los mismos pueden olvidarse fácilmente o quedar oscuros si
no están adecuadamente documentados.


Un problema existe cuando hay tres elementos, cada uno claramente definido:
1. Una situación inicial.
2. Una situación final u objetivo a alcanzar
3. Restricciones o pautas respecto de métodos, actividades, tipos de operaciones,
etc., sobre los cuales hay acuerdos previos.

Fases de resolución de un problema
  1. Definición del problema
  2. Análisis del problema
  3. Diseño del algoritmo
4.       Codificación
5.       Prueba y depuración
6.       Documentación
7.       Mantenimiento

Métodos de solución de problemas
Método de fuerza bruta.: Es una forma de diseñar algoritmos tomando una solución directa, poco reflexionada. utilizan el método de prueba y error, son muy costosos en tiempo computacional.
Divide y vencerás: Consiste en descomponer un problema en subproblemas, o resolver independientemente cada uno de éstos para luego combinar sus soluciones y obtener la solución del problema original

Voraz: Este método trata de producir un mejor resultado a partir del conjunto de opciones. Para ello, se va procediendo paso a paso, realizándose la mejor elección de entre las posibles. Si el algoritmo voraz se ha diseñado correctamente. La primera solución encontrada es óptima. Por tanto, lo dificultad principal al diseñar un algoritmo voraz reside en encontrar un criterio de selección que garantice la viabilidad de la solución.
Estos algoritmos se Ilaman voraces porque en cada paso toman el mejor trozo de Ia solución: es decir, el mejor “candidato”. Además, nunca cambian de opinión; una vez que un candidato es aceptado o rechazado en la solución. La decisión es definitiva.

Programación dinámica: permite resolver problemas mediante una secuencia de decisiones, pero de una manera más directa que en el método voraz. En esta se necesita producir varias secuencias de decisiones. Solamente al final se sabe cuál es la mejor de todas.

Algoritmos de vueltas atrás o Backtracking: no siguen reglas para la búsqueda de la solución, simplemente efectúan una búsqueda sistemática, la cual significa que hay que probar todo lo posible hasta encontrar la solución o hallar que no existe. Para conseguir este propósito se separa la búsqueda en varias búsquedas parciales o subtareas.

DIAGRAMAS
es una representación grafica que muestra las relaciones entre las diferentes partes de un conjunto o sistema.
1. Muestran gráficamente las acciones que se realizaran de acuerdo con el programa.
2. Ayudan a pensar claramente.
3. Ayudan a detectar errores.
4. Facilitan cambios en el programa.
Diagramas de flujo
Los diagramas de flujo son representaciones graficas de los pasos a seguir para lograr el resultado.

Diagrama IPO
 input-process-output, entrada-proceso-salida (EPS)

El pseudocódigo : se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. Utiliza palabras que indican el proceso a realizar

Partes de un pesudocódigo:
Asignación de datos: asignación de valores en memoria
Escritura o salida de datos: x medio de disp. De salida
Entrada de datos: x medio de dispositivo de entrada





Estructuras de control o algorítmicas
Se refiere a las estructuras con las que podemos llegar a cabo nuestros programas y algoritmos. Son un grupo de formas de trabajo que permiten. Mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras las podemos dividir en tres grupos:
Secuencial
Alternativa

Repetitiva