Algoritmos.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Complejidad Computacional
Complejidad Computacional
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Programación de Computadores
ESTRUCTURA DE DATOS Unidad 01 RECURSIVIDAD.
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
CARRERA: INGENIERIA CIVIL UNI-RUACS
ALGORITMOS.
Programación II Recursividad
Estructura de Datos Hugo Araya Carrasco Hugo Araya Carrasco.
UNIDAD II: ALGORITMOS Y LENGUAJES
Curso de Programación 1 Plan 97
PROGRAMACION DE ESTRUCTURAS DE DATOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Programación 1 Introducción
Algoritmos de Búsqueda
Objetivos Específicos de la Unidad
2.1 Recursividad El hecho de que una función pueda llamarse a sí misma.
Funciones y procedimientos
IINTRODUCCION A LA CIENCIA DE LA COMPUTACION Y A LA PROGRAMACION
Ordenación, Clasificación
Semana 5 Subprogramas..
Fundamentos de programación
7.  El TDA Diccionario.

COMPLEJIDAD COMPUTACIONAL Departamento de Educación Matemática Profesor: Carlos Aguilar Santana “La Matemática es el Alfabeto con el cual Dios ha Escrito.
Introducción al análisis de algoritmos
Inteligencia artificial

Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
Algoritmos de búsqueda
Métodos de búsqueda Unidad 6.
Programación I Universidad Nacional de Luján
Fundamentos de Programación
LENGUAJE DE PROGRAMACIÓN
PROGRAMACIÓN PROCEDIMENTAL
Diseño de algoritmos La computadora puede realizar procesos y darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza. Con.
Divide y vencerás 1. Método general.
Análisis de algoritmos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Planteos Recursivos Resolución de Problemas y Algoritmos
TEMAS PRINCIPALES. ALGORITMOS. CONCEPTOS El algoritmo es un método para resolver un problema mediante una serie de pasos definidos, precisos y finitos.
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
M. en C. José Andrés Vázquez Flores
Parte II. Algorítmica. 4. Programación dinámica.
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Parte I. Estructuras de Datos.
Análisis y Diseño de Algoritmos
SIG. LAURA VELAZQUEZ MORELOS. Hace referencia a un refrán que implica resolver un problema difícil, dividiéndolo en partes más simples tantas veces como.
Tema 6. Introducción a la programación
Parte I. Estructuras de Datos.
Estructuras de control Resolución de problemas y algoritmos.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Conceptos Avanzados de Programación
Oscar F. Bedoya L. Fundamentos de análisis y diseño de algoritmos.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
ALGORITMO QUE ES ??.
Elaboración de algoritmos usando lógica de programación
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
CICLOS EN C – PARTE 3.
Máximo común divisor (MCD)
Hernández Camacho Víctor Jesus Islas Sánchez Karla Vanessa
Algoritmos Computacionales
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

Algoritmos

Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada y produce algún valor, o un conjunto de valores, como salida. Es una secuencia de pasos computacionales para transformar la entrada en la salida. Es una herramienta para solucionar un problema computacional bien especificado. 1

Estratégia: Dividir para gobernar Dividir el problema en subproblemas En la resolución de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador. 1

Diseño top-down Se entiende como diseño descendente ( Top- Down / Norte-Sur ) o diseño modular: El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo. • Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. • Un programa bien diseñado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (módulos de nivel mas bajo), que a su vez pueden llamar otros sub programas. Los programas que se estructuran de esta forma, se dicen que tienen diseño modular y el método de romper el programa en modos pequeños se llama programación modular. 1

Definición formal del problema cálculo del factorial Entrada: Número entero n Salida: Número entero fac(n) tal que: 0 si n < 0 1 si n == 0 1 si n == 1 n * fac(n-1) si n > 1 Ejemplo instancia: Entrada: 3 Salida: 6 fac(n)‏ 1

Definición formal del problema máximo común divisor Entrada: Números enteros m,n Salida: Número entero mcd(n) tal que: n si m%n == 0 mcd(n, m%n) si m%n > 0 Ejemplo instancia: Entrada: 105, 6 Salida: 3 mcd(n)‏ 1

Algoritmos de Búsqueda

Definición formal del problema de búsqueda Entrada: secuencia de n números <a1, a2,..,an> Un número b Salida: un entero i, tal que b == ai (igual)‏ 0 si b != ai, para i = 1,...,n Ejemplo instancia: Entrada: <5, 6, 9, 12> y 9 Salida: 3 1

Algoritmos de Búsqueda Definición: Son algoritmos para encontrar un dato dentro de una estructura o arreglo - Se ha desarrollado un conjunto de algoritmos de búsqueda que varían en complejidad, eficiencia y tamaño del dominio de búsqueda. - Si se conoce por anticipado en qué tipo de “orden” inicial se encuentran los datos, es posible elegir un algoritmo que sea más adecuado. 1

