Anda di halaman 1dari 9

Examen lunes 07 de mayo 2012 RBOLES BINARIOS Definicin Operaciones bsicas con arboles Altura Recorridos RBOLES BINARIOS

NARIOS DE BUSQUEDA Definicin Operaciones en ABB Mnimo y mximo sucesor y predecesor Buscar un elemento Insertar un elemento Borrar un elemento Movimientos Arboles degenerados ARBOLES AVL Definicin Operaciones AVL Factor de equilibrio Rotaciones simple Rotaciones dobles Reequilibrados GRAFOS Conceptos bsicos Definicin formal con peso es V{(a,b,6)} Definicin informal Grafo no dirigido Grafo conexo Matriz de adyacencia Representacin por lista de adyacencia Algoritmos de recorrido Algo de dijsktra Algo de Prim rbol de expiacin mnima Algo de Floyd Warshall Examen Un Tema Prctico Terico

GRAFOS:
Definicin informal: Un grafo es formado por un conjunto de vrtices (o nodos) y un conjunto de aristas que conectan vrtices distintos, con al mnimo una arista conectando un par de vrtices.El grafo se representa con el par G = (V, A), donde V es el conjunto devrtices y A el conjuntode arcos. Definicin formal: V = {1, 4, 5, 7,9} A = {(1,4), (4,1), (1,5), (5,1), (5,7), (7,5), (7,9), (9,7), (9,4),(4,9)} Caractersticas: -Grafos no dirigidos: Un arco o arista representa una relacin entre dos nodos o vrtices. Esta relacin, al estar formado por dos nodos se representa por (u, v) siendo u, v el par de nodos. El grafo es no dirigido si los arcos estn formados por pares de nodos no ordenados; se representa con un segmento uniendo los nodos u v. -Grafos dirigidos:Un grafo es dirigido, tambin conocido como disgrafo, si lospares de nodos que forman los arcos son ordenados; serepresentan con una flecha que indica ladireccin de la relacin, u -> v. V = {C,D,E,F,H } A = {(C,D), (D,F), (E,H), (H,E), (E,C)}

Dado el arco (u, v) de un grafo, se dice que los vrtices u y v son adyacentes. Si el grafo es dirigido, el vrtice "u es adyacente a v", y "v es adyacente de u". En los modelos realizados con grafos, a veces, una relacin entre dos nodos tiene asociada informacin, denominada factor de peso, en cuyo caso se dice que es un grafo valorado o grafo con peso tambin podemos encontrar el termino ponderado para denominar esto. El grado es una caracterstica que se refiere a los nodos de un grafo. En un grafo no dirigido, elgrado de un nodo es el nmero de arcos que contienen al nodo. En un grafo dirigido se distingueentre grado de entrada y grado de salida; grado de entrada de un nodo es el nmero de arcos quellegan (entran) al nodo y grado de salida es el nmero de arcos que salen del nodo. Un camino (path) P de longitud n desde el vrtice v0 a vn en un grafo G, es la secuencia de n+1vrticesv0, v1,v2,..., vn tal que (vi, vi+1) A (arcos) para 0 i n. Un camino P = {v0, v1, v2,...,vn} es simple si todos los nodos que forman el camino son distintos, pudiendo ser iguales v0 y vn (los extremos del camino). En un grafo dirigido, un ciclo es un camino simple cerrado. Por tanto, un ciclo empieza y terminaen el mismo nodo, v0 = vn y adems debe tener ms de un arco. Un grafo dirigido sin ciclos se conoce como Grafo Dirigido Acclico. Un grafo no dirigido es conexo si existe un camino entre cualquier par de nodos que forman elgrafo. Un grafo dirigido, que tiene un camino entre cualquier par de nodos que forman el grafo se conoce como grafo fuertemente conexo.

Representaciones: Matriz de adyacencia: La caracterstica ms importante de un grafo, es el conjunto depares de vrtices que estnrelacionados, en otras palabras que son adyacentes. La forma ms simple derepresentar estarelacin es con una matriz, de tantas filas y columnas como vrtices tiene el grafo (una matrizcuadrada); en cada interseccin de fila - columna se puede tener un valor numrico uno (1) si hayun arco entre el nodo de la fila con el nodo de la columna o cero (0) si no existe dicho arco; porsupuesto tambin se puede realizar con valores booleanos.

