algoritmos. 1 definiciones de algoritmos es un procedimiento computacional bien definido que toma...

32
Algoritmos

Upload: asuncion-veloz

Post on 22-Jan-2016

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

Algoritmos

Page 2: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

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.

Page 3: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 4: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 5: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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)

Page 6: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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)

Page 7: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

Algoritmos de Búsqueda

Page 8: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Definición formal del problema de búsqueda

Entrada:• secuencia de n números <a

1, a

2,..,a

n>

• 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

Page 9: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 10: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Tipos de Búsqueda

- Búsqueda Secuencial.

- Búsqueda Binaria.

Page 11: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Búsqueda Secuencial

Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta que se encuentra. Buscar M:

I N F O M Á T I C A

M M M M M Índice resultado = 4

0

1

2

3

4

5

6

7

8

9

Page 12: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Algoritmo Búsqueda Secuencial

for (i=0; i < LARGO; i++)

if (a[i]==Elemento_buscado)

printf(“Elemento encontrado en: %d\n”, i);

Page 13: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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:

3 5 8 20 32 45 60 73

32 32 Resultado = 432

0

1

2

3

4

5

6

7

Page 14: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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;

}

Page 15: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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);

Page 16: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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);

Page 17: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 18: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

Algoritmos de Ordenamiento

Page 19: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Definición formal del problema de ordenamiento

Entrada:

• secuencia de n números <a1, a

2,..,a

n>

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>

Page 20: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 21: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Algoritmos de Ordenamiento

Tipos de Algoritmos:1.- Ordenamiento Burbuja.2.- Insertion-Sort3.- Quick-Sortetc...

Page 22: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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

32

15

1 1

32

15

32

1

15

25

32

1

25

15

32

25

1

15

32

25

15

1

32

25

15

1

Page 23: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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]);

Page 24: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

Ordenamiento Por inserción

Page 25: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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

Page 26: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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

Page 27: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

Algoritmo de sort por inserción en pseudocódigo

Page 28: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

1

Algoritmos de Ordenamiento

Ejercicios:- Ordenar un conjunto de n enteros de menor a

mayor.- Lo mismo pero en lista encadenada

Page 29: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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).

Page 30: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.

Page 31: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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).

Page 32: Algoritmos. 1 Definiciones de Algoritmos Es un procedimiento computacional bien definido que toma algún valor, o un conjunto de valores, como entrada

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.