Tipos de Búsqueda - Búsqueda Secuencial. - Búsqueda Binaria. 1

Búsqueda Secuencial Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta que se encuentra. Buscar M: 1 2 3 4 5 6 7 8 9 I N F O M Á T I C A M M M M M Índice resultado = 4 1

Algoritmo Búsqueda Secuencial for (i=0; i < LARGO; i++)‏ if (a[i]==Elemento_buscado)‏ printf(“Elemento encontrado en: %d\n”, i); 1

Búsqueda Binaria Los elementos del arreglo se encuentran ordenados y no están repetidos. En cada iteración el dominio de búsqueda se divide en 2. Buscar 32: 1 2 3 4 5 6 7 3 5 8 20 32 45 60 73 32 32 32 Resultado = 4 1

Algoritmo Búsqueda Binaria tipo A[LARGO] Max=LARGO-1; min=0; Encontrado=0; while(min+1<max && !Encontrado){ Medio=(Max+min)/2 if (A[Medio]==Elemento){ printf(“Elemento Encontrado\n”); Encontrado=1; /*Fuerza la salida del ciclo*/ } if (A[Medio]<Elemento) Max=Medio; if (A[Medio]>Elemento) min=Medio; 1

Búsqueda secuencial bidimensional por filas Algoritmo: tipo A[filas][columnas] for (i=0;i<filas;i++)‏ for (j=0;j<columnas;j++)‏ if (A[i][j]==elemento)‏ printf(“Encontrado en: A[%d][%d]\n”,i,j); 1

Búsqueda secuencial bidimensional por columnas Algoritmo: tipo A[filas][columnas] for (j=0;j<columnas;j++)‏ for (i=0;i<filas;i++)‏ if (A[i][j]==elemento)‏ printf(“Encontrado en: A[%d][%d]\n”,i,j); 1

Algoritmo de Búsqueda Ejercicios: - Crear un programa que busque un caracter dentro de un vector. - Crear un programa que busque el número más pequeño en un vector. - Buscar un número seleccionado dentro de un arreglo ordenado. - Hacer lo mismo pero con una lista encadenada. 1

Algoritmos de Ordenamiento

Definición formal del problema de ordenamiento Entrada: secuencia de n números <a1, a2,..,an> Salida: Una permutación <a'1, a'2,..,a'n> reordenamiento de la secuencia, tal que: a'1 < a'2 < ... < a'n Ejemplo instancia: Entrada: <5,3,1,6,0> Salida: <0,1,3,5,6> 1

Algoritmos de Ordenamiento Definición: Son algoritmos que fueron realizados para ordenar un conjunto de datos. Los algoritmos varían según su facilidad de entendimiento, su eficiencia, cantidad de código necesario para implementarlos, complejidad, requisitos necesarios de los datos. 1

Algoritmos de Ordenamiento Tipos de Algoritmos: 1.- Ordenamiento Burbuja. 2.- Insertion-Sort 3.- Quick-Sort etc... 1

Ordenamiento Burbuja El algoritmo consiste en que los elementos más pesados se hundan y los más livianos salgan a flote. 25 25 25 15 15 1 1 32 15 15 25 1 15 15 15 32 1 1 25 25 25 1 1 32 32 32 32 32 1

Ordenamiento Burbuja Algoritmo for (i=Largo-1;i>0;i--)‏ for (j=0;j<i;j++)‏ if (A[j]>A[j+1])‏ Intercambiar(A[j],A[j+1]); 1

Ordenamiento Por inserción

Ordenando una lista en forma alfabética (cont.)‏

Ordenando una lista en forma alfabética (cont.)‏

Algoritmo de sort por inserción en pseudocódigo

Algoritmos de Ordenamiento Ejercicios: - Ordenar un conjunto de n enteros de menor a mayor. - Lo mismo pero en lista encadenada 1

Stack o Pila Definición: Una pila es una estructura de datos, a la cual se le puede ingresar o sacar elementos por un sólo lado. También se conoce como LIFO (Last In First Out). 1

Stack o Pila (cont.)‏ Operaciones básicas: Insertar: inserta un elemento en el tope de la pila. Sacar: Saca un elemento del tope de la pila. Tope: Muestra el elemento ubicado en el tope de la pila. Vacía: Retorna verdadero si la pila está vacía. 1

Fila o cola Definición: Una pila es una estructura de datos, a la cual se le puede ingresar elementos por un lado y retirar por el otro. También se conoce como FIFO (First In First Out).

Fila o cola (cont.)‏ Operaciones básicas: Insertar: inserta un elemento alfinal de la fila. Sacar: Saca un elemento del inicio de la fila. Vacía: Retorna verdadero si la pila está vacía.