Lista de adyacencia:Cada vrtice tiene una lista de vrtices los cuales son adyacentes a l. Esto causa redundancia en un grafo dirigido (ya que A existe en la lista de adyacencia de B y viceversa), pero las bsquedas son ms rpidas, al costo de almacenamiento extra.

Algoritmos de recorrido

Algoritmo de Dijkstra: El algoritmo de Dijkstra, tambin llamado algoritmo de caminos mnimos, es un algoritmo para la determinacin del camino ms corto dado unvrtice origen al resto de vrtices en un grafo con pesos en cada arista. Su nombre se refiere a EdsgerDijkstra, quien lo describi por primera vez en 1959. La idea subyacente en este algoritmo consiste en ir explorando todos los caminos ms cortos que parten del vrtice origen y que llevan a todos los dems vrtices; cuando se obtiene el camino ms corto desde el vrtice origen, al resto de vrtices que componen el grafo, el algoritmo se detiene. El algoritmo es una especializacin de la bsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la bsqueda nodos que en prximas iteraciones bajaran el costo general del camino al pasar por una arista con costo negativo). Algoritmo de Prim:El algoritmo de Prim es un algoritmo perteneciente a la teora de los grafos para encontrar un rbol recubridor mnimo en un grafo conexo, no dirigido y cuyas aristas estn etiquetadas.En otras palabras, el algoritmo encuentra un subconjunto de aristas que forman un rbol con todos los vrtices, donde el peso total de todas las aristas en el rbol es el mnimo posible. Si el grafo no es conexo, entonces el algoritmo encontrar el rbol recubridor mnimo para uno de los componentes conexos que forman dicho grafo no conexo.

RBOL DE EXPANSIN MNIMA:


Grafo Descripcin Este es el grafo ponderado de partida. No es un rbol ya que requiere que no haya ciclos y en este grafo los hay. Los nmeros cerca de las aristas indican el peso. Ninguna de las aristas est marcada, y el vrtice D ha sido elegido arbitrariamente como el punto de partida. El segundo vrtice es el ms cercano a D: A est a 5 de distancia, B a 9, E a 15 y F a 6. De estos, 5 es el valor ms pequeo, as que marcamos la arista DA. El prximo vrtice a elegir es el ms cercano a D o A. B est a 9 de distancia de D y a 7 de A, E est a 15, y F est a 6. 6 es el valor ms pequeo, as que marcamos el vrtice F y a la arista DF. El algoritmo contina. El vrtice B, que est a una distancia de 7 de A, es el siguiente marcado. En este punto la arista DB es marcada en rojo porque sus dos extremos ya estn en el rbol y por lo tanto no podr ser utilizado. Aqu hay que elegir entre C, E y G. C est a 8 de distancia de B, E est a 7 de distancia de B, y G est a 11 de distancia de F. E est ms cerca, entonces marcamos el vrtice E y la arista EB. Otras dos aristas fueron marcadas en rojo porque ambos vrtices que unen fueron agregados al rbol. Slo quedan disponibles C y G. C est a 5 de distancia de E, y G a 9 de distancia de E. Se elige C, y se marca con el arco EC. El arcoBCtambin se marca con rojo. G es el nico vrtice pendiente, y est ms cerca de E que de F, as que se agrega EG al rbol. Todos los vrtices estn ya marcados, el rbol de expansin mnimo se muestra en verde. En este caso con un peso de 39. Vrtices no ledos C,G Vrtices en Vrtices en el grafo el rbol A, B, E, F D

C, G

B, E, F

A, D

B, E, G

A, D, F

NULL

E, C, G

A, D, F, B

NULL

C, G

A, D, F, B

NULL

A, D, F, B, G

NULL

NULL

A, D, F, B, G, C

Algoritmo de Floyd Warshall: http://btocastro.blogspot.com/2011/07/algoritmo-de-floyd-warshall.html Definicin: El algoritmo de Floyd-Warshall consiste en el anlisis de un grafo, con el cual podemos encontrar el camino mnimo entre todos los pares de vrtices. El grafo tiene que ser ponderado y dirigido. Tal algoritmo es capaz de hacer esto con slo comparaciones (esto es notable considerando que puede haber hasta aristas en el grafo, y que cada combinacin de aristas se prueba). Lo hace mejorando paulatinamente una estimacin del camino ms corto entre dos vrtices, hasta que se sabe que la estimacin es ptima. Implementacin: Sea un grafo con conjunto de vrtices , numerados de 1 a N. Sea adems una

