2.algoritmos

114 views
77 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
114
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2.algoritmos

  1. 1. Modulo: Algoritmos y Estructuras de datos Curso Global Teórico Sistemas de Información 1
  2. 2. Algoritmos a) Algoritmos de búsqueda. 1. Lineal. 2. Binaria. b) Algoritmos de clasificación c) Algoritmos recursivos. 1. Introducción 2. Ejemplos de programas recursivos. 1. Inserción directa. 2. Selección directa. 3. Intercambio directo. 2
  3. 3. Algoritmos.  El término algoritmo, no está exclusivamente relacionado con las matemáticas o informática. En realidad, en la vida cotidiana empleamos algoritmos en multitud de ocasiones para resolver diversos problemas.  Un algoritmo, es un método para resolver un problema, más formalmente, podemos decir que es un conjunto de reglas o instrucciones bien definidas para la resolución de problemas.  Esta definición puede ser extendida a: Un algoritmo es cualquier procedimiento computacional bien definido, junto con un conjunto especifico de datos con un margen de error permitido, que produce un valor o conjunto de valores como salida.  Con las definiciones anteriores, podemos decir que un algoritmo debe producir una salida válida para todas las entradas permitidas. 3
  4. 4. Propiedades de los algoritmos  Todo algoritmo es independiente del lenguaje de programación, así como de la máquina que lo ejecuta.  Las características fundamentales de los algoritmos, son: 1. Deben ser precisos e indicar el orden de realización de cada paso. 2. Debe estar definido, es decir, si se ejecuta dos veces, esas dos veces se debe de obtener el mismo resultado. 3. Debe ser finito, este debe terminar en algún momento.  La definición de un algoritmo, debe describir tres partes importantes para procesar la información en la computadora, tal como lo muestra la figura. Entrada Proceso Salida 4
  5. 5. Estructura Básica:        inicio constantes (datos inalterables) variables (datos alterables) ingresar datos (datos ingresados por el usuario que se guardarán en las variables) proceso de operaciones (ejecución de algoritmo sobre las variables y constantes) mostrar resultados (resultados de la operación algorítmica) fin 5
  6. 6. a) Algoritmos de búsqueda 6
  7. 7. Algoritmos de Búsqueda  La tarea de búsqueda es una de las operaciones más frecuentes en la programación.  Existen muchos algoritmos de búsqueda.  En los algoritmos que se estudiarán a continuación se supondrá que la colección de datos, entre los cuales se buscará un elemento, es fija. 7
  8. 8. Algoritmos de Búsqueda  Supondremos que este conjunto fijo tiene n elementos y lo representaremos como un arreglo, por ejemplo: a: array[0..n-1] of item  Es usual que el tipo item tenga una estructura de registro con un campo que actúa como una llave. 8
  9. 9. Algoritmos de Búsqueda  La tarea consiste en hallar un elemento del arreglo a cuyo campo clave sea igual a un cierto argumento de búsqueda x.  El índice resultante i, que cumple la igualdad a[i].Llave = x, permite el acceso a otros campos del registro localizado.  Para concentrarnos únicamente en la tarea de búsqueda, supondremos que el tipo item consta sólo de la llave, es decir, es la llave. 9
  10. 10. Algoritmos de Búsqueda  Cuando no se tiene más información sobre los datos en los que se busca, lo más sencillo es proceder de manera secuencial a través del arreglo en busca del elemento deseado.  Este enfoque se llama búsqueda lineal.  Existen dos condiciones que terminan la búsqueda: 1. Si se halla el elemento, es decir, si ai = x. 2. Si se ha rastreado todo el arreglo sin encontrar a x. 10
  11. 11. 1. Búsqueda Lineal 11
  12. 12. El símbolo de mayor es > El símbolo de menor es < Búsqueda lineal  Lo anterior produce el siguiente algoritmo: i := 0; while (imientras (i < n) y (a[i] <> x) haz < n) and (a[i] <> x) do i := i + 1 0 1 a b i 2 c 3 d 4 e 5 f 6 g x = 12
  13. 13. El símbolo de mayor es > El símbolo de menor es < Búsqueda lineal x = 0 1 8 1 1 4 2 2 5 3 1 2 4 3 4 5 9  i  La búsqueda termina sólo si la condición de la cláusula whilees falsa.  Cuando se encuentra una concordancia, se halla la que tiene el índice menor, es decir, el primer elemento que concuerda en la secuencia. 13
  14. 14. Búsqueda lineal  Si se cumple i = n, Y no existe concordancia, entonces el registro que se esta buscando no existe.  La terminación del ciclo es segura, ya que en cada etapa del proceso se incrementai, por lo que aunque no exista concordancia se debe llegar al límite n después de un número finito de iteraciones (pasos). 14
  15. 15. Búsqueda Lineal Con Centinela 15
  16. 16. Búsqueda lineal con centinela  El algoritmo puede hacerse más eficiente simplificando la expresión booleana de dos factores, a uno solo que determine la concordancia.  Para garantizar la concordancia se debe colocar un elemento “adicional” en el arreglo que contenga al elemento buscado x.  A este elemento adicional se le conoce como centinela, ya que previene que la búsqueda exceda el límite del índice. 16
  17. 17. Búsqueda lineal con centinela  El algoritmo de búsqueda lineal con centinela es el siguiente: a[n] := x; El símbolo de mayor es > El símbolo de menor es < i := 0; while a[i] <> x do i := i + 1  Evidentemente i = n implica que no se encontró concordancia (excepto la del centinela). 17
  18. 18. 2. Búsqueda Binaria 18
  19. 19. Búsqueda binaria  Una búsqueda puede hacerse más efectiva si los datos están ordenados (por ejemplo, ascendentemente).  La idea clave consiste en inspeccionar un elemento elegido al azar, por ejemplo am, y compararlo con el argumento de búsqueda x.  Si am = x, la búsqueda termina, si am es menor que x, se infiere que todos los elemento con índices menores que, o iguales a m pueden ser descartados.  Lo anterior produce el siguiente algoritmo llamado búsqueda binaria. Este algoritmo utiliza dos variables de índice, L y R, que marcan los extremos izquierdo (Left) y derecho (Right) de la sección del arreglo a en los cuales todavía puede hallarse un elemento. 19
  20. 20. El símbolo de mayor es > El símbolo de menor es < Búsqueda binaria L := 0; R := n; found := FALSE; while (L <= R) do Begin m := cualquier valor entre L y R m:=(L+R)div2 if a[m] = x then found := true else if a[m] <x then L := m + 1 else R := m – 1 end. 0 1 2 3 4 5 6 m 3 4 5 6 7 8 9  L  R x = 20
  21. 21. Búsqueda binaria  La elección de m es arbitraria y la forma en como se escoge no afecta la corrección del algoritmo.  Sin embargo, la manera en que se elige m puede tener influencia sobre la efectividad del algoritmo.  El objetivo debe ser el de eliminar tantos elementos como sea posible en cada etapa de búsquedas posteriores. 21
  22. 22. Búsqueda Binaria Mejorada 22
  23. 23. Búsqueda binaria Mejorada  La solución óptima consiste en elegir el elemento del medio, ya que esto elimina, en cualquier caso, la mitad de la sección del arreglo por buscar.  Este algoritmo ofrece una mejora drástica sobre la búsqueda lineal, donde el número estimado de comparaciones es n / 2.  La eficiencia puede mejorarse un poco intercambiando las cláusulas if.  La prueba de la igualdad debe dejarse en segundo término, ya que se cumple sólo una vez y ocasiona la terminación del proceso.  Se puede aumentar la eficiencia del algoritmo si se simplifica la condición de terminación del ciclo. 23
  24. 24. El símbolo de mayor es > El símbolo de menor es < Búsqueda binaria Mejorada n 0 1 2 3 4 5 6 a 3 4 5 6 7 8  Un algoritmo de búsqueda binaria más eficiente es el siguiente: 9  L x =  m  R L := 0; R := n; while (L <= R) do begin m := (L + R) div 2; if a[m] <x then L := m + 1 else R := m end end 24
  25. 25. Ejemplo n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  m 1era vuelta m=0+6=6/2=3 m=3 x=4 am=6 6<4 NO else R:=m  R L := 0; R := n; while (L < R) do begin m := (L + R) div 2; if a[m] <x then L := m + 1 else R := m end 25
  26. 26. 2da Vuelta n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  R m=0+3=3/2=1 m=1 x=4 am=4 4=4 am concuerda con x concordancia L := 0; R := n; while (L < R) do begin m := (L + R) div 2; if a[m] <x then L := m + 1 else R := m end 26
  27. 27. Búsqueda binaria Mejorada  La iteración termina cuando L = R.  Si R = n, entonces no existe concordancia.  Por lo tanto se necesita una comparación final para verificar que a[R] = x.  En contraste con el primer algoritmo de búsqueda binaria presentado, el último algoritmo (al igual que la búsqueda lineal) encuentra el elemento de concordancia con el índice menor. 27
  28. 28. Vamos con los difíciles 28

×