SlideShare una empresa de Scribd logo
1
Modulo:
Algoritmos y
Estructuras de
datos
Curso Global Teórico
Sistemas de Información
2
Algoritmos
a) Algoritmos de
búsqueda.
1. Lineal.
2. Binaria.
b) Algoritmos de
clasificación
1. Inserción directa.
2. Selección directa.
3. Intercambio directo.
c) Algoritmos
recursivos.
1. Introducción
2. Ejemplos de
programas
recursivos.
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.
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
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
6
a) Algoritmos de
búsqueda
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.
8
 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.
Algoritmos de
Búsqueda
9
 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.
Algoritmos de Búsqueda
10
 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.
Algoritmos de Búsqueda
11
1. Búsqueda Lineal
12
Búsqueda lineal
 Lo anterior produce el siguiente algoritmo:
i := 0;
while (i < n) and (a[i] < > x) do
i := i + 1
0 1 2 3 4 5 6
a b c d e f g
i
x =
El símbolo de mayor es >
El símbolo de menor es <
i := 0;
mientras (i < n) y (a[i] < > x) haz
i := i + 1
13
Búsqueda lineal
 La búsqueda termina
sólo si la condición de
la cláusula while es
falsa.
 Cuando se encuentra
una concordancia, se
halla la que tiene el
índice menor, es decir,
el primer elemento que
concuerda en la
secuencia.
x =
0 1
8
 i
1 1
4
2 2
5
3 1
2
4 3
4
5 9
El símbolo de mayor es >
El símbolo de menor es <
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 incrementa i, por lo que aunque no
exista concordancia se debe llegar al límite n después
de un número finito de iteraciones (pasos).
15
Búsqueda Lineal
Con Centinela
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.
17
Búsqueda lineal con
centinela
 El algoritmo de búsqueda lineal con centinela es
el siguiente:
a[n] := x;
i := 0;
while a[i] < > x do
i := i + 1
 Evidentemente i = n implica que no se encontró
concordancia (excepto la del centinela).
El símbolo de mayor es >
El símbolo de menor es <
18
2. Búsqueda Binaria
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.
20
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 =
El símbolo de mayor es >
El símbolo de menor es <
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.
22
Búsqueda Binaria
Mejorada
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.
24
Búsqueda binaria
Mejorada
 Un algoritmo de búsqueda binaria
más eficiente es el siguiente:
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
n 0 1 2 3 4 5 6
a 3 4 5 6 7 8 9

L

m

R
x =
El símbolo de mayor es >
El símbolo de menor es <
25
Ejemplo
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
n 0 1 2 3 4 5 6
a 3 4 5 6 7 8 9

L

m

R
1era vuelta
m=0+6=6/2=3 m=3
x=4
am=6
6<4 NO
else R:=m
26
2da Vuelta
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
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
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.
28
Vamos con los difíciles

Más contenido relacionado

PPT
Metodos Busqueda Interna
PPTX
Slideshare Serie de Taylor
PPTX
Tarea6
DOCX
Instituto universitario politécnico revista 1
PDF
Aplicación de métodos numéricos de análisis. Cálculo del tipo de interés en l...
PPTX
Cálculo Multivariable Anton Howard
PPSX
PDF
Unidad 2
Metodos Busqueda Interna
Slideshare Serie de Taylor
Tarea6
Instituto universitario politécnico revista 1
Aplicación de métodos numéricos de análisis. Cálculo del tipo de interés en l...
Cálculo Multivariable Anton Howard
Unidad 2

La actualidad más candente (17)

PPT
Algoritmos Y Diagramas De Flujo
DOCX
Metodo de la burbuja en algoritmo
PPTX
Diagrama de Flujo y Pseudocodigo
DOCX
Matematica 1
PDF
Derivadas segunda parte
DOC
Pagina web Análisis Numérico
PPT
Condiciones kuhn tucker y lagrange
DOCX
PDF
Slideshare analisis numerico
PDF
Fundamentos matematicos para la criptografia asimetrica
DOCX
Método Runge Kutta. Computación Aplicada
DOCX
TRABAJO DE MATE
PPTX
Método gráfico, Método de bisección y Método de la regla falsa
PPT
Tarea 6
PDF
Teoria de Numeros
PPT
Tarea 6
PPTX
Derivacion implicita
Algoritmos Y Diagramas De Flujo
Metodo de la burbuja en algoritmo
Diagrama de Flujo y Pseudocodigo
Matematica 1
Derivadas segunda parte
Pagina web Análisis Numérico
Condiciones kuhn tucker y lagrange
Slideshare analisis numerico
Fundamentos matematicos para la criptografia asimetrica
Método Runge Kutta. Computación Aplicada
TRABAJO DE MATE
Método gráfico, Método de bisección y Método de la regla falsa
Tarea 6
Teoria de Numeros
Tarea 6
Derivacion implicita
Publicidad

Destacado (20)