funcin que devuelve el camino mnimo de a usando nicamente los vrtices de 1 a como puntos intermedios en el camino. Ahora, dada esta funcin, nuestro objetivo es encontrar el camino mnimo desde cada a cada usando nicamente los vrtices de 1 hasta . ;o

Hay dos candidatos para este camino: un camino mnimo, que utiliza nicamente los vrtices del conjunto bien existe un camino que va desde hasta , y de hasta , que es mejor. Sabemos que el camino

ptimo de a que nicamente utiliza los vrtices de 1 hasta est definido por ,y est claro que si hubiera un camino mejor de a a , la longitud de este camino sera la concatenacin del camino mnimo de a los vrtices en ). (utilizando vrtices de ) y el camino mnimo de a (que tambin utiliza

http://www.algorithmist.com/index.php/Floyd-Warshall's_Algorithm.c http://ankitstar.blogspot.com/2011/06/floyd-warshall-algortithm.html http://btocastro.blogspot.com/2011/07/algoritmo-de-floyd-warshall.html

RBOL BINARIO: Definicin: Un rbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. Tambin se suele dar una definicin recursiva: un rbol es una estructura en compuesta por un dato y varios rboles. Esto son definiciones simples. Pero las caractersticas que implican no lo son tanto. Definiremos varios conceptos. En relacin con otros nodos: Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del rbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D'. Los rboles con los que trabajaremos tienen otra caracterstica importante: cada nodo slo puede ser apuntado por otro nodo, es decir, cada nodo slo tendr un padre. Esto hace que estos rboles estn fuertemente jerarquizados, y es lo que en realidad les da la apariencia de rboles. En cuanto a la posicin dentro del rbol: Nodo raz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al rbol. En el ejemplo, ese nodo es el 'A'. Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definicin apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categoras anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'. Otra caracterstica que normalmente tendrn nuestros rboles es que todos los nodos contengan el mismo nmero de punteros, es decir, usaremos la misma estructura para todos los nodos del rbol. Esto hace que la estructura sea ms sencilla, y por lo tanto tambin los programas para trabajar con ellos. Tampoco es necesario que todos los nodos hijos de un nodo concreto existan. Es decir, que pueden usarse todos, algunos o ninguno de los punteros de cada nodo. Un rbol en el que en cada nodo o bien todos o ninguno de los hijos existe, se llama rbol completo. En una cosa, los rboles se parecen al resto de las estructuras que hemos visto: dado un nodo cualquiera de la estructura, podemos considerarlo como una estructura independiente. Es decir, un nodo cualquiera puede ser considerado como la raz de un rbol completo. Existen otros conceptos que definen las caractersticas del rbol, en relacin a su tamao: Orden: es el nmero potencial de hijos que puede tener cada elemento de rbol. De este modo, diremos que un rbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres ser de orden tres, etc. Grado: el nmero de hijos que tiene el elemento con ms hijos dentro del rbol. En el rbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con ms de tres hijos. Nivel: se define para cada elemento del rbol como la distancia a la raz, medida en nodos. El nivel de la raz es cero y el de sus hijos uno. As sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3.

Altura: la altura de un rbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un rbol puede considerarse a su vez como la raz de un rbol, tambin podemos hablar de altura de ramas. El rbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc. Los rboles de orden dos son bastante especiales, de hecho les dedicaremos varios captulos. Estos rboles se conocen tambin como rboles binarios. Frecuentemente, aunque tampoco es estrictamente necesario, para hacer ms fcil moverse a travs del rbol, aadiremos un puntero a cada nodo que apunte al nodo padre. De este modo podremos avanzar en direccin a la raz, y no slo hacia las hojas. Es importante conservar siempre el nodo raz ya que es el nodo a partir del cual se desarrolla el rbol, si perdemos este nodo, perderemos el acceso a todo el rbol.
MNIMO Y MXIMO SUCESOR Y PREDECESOR MINIMO:Un elemento, en un rbol de bsqueda binaria, cuya llave es un mnimo, siempre se

puede encontrar siguiendolos apuntadores al hijo izquierdo desde la raz hastaque NULL sea encontrado.
int ArbolBinario::ObtenerMenor(Nodo *actual) { int menor = 0; if(actual == NULL) { return 0; } else { return ObtenerMenor(actual->izq); } return menor;} int ArbolBinario::ObtenerMenor() { Nodo *actual = raiz; int menor = raiz->dato; while(actual != NULL) { menor = actual->dato; actual=actual->izq; } return menor;}

MAXIMO: El procedimiento para hallar el mximo es simtrico al algoritmo para hallar el mnimo.
int ArbolBinario::ObtenerMayor(Nodo *actual) { int mayor = 0; if(actual == NULL) { return 0; } else { return ObtenerMenor(actual->der); } return mayor;} int ArbolBinario::ObtenerMayor() { Nodo *actual = raiz; int menor = raiz->dato; while(actual != NULL) { menor = actual->dato; actual=actual->der; } return mayor;}

SUCESOR: es el nodo Menor de los Mayores. Cdigo: P = actual -> der; While (p ->izq != NULL ){ p=p->izq; return p; }

PREDECESOR: es el nodo Mayor de los Menores. Cdigo: P = actual ->izq; while( p -> der != NULL) { p=p->der; return p; }

ARBOLES DEGENERADOS:

Definicin: Un rbol degenerativo es un rbol que, para cada nodo padre, slo hay asociado un nodo hijo. Por lo que se comporta como una lista enlazada.

Cdigo:
bool ArbolBinario::EsDegenerado(NodoABB *actual) { if (actual== NULL){returntrue;} else { if(!Vacio(actual->der) && !Vacio(actual->izq)) { cout<<"El arbol no es degenerado"<<endl; returnfalse; } elseif (!Vacio(actual->der)) { cout<<"El arbol es degenerado por laDerecha"<<endl; returntrue; } elseif (!Vacio(actual->izq)) { cout<<"El arbol es degenerado por la Izquierda"<<endl; returntrue; } } }

ARBOLES AVL
Definicin:Un rbol AVL es un rbol binario de bsqueda que cumple con lacondicin de que la diferenciaentre las alturas de los subrboles de cada uno de susnodos es, como mucho 1. La denominacin de rbol AVL viene dada por los creadores de tal estructura(Adelson-Velskii y Landis). Recordamos que un rbol binario de bsqueda es un rbol binario en el cual cada nodocumple con que todos los nodos de su subrbol izquierdo son menores que la raz ytodos los nodos del subrbol derecho son mayores que la raz. La propiedad de equilibrio que debe cumplir un rbol para ser AVL asegura que la profundidad del rbol sea O(log(n)), por lo que las operaciones sobre estas estructuras no debern recorrer mucho para hallar el elemento deseado. Como se ver, el tiempo de ejecucin de las operaciones sobre estos rboles es, a lo sumo O(log(n)) en el peor caso, donde n es la cantidad de elementos del rbol. Sin embargo, y como era de esperarse, esta misma propiedad de equilibrio de los rboles AVL implica una dificultad a la hora de insertar o eliminar elementos: estas operaciones pueden no conservar dicha propiedad.

Rotaciones: Rotaciones simples: Caso 1 DERECHA:Esta rotacin se usar cuando el subrbol izquierdo de un nodo sea 2
unidades ms alto que el derecho, es decir, cuando su FE sea de -2. Y adems, la raz del subrbol izquierdo tenga una FE de -1 0, es decir, que est cargado a la izquierda o equilibrado. Procederemos del siguiente modo: Llamaremos P al nodo que muestra el desequilibrio, el que tiene una FE de -2. Y llamaremos Q al nodo raz del subrbol izquierdo de P. Adems, llamaremos A al subrbol izquierdo de Q, B al subrbol derecho de Q y C al subrbol derecho de P. En el grfico que puede observar que tanto B como C tienen la misma altura (n), y A es una unidadmayor (n+1). Esto hace que el FE de Q sea -1, la altura del subrbol que tiene Q como raz es (n+2) y por lo tanto el FE de P es -2. 1. Pasamos el subrbol derecho del nodo Q como subrbol izquierdo de P. Esto mantiene el rbol como ABB, ya que todos los valores a la derecha de Q siguen estando a la izquierda de P. 2. El rbol P pasa a ser el subrbol derecho del nodo Q. 3. Ahora, el nodo Q pasa a tomar la posicin del nodo P, es decir, hacemos que la entrada al rbol sea el nodo Q, en lugar del nodo P. Previamente, P puede que fuese un rbol completo o un subrbol de otro nodo de menor altura.

Caso 2 IZQUIERDA: Los reequilibrados se realizan mediante rotaciones, en el siguiente


punto veremos cada caso, ahora vamos a ver las cuatro posibles rotaciones que podemos aplicar.

Anda mungkin juga menyukai