Sunteți pe pagina 1din 15

UNIDAD TEMATICA 4: REPRESENTACION Y MANIPULACIN DE ESTRUCTURAS; ALGORITMOS

DE ORDENAMIENTO Y DE BSQUEDA. 1. INTRODUCCION: La informacin que se maneja de manera cotidiana puede ser organizada y analizada, de tal manera que nos ofrezca una serie de alternativas para en su momento utilizarla de forma adecuada. La idea es de obtener el mayor beneficio de anlisis y concentracin de toda la informacin. Para esto podemos hacer uso de las estructuras de datos.

2. ESTRUCTURA DE DATOS Una estructura de datos es una coleccin de datos que tienen el mismo nombre. Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos. El valor de la estructura de datos se determina por: El valor de los elementos La composicin de los elementos.

3. CLASIFICACIN DE ESTRUCTURA DE DATOS. Las estructuras de datos se pueden clasificar en dos grandes grupos: Estticas Arreglos (vectores y matrices) Registros (Struct) Archivos (File) Lineales: o Pilas o Colas o Listas No lineales: o Arboles o Grafos

Dinmicas

4. ESTRUCTURA DE DATOS ESTTICA: ARREGLOS Un arreglo (disposicin, vector o lista, tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo. Un arreglo se identifica por su nombre y se le asocia con un nombre variable. Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios ndices o subndices entre corchetes. Los elementos de un arreglo se almacenan en la memoria de la computadora en posicin adyacente (un elemento por posicin). Los elementos del arreglo se pueden procesar individualmente todas las veces que se desee, o bien todo el arreglo completo. Los arreglos se clasifican en: unidimensionales, bidimensionales y multidimensionales. Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa, indicando el nmero y tipo de elementos que puede contener.

4 12 3 0 7 14

4 12 3 0 7 34

Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo. Un orden viene dado por el subndice del vector. K[0] K[1] K[2] K[3] K[4] K[5] 4 12 3 0 7 14

4 12 3 0 7 14 K[0] K[1] K[2] K[3] K[4] K[5]

La declaracin del nmero y el tipo de elementos se realiza de diferentes formas segn el tipo de lenguaje en el que se vaya a implementar. Int A[10]; float x[7]; char p[12];

Las operaciones con los vectores o listas se pueden realizar en forma individual o sobre el vector complete mediante las instrucciones bsicas y estructuras de control.

Un arreglo bidimensional es un vector de vectores. Es un conjunto de elementos, todos del mismo tipo, en los que el orden de los componentes es significativo y en el que se necesitan dos subndices para definir cualquier elemento. Se le llama tabla o matriz. 4 12 3 0 7 14 10 25 7 4 12 8

5. ALGORITMOS DE ORDENAMIENTO La ordenacin (Sort) de datos consiste en la disposicin de los mismos de acuerdo a cierta caracterstica. Una coleccin de datos clasificados se pueden almacenar en un archivo, vector o tabla, una lista enlazada o rbol. Clasificacin de ordenacin: Interna: cuando los datos son almacenados en vectores, listas enlazadas, tablas o rboles. Externa: Aquellos que estn almacenados en archivos, cintas o dispositivos electrnicos. Ascendente: cuando se tiene de menor a mayor los elementos de la lista, ya sea alfabticamente o numricamente. Descendente: cuando se tiene de mayor a menor los elementos de la lista.

ALGORITMOS DE ORDENAMIENTO:

BURBUJA
Llamado tambin de intercambio directo o bubble sort. Es uno de los ms conocidos. Ms sencillo. Ms fcil de implementar. Idea Bsica: Comparar elementos consecutivos en cada paso a lo largo del arreglo. Cada vez que se realiza una comparacin, los elementos se intercambian entre s en caso de no estar en orden. Se le llama Burbuja, porque en la ordenacin los elementos ms ligeros suben en la lista. Se pasa varias veces a travs del arreglo en forma secuencial. Cada paso consiste en la comparacin de cada elemento con su sucesor , y el intercambio de los dos elementos si no estn en el orden correcto.

Anlisis de eficiencia Hay n-1 comparaciones y pasos en este mtodo. Por lo que el nmero total de comparaciones es O(n). El nmero de intercambios depende del orden original del archivo. La nica caracterstica redentora de este ordenamiento es que se requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples. Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad.

SELECCION
La idea bsica de esta ordenacin es: Encontrar el elemento menor (o mayor) de la lista y colocarlo en la primera posicin, a continuacin, el elemento siguiente menos (o mayor) se lleva a la segunda posicin y as sucesivamente hasta que quede ordenado. Cualquier ordenamiento pos seleccin puede conceptualizarse como un algoritmo que se usa una cola de prioridad descendente.

Anlisis de Eficiencia: En el primer paso se efectan n-1 comparaciones en el segundo n-2 comparaciones y as sucesivamente. O sea que es del orden O(n2). El nmero de intercambios es siempre n-1. Solo se requiere un poco de memoria adicional , para guardar unas variables temporales. El ordenamiento puede ser categorizado como ms rpido que el de burbuja. No hay mejora si el arreglo esta ordenado o desordenado. A pesar de ser fcil de codificar, es improbable que se use este mtodo ,solamente cuando son arreglos pequeos.

INSERCION
Se le llama insercin directa. Es relativamente sencillo. Se basa en intentar construir una lista ordenada. Tambin llamado mtodo de la baraja o naipes.

Idea bsica Hacer comparaciones, en donde en cada iteracin forma una lista ordenada. Donde la primera pasada compara los dos primeros elementos y los ordena. La siguiente pasada, toma el tercer elemento y lo compara con los dos anteriores, colocando a este su posicin correcta y asi sucesivamente hasta que queda ordenado.

Ventajas: Fcil de implementar Requerimientos de memoria minimos

Desventajas Lento Realiza numerosas comparaciones

Anlisis de Eficiencia: Es de utilidad para listas ordenadas o semiordenadas , ya que realiza pocos desplazamientos. Da mejores resultados que el de seleccin y el de burbuja. En promedio para todos los elementos, el mtodo tiene complejidad O(n2), el cual indica que es eficiente. Estabilidad: nunca intercambia datos con claves iguales Requerimientos de memoria: una variable adicional para los intercambios.

SHELL
Versin mejorada del insercin Se le conoce como insercin por decrementos (incrementos decrecientes). Es una generalizacin de insercin tomando en cuenta que: El ordenamiento por insercin es eficiente si la lista esta casi ordenada. El ordenamiento por insercin es ineficiente porque mueve los valores una posicin a la vez.

Idea bsica. Compara elementos no contiguis, y separados a una gran distancia. Si los elementos no estn en orden se intercambian. Comienza especificando un salto, comparando elementos separados por dicho alto y se intercambian si es necesario. Se divide el intervalo por dos y se repite el proceso. Al finalizar el recorrido del arreglo, el salgo es de uno y la ordenacin funciona como burbuja.

Anlisis de eficiencia: Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales. Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn)2) si se usa en una secuencia adecuada de incrementos.