PPTX
Actividad 1.Mi cultura, mi región y yo
DOCX
Ensayo final20.
PPS
Humberto roberto bravo zambrano
PPT
Componentes de la red iberico
PPT
Camina seguro
PDF
Ingles
PPTX
encuentra la salida
PPS
Humberto roberto bravo zambrano
PPS
Perfumede mujer x_1_cabeza
PPTX
Bloque cierre
PDF
Boletin de prensa rendición pública de cuentas
PPTX
movimiento camaras cine
PPTX
Por qué las diferencias
PDF
Fundación Diseño de Interacción | Presentación 2015
PPT
Subordinadas
PPSX
Guerra de successió
PPTX
Expocicion arturo
DOC
newlwttwer nov2012
PPSX
Plazas
Actividad 1.Mi cultura, mi región y yo
Ensayo final20.
Humberto roberto bravo zambrano
Componentes de la red iberico
Camina seguro
Ingles
encuentra la salida
Humberto roberto bravo zambrano
Perfumede mujer x_1_cabeza
Bloque cierre
Boletin de prensa rendición pública de cuentas
movimiento camaras cine
Por qué las diferencias
Fundación Diseño de Interacción | Presentación 2015
Subordinadas
Guerra de successió
Expocicion arturo
newlwttwer nov2012
Plazas
Publicidad

Similar a 2.algoritmos (20)

PDF
Divide y Vencerás
PDF
Teoría De La Complejidad Algoritmica
DOCX
20 algoritmos
PPTX
Ordenacion y busqueda
PPT
Mpinning Gy Alg9(Conteo)
DOC
Inf 2316(proyecto)
PDF
Aritmética Modular
PDF
Aritmetica Modular
PDF
Informe aritmetica modular
PPTX
Algoritmo
DOCX
ALGORITMO METODO DE ORDENAMIENTO COUNTING SORT
PDF
Informe analisis de algoritmos (mitad de cuadrado)
PDF
PPTX
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
PPTX
Notación Asintótica
DOCX
TRABAJO DE INVESTIGACION (MONOGRAFIA).docx
PPTX
Introducción a los Métodos Numéricos
PPT
Complejidad Computacional
DOCX
PPTX
Algebra morelys lugo2
Divide y Vencerás
Teoría De La Complejidad Algoritmica
20 algoritmos
Ordenacion y busqueda
Mpinning Gy Alg9(Conteo)
Inf 2316(proyecto)
Aritmética Modular
Aritmetica Modular
Informe aritmetica modular
Algoritmo
ALGORITMO METODO DE ORDENAMIENTO COUNTING SORT
Informe analisis de algoritmos (mitad de cuadrado)
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
Notación Asintótica
TRABAJO DE INVESTIGACION (MONOGRAFIA).docx
Introducción a los Métodos Numéricos
Complejidad Computacional
Algebra morelys lugo2

2.algoritmos

  • 1. 1 Modulo: Algoritmos y Estructuras de datos Curso Global Teórico Sistemas de Información
  • 2. 2 Algoritmos a) Algoritmos de búsqueda. 1. Lineal. 2. Binaria. b) Algoritmos de clasificación 1. Inserción directa. 2. Selección directa. 3. Intercambio directo. c) Algoritmos recursivos. 1. Introducción 2. Ejemplos de programas recursivos.
  • 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.
  • 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
  • 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
  • 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.
  • 8. 8  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. Algoritmos de Búsqueda
  • 9. 9  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. Algoritmos de Búsqueda
  • 10. 10  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. Algoritmos de Búsqueda
  • 12. 12 Búsqueda lineal  Lo anterior produce el siguiente algoritmo: i := 0; while (i < n) and (a[i] < > x) do i := i + 1 0 1 2 3 4 5 6 a b c d e f g i x = El símbolo de mayor es > El símbolo de menor es < i := 0; mientras (i < n) y (a[i] < > x) haz i := i + 1
  • 13. 13 Búsqueda lineal  La búsqueda termina sólo si la condición de la cláusula while es falsa.  Cuando se encuentra una concordancia, se halla la que tiene el índice menor, es decir, el primer elemento que concuerda en la secuencia. x = 0 1 8  i 1 1 4 2 2 5 3 1 2 4 3 4 5 9 El símbolo de mayor es > El símbolo de menor es <
  • 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 incrementa i, por lo que aunque no exista concordancia se debe llegar al límite n después de un número finito de iteraciones (pasos).
  • 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.
  • 17. 17 Búsqueda lineal con centinela  El algoritmo de búsqueda lineal con centinela es el siguiente: a[n] := x; i := 0; while a[i] < > x do i := i + 1  Evidentemente i = n implica que no se encontró concordancia (excepto la del centinela). El símbolo de mayor es > El símbolo de menor es <
  • 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.
  • 20. 20 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 = El símbolo de mayor es > El símbolo de menor es <
  • 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.
  • 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.
  • 24. 24 Búsqueda binaria Mejorada  Un algoritmo de búsqueda binaria más eficiente es el siguiente: 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 n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  m  R x = El símbolo de mayor es > El símbolo de menor es <
  • 25. 25 Ejemplo 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 n 0 1 2 3 4 5 6 a 3 4 5 6 7 8 9  L  m  R 1era vuelta m=0+6=6/2=3 m=3 x=4 am=6 6<4 NO else R:=m
  • 26. 26 2da Vuelta 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 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
  • 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.
  • 28. 28 Vamos con los difíciles