Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T T E E M M A A 1 1
1.1. Introduccin 1.2.1. Bsqueda Secuencial 1.2.2. Bsqueda Binaria 1.2.3. Bsqueda en Cadenas 1.2.4. Hashing 1.3. Ordenacin 1.3.1. Ordenacin por Insercin 1.3.2. Ordenacin por Seleccin 1.3.3. Ordenacin por Intercambio
Metodologa de Programacin
Introduccin
Objetivos Uso de las estructuras de datos antes Estructura de datos seleccionada Algoritmo diseado Tipos de Algoritmos Interno / Externo
Metodologa de Programacin
Bsqueda
Operacin frecuente en Programacin Diversidad de Algoritmos Diferentes Tcnicas de Bsqueda Bsqueda en Listas: Algoritmos, Eficiencia Lista Elementos componentes: Tipo de Datos Simple
Vector = ARRAY[0..N-1]DE TipoElemento
Bsqueda Secuencial
Aplicabilidad: Desconocimiento acerca de la organizacin de los datos Estructura solo accedida secuencialmente Idea Clave: Visitar todas las posiciones del array, hasta que se encuentre el elemento o se llegue al final del mismo (elemento no esta)
PROC Secuencial( x:TipoElemento) VAR ind:NATURAL Inicio ind 0 MIENTRAS (ind<N) (V[ind] <> x) HACER ind ind+1 FINMIENTRAS SI ind = N ENTONCES escribir("no encontrado") EN OTRO CASO escribir("encontrado") FINSI Fin
Metodologa de Programacin
Metodologa de Programacin
Bsqueda Secuencial
Consideraciones
La expresin lgica slo es correcta si el segundo trmino slo se evala cuando el primero es TRUE ( ) Mejor Caso 1 comparacin Peor Caso N comparaciones Caso Promedio N/2 comparaciones Fin de Bsqueda: Elemento hallado V[ind]=x Elemento no hallado ind=N
Metodologa de Programacin
Metodologa de Programacin
Bsqueda Binaria
Aplicabilidad:
-Informacin adicional: Cmo estn organizados los datos. -Bsqueda ms eficiente Datos Ordenados. k tal que 1 k N-1, se cumple que V[k-1] V[k ]
Bsqueda Binaria
PROC Binaria (V:Vector; x:TipoElemento) VAR izq,der,m:NATURAL; encontrado:LOGICO Inicio Izq 0 Der N - 1 Encontrado FALSO MIENTRAS (Izq Der) ( Encontrado)HACER m (*cualquier valor entre Izq y Der*) SI V[m] = x ENTONCES Encontrado TRUE EN OTRO CASO SI V[m] < x ENTONCES Izq m + 1 EN OTRO CASO Der m - 1 FINSI FINSI FINMIENTRAS Fin
Idea Clave:
Inspeccionar un elemento de ndice m elegido al azar (x elemento a buscar): - Si V[m]=x Fin Bsqueda - Si V[m]<x k/ k m, V[k] eliminados - Si V[m]>x k/ k m, V[k] eliminados
Metodologa de Programacin
Metodologa de Programacin
Bsqueda Binaria
Consideraciones Eleccin de m No afecta a la correccin del Algoritmo Objetivo: Eliminar el mayor nmero de elementos en cada iteracin Eleccin Optima m(Izq + der)/2 Eficiencia(Peor Caso) Trunc(log2N) +1
Bsqueda en Cadenas
Objetivo: Localizar la presencia de una
cadena de longitud M dentro de otra de N
Tipos:
TipoElemento=CARACTER
Texto=ARRAY[0..N-1]DE TipoElemento Patrn=ARRAY[0..M-1]DE TipoElemento
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Hashing
Listas: Elementos componentes Tipo de Datos Estructurado (Ej. 2N)+1 Secuencial Binaria
Hashing
Opciones:
Relacin perfecta entre el valor clave y la posicin de un registro Impracticable en muchas ocasiones Ordenar los elementos aplicando alguna
+ 1 iteracin
Metodologa de Programacin
Metodologa de Programacin
Hashing
Funcin Hash clave MOD 100
0 1 2 3 clave 459250704 funcin hash clave MOD 100
. . .
Hashing
Una Funcin Hash no garantiza direcciones nicas Colisiones Sinnimos: valores clave que producen colisiones al aplicarle una Funcin Colisiones difciles de evitar Algoritmos de Manejo de Colisiones Esquema Almacenamiento = Bsqueda
Metodologa de Programacin
4 5 6
99
Metodologa de Programacin
0 1 2 3 4 5 6
. . . 99
registro (010233099)
Metodologa de Programacin
FUNC ValorHash(clave:Cadena) :ENTERO VAR i,long:NATURAL valor:ENTERO Inicio long longitud(clave) valor 0 PARA i 1 HASTA long HACER valorvalor+ORD(clave[i]) FINPARA RESULTADO valor MOD 100 Fin
Metodologa de Programacin
Metodologa de Programacin
funcin rehash
.....
Metodologa de Programacin
0 1 2 3 4 5 6
clave 556677003
registro (010233099)
registro (243056399)
vaco
99
Metodologa de Programacin
registro (302472101)
Como?
Usar estructuras de datos con ms espacio del 20%) Conocimiento sobre la distribucin, dominio y
registro (243056399)
99
registro (010233099)
Metodologa de Programacin
Metodologa de Programacin
Ordenacin
Actividad esencial y muy relevante en Programacin Ocupa ms del 25% del Tiempo de computacin Problema ampliamente estudiado Diversidad de Algoritmos Objetivo: Eficiencia Buscar el mejor algoritmo de Ordenacin
Ordenacin
Eficiencia
Algoritmos que economicen la memoria disponible Algoritmo ms eficiente: Quickshort n*log(n) Algoritmos directos: Insercin, Seleccin e Intercambio n2 -Menos eficientes -Adecuados para dilucidar las principales caractersticas de los algoritmos de Ordenacin
Metodologa de Programacin
Metodologa de Programacin
Ordenacin
Algoritmos de Ordenacin
Tipo: Indice=[1..N] Vector=ARRAY Indice DE TipoElemento TipoElemento: Tipo sobre el que hay definida una El problema de ordenacin es encontrar una permutacin s, tal que si V es una variable del tipo Vector : V[si] V[si+1], 1 i N-1 El orden deseado ser: V[s1], V[s2], ........, V[sN].
Metodologa de Programacin
23 15 20
Metodologa de Programacin
7
1,....,
23
15
insertamos V6 1 3 5 7
1,....,V6
V5 ordenados, ordenados. 23 15 20
Cmo realizar la insercin? Insercin directa Abrir un hueco en la sucesin V1,....Vi-1 para encajar Vi Ejemplo:
Paso4: i:=5. Suponemos V1,...., V4 ordenados, insertamos V5 => V1,......, V5 ordenados. 1 3 7 9 5 23 15 20 1 3 5 7 9 23 15 20
Metodologa de Programacin
Metodologa de Programacin
de realizar la insercin
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Resultado
16 64 80 90 96 120 200 320
N elementos
N-1 Intercambios
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Paso1:
72 64 50 23 85 18 37 99 45 8
Metodologa de Programacin
Paso3,....., Paso9:
8 18 23 37 45 50 64 72 85 99
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Metodologa de Programacin
Bibliografa
Pascal y Estructuras de Datos. Dale, N. y Lilly, S. Ed. McGraw Hill 1989 Fundamentals of Data Structures in Pascal. Horowitz, E. y Sahni, S. Computer Science Press, 1994. Algoritmos y Estructuras de Datos. Wirth, N. Prentice-Hall, 1987. Estructuras de Datos en Pascal. Tenenbaum, A. y Augenstein, M. Prentice-Hall, 1983.
Metodologa de Programacin