RPIDO O QUICKSORT
Se le llama de intercambio por particin Se define como un proceso recursivo Se basa en la tcnica de divide y venceras Se basa en el mtodo de burbuja

Idea bsica: Se escoge un elemento a la mitad de la lista, llamado pivote, Se tienen los elementos<= a la izquierda del pivote Se tiene los elementos >= a la derecha del pivote.

Anlisis de eficiencia: Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente, que para elementos semiordenados. En promedio para todos los elementos, el mtodo hace O(nlogn) comparaciones, el cual indica que es eficiente. Para listas grandes consume ms memoria. Se considera el mtodo ms eficiente de los algoritmos.

MEZCLA
Se le llama tambin mtodo de intercalacin por fusin llamado Mergesort. Es un algoritmo recursivo con un minimo de comparaciones. Aplicacin clsica de la estrtegia para la resolucin de algoritmos divide y venceras.

Idea Bsica: Dividir el arreglo en dos listas y ordenarlas cada una por separado Cuando estn ordenadas, se pueden ir mezclando para asi generar la lista ordenada original ms fcilmente. La fusin de arreglos permite un mtodo de ordenacin rpido y potente.

Anlisis de eficiencia: Trabaja con una lista auxiliar, lo cual consume memoria y obviamente trabajo extra al copiar las listas.

HEAP SORT
Algoritmo de ordenacin recursivo No es estable Su complejidad es de O(nlogn). Se basa en una propiedad de montculos, en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el.

Heap significa cola de prioridades. Idea bsica: Consiste en alamacenar todos los elementos de la lista en un heap (rbol) y luego extraer el nodo que queda como raz del rbol (cima). Se realiza en sucesivas iteraciones, obteniendo asi la lista ordenada. Se mapea un rbol binario de tal forma en el arreglo que el nodo en la posicin 1 es el padre de los nodos en las posiciones (2*1) y (2*1+1). El valor de un nodo es mayor o igual a los valores de sus hijos. El nodo padre tiene el valor mayor de todo su rbol.

Procedimiento: Convertir la lista en un rbol Construir una lista ordenada de atrs hacia adelante (mayor a menor) haciendo lo siguiente: Saca el valor mximo en el rbol (el de la posicin 1) Poner el valor en la lista ordenada Reconstruir el rbol con un elemento menos. Usar el mismo arreglo para el rbol y la lista ordenada.

Anlisis de eficiencia: En el caso promedio, el heapsort no es tan eficiente como el quicksort. El heapsort requiere 2 veces ms tiempo que el quicksort. No es muy eficiente para pocos elementos, por la creacin del rbol y el clculo de la ubicacin de padres e hijos. Requerimientos: de una sola variable para guardar el valor de intercambio.

UNIDAD TEMATICA 5: ARBOLES Y GRAFOS


Definiciones bsicas: rbol: es un conjunto finito no vacio de elementos, en el que a uno de los elementos se le llama raz. Los dems estn particionados en m>=0 subconjuntos disjuntos y representan a un rbol en si mismo.

Arboles
Definiciones bsicas: rbol binario: es un conjunto finito que esta vacio o est dividido en tres subconjuntos desarticulados. El primer subconjunto contiene un solo elemento llamado raz. Los otros dos son en s mismos arboles binarios, llamados subrbol izquierdo y subrbol derecho del rbol original. Cada del elemento de un rbol binario se llama nodo.

Representacion grfica de arboles:

Representacin grfica de arboles usando listas:

Cada elemento de un rbol se le llama nodo del rbol. Un nodo que no tiene subrboles se le llama hoja. La ausencia de ramas indica que es un subrbol vacio Dos nodos son hermanos si son hijos derecho e izquierdo del mismo padre. La direccin de la raz hacia las hojas se llama hacia abajo. La direccin de las hijas hacia la raz se llama hacia arriba. Ir de las hojas a la raz se llama trepar a un rbol. Ir de la raz a las hojas se llama descender de de un rbol. Un nodo sin hijos se denomina hoja Los dems nodos son internos El grado de un nodo es el nmero de hijos que tiene. La profundidad de un nodo es la longitud del camino desde la raz a ese nodo. La altura de un rbol es la profundidad del nodo ms profundo. El nivel de un nodo en un rbol binario se define como el nivel ms uno con respecto a su padre. La profundidad de un rbol binario es el Mximo nivel de cualquier hoja de rbol.

Operaciones con rboles: Las operaciones comunes en arboles son: 1. 2. 3. 4. 5. 6. 7. Enumerar todos los elementos Buscar un elemento Dado un nodo, listar los hijos (si los hay) Borrar un elemento Eliminar un subrbol (algunas veces llamada podar) Aadir un subrbol (algunas veces llamada injertar) Encontrar la raz de cualquier nodo

Algunas operaciones primitivas con arboles como: a) Informacin del nodo [info(p)] b) Izquierdo de p[left(p)] y Derecho de p[right(p)] c) Padre de p[father(p)] e hijo de p[brother(p)]

d) Recorrer un rbol binario .- visitar cada nodo, mostrar la informacin o procesar la informacin. Para esto existen diversos procedimientos para visitar un rbol binario y son: 1. Preorder: - Se visita la raz del primer rbol del bosque. - Recorrer en preorder el bosque formado por subrboles del primer rbol, en caso de que los haya. - Recorrer en preorder el bosque formado por los rboles restantes del bosque, en casa de que haya. 2. Inorder: - Recorrer en orden del bosque formado por subrboles del primer rbol del bosque, en caso de que los haya. - Se visita la raz del primer rbol. -Recorrer en orden el bosque formado por los rboles restantes del bosque, en caso de que haya. 3. Postorder: -Recorrer en postorder el bosque formado por subarboles del primer rbol del bosque, en caso de que los haya. -Recorrer en postorder el bosque formado por los arboles restantes del bosque, en caso de que haya. -Se visita la raz del primer rbol del bosque.

ARBOLES:
Bosque: es un grafo no dirigido a cclico Arbol libre: es un grafo no dirigido a cclico conexo. Un rbol enraizado es un rbol libre con un vrtice (o nodo) distinguido denominado raz.

La representacin puede realizarse de diferentes formas: Las ms utilizadas son: Representar cada nodo como una variable en el heap, con punteros a sus hijos y a su padre. Representar el rbol con un arreglo donde cada elemento es un nodo y las relaciones padre-hijo vienen dadas por la posicin del nodo en el arreglo.

Usos ms comunes de los rboles: a) Representacion de datos jerarquicos.

b) Como ayuda para realizar bsquedas en conjunto de datos (algoritmos de bsqueda en rboles).

GRAFOS Grafo es un conjunto de nodos ( vertices) y un conjunto de arcos(aristas). Cada arco de un grafo se especifica mediante un par de nodos. Grafo dirigido: es cuando los pares de nodos que constituyen los arcos son pares ordenados. Grafo es un conjunto de nodos con enlaces entre ellos.

Las flechas entre los nodos representan los arcos El grado de un nodo es el numero de arcos que inciden en el Grado de entrada de un nodo: Es el nmero de arcos que tiene punta en ese nodo. Grado de salida de un nodo: Es el nmero de arcos que tienen a ese nodo como cola. Camino: un camino en un grafo es una sucesin finita en la que aparecen alternadamente vrtices y aristas de dicho grafo. Los extremos son los vrtices inicial y final del camino. La longitud de un camino es el nmero de aristas que contiene.

Clases de grafos: Un grafo simple tiene solo un arco entre dos nodos. Un multgrafo es un grafo con varias aristas entre dos vrtices. Un pseudografo es un grafo en el que hay aristas (lazos) que tienen el mismo extremo. Un dgrafo es un grafo donde a cada arista se le indica un sentido mediante una flecha. Los multidigrafos o pseudomultigrafos son combinaciones de los anteriores.

Los grafos son utilizados con frecuencia para representar vas y redes de comunicacin. Algoritmo de Dijkstra Es un algoritmo que sirve para hallar la distancia ms corta entre dos vrtices de un dgrafo. Sus reglas bsicas son: a) b) c) d) Se toma el vrtice inicial y se comprueba todas las direcciones posibles de salida Se elije entre todos los vrtices el de la distancia minima y accede a el. Desde el siguiente vrtice se efectuael mismo paso hasta llegar al vrtice final. El algoritmo recorre todos los caminos posibles hasta tener la distancia minima entre ambos vrtices.

Similitudes y diferencias entre rboles y grafos. Ambas son Estructuras Dinmicas de Datos no Lineales. Son representaciones grficas o visuales de un conjunto de nodos. Expresan las relaciones que se dan entre los nodos. Pueden crecer y decrecer durante la ejecucin del programa. Grafos Existen varios caminos entre un nodo y otro. Estudia las interrelaciones entre unidades que interactan unas con otras. Tienen vrtices y aristas, son bidimensionales.

rboles Es una estructura jerarquica aplicada sobre una coleccin de nodos. Se establece un camino nico desde el nodo raz hasta un nodo cualquiera del rbol. Uno de los nodos es la raz. Se utiliza la recursin para definir un rbol.

TABLAS DE DISPERSION
Conocidas tambin como Tabla Hash Nombre en ingles: Hash Tables Dos partes: Tabla de dispersin de n entradas Una funcin de dispersin que transforma datos de entrada en una clave

Clave es ndice en tabla de dispersin Rango de entradas >> Rango de claves

Funciones de dispersin
Se busca transformar una clave k a una posicin x en la tabla de tamao m. H(k)=x,0<x<m

Dispersion Uniforme:
Dadas n claves, cada casilla en la tabla debe recibir aproximadamente n/m claves No siempre es posible escoger bien como transformar la clave!.

Operaciones bsicas:
Insertar (clave o elemento) Aplica funcin de dispersin a la clave Retorna ndice de posicin en tabla Usar ndice para almacenar el elemento en dicha posicin de la tabla. Si posicin est ocupada, resolver la colisin. Definir dnde almacenar el elemento.

Buscar (clave) Aplica funcin de dispersin a la clave Retorna ndice de posicin en la tabla Usar ndice para obtener elemento almacenado en dicha posicin de la tabla. Si el elemento no es buscado, seguir buscando. Dnde buscar? Depende del tipo de tabla Si no encuentra el elemento, ste no est en la tabla.

Bsqueda en tablas de dispersin Generacin de la clave es O(I) funcin simple y conocida Bsqueda en una tabla dado el ndice es O(I) Excepto si hay colisiones Desempeo baja si hay muchas colisiones Peor caso: Todos los datos en colisin Comportamiento es O(n).

Resolucin de colisiones:
Tablas encadenadas: Datos en colisin se almacenan en listas encadenadas Una lista por casilla

Direccionamiento abierto Datos en colisin se almacenan en la misma tabla

Comparacin de los dos mtodos:


Tablas encadenadas: Requiere memoria adicional a la tabla Bsqueda promedio: 1+ /2 -1/2M Peor caso: lista encadenada O(N)

Direccionamiento directo Requiere funciones de hashing adicionales Bsqueda promedio: (2 - )/(2-2 ) Peor caso: Recorrer toda la tabla O(N).

Aplicaciones:
Bases de datos Tabas de smbolos para compiladores Vectores asociativos Diccionarios de datos Criptografa Firmas digitales

S-ar putea să vă placă și