Arbol

245 views

Published on

  • Be the first to comment

  • Be the first to like this

Arbol

  1. 1.  Universidad Nacional de Costa Rica Curso: EIF-203 Estructuras Discretaspara Informática Sub Grupo :8 Profesor Enrique Vílchez Quesada
  2. 2.  un árbol es una estructura de datos ampliamenteusada que imita la forma de un árbol (un conjunto denodos conectados). Un nodo es la unidad sobre laque se construye el árbol y puede tener cero o másnodos hijos conectados a él. Se dice que unnodo es padre de un nodo si existe un enlacedesde hasta (en ese caso, también decimosque es hijo de ). Sólo puede haber un único nodosin padres, que llamaremos raíz. Un nodo que notiene hijos se conoce como hoja. Los demás nodos(tienen padre y uno o varios hijos) se les conocecomo rama.
  3. 3.  hay muchas maneras de generar árboles k. El sistema es: Conforme se desciende en el árbol, se emplean ciclos através de los ejes para seleccionar los planos. En cada paso, el punto seleccionado para crear el plano decorte será la mediada de los puntos puestos en el árbol k, loque respeta sus coordenadas en el eje que está siendousado. Este método lleva a un árbol k balanceado, donde cadanodo hoja está a la misma distancia de la raíz. De todasformas, los árboles balanceados no son necesariamenteóptimos para todas las aplicaciones.
  4. 4.  Un Recorrido en un k- arbol son formas dedesplazamiento sobre cada uno de sus vertices,unrecorrido en un arbol,pasa una única vez por los nodosque lo constituyen
  5. 5.  Un árbol T es un árbol generador de un grafo G si T esun subgrafo de G que contiene todos los vértices de G.A esta característica general es posible agregar ciertosteoremas de modo de detallar aún más el alcance de ladefinición. Es así como el Grafo que contiene a T debeser conexo, pues de lo contrario no existiría unsubgrafo que contuviera todos sus vértices. En generalun grafo G tendrá varios árboles generadores ,como eldel ejemplo 1 el cual tiene a lo menos dos arbolesgeneradores T1 yT2.
  6. 6.  Búsqueda en anchura (en inglés BFS - Breadth First Search) esun algoritmo para recorrer o buscar elementos enun grafo (usado frecuentemente sobre árboles). Intuitivamente,se comienza en la raíz (eligiendo algún nodo como elemento raízen el caso de un grafo) y se exploran todos los vecinos de estenodo. A continuación para cada uno de los vecinos se exploransus respectivos vecinos adyacentes, y así hasta que se recorratodo el árbol. Formalmente, LPA es un algoritmo de búsqueda sin información,que expande y examina todos los nodos de un árbolsistemáticamente para buscar una solución. El algoritmo no usaninguna estrategia heurística. Si las aristas tienen pesos negativos aplicaremos el algoritmo deBellman-Ford en alguna de sus dos versiones.
  7. 7.  Dado un vértice fuente s, Breadth-first search sistemáticamenteexplora los vértices de G para “descubrir” todos los vérticesalcanzables desde s. Calcula la distancia (menor número de vértices) desde s a todoslos vértices alcanzables. Después produce un árbol BF con raíz en s y que contiene atodos los vértices alcanzables. El camino desde s a cada vértice en este recorrido contiene elmínimo número de vértices. Es el camino más corto medido ennúmero de vértices. Su nombre se debe a que expande uniformemente la fronteraentre lo descubierto y lo no descubierto. Llega a los nodos dedistancia k, sólo tras haber llegado a todos los nodos a distanciak-1.
  8. 8.  Una Búsqueda en profundidad (en inglés DFSo Depth First Search) es un algoritmo que permiterecorrer todos los nodos de un grafo o árbol (teoría degrafos) de manera ordenada, pero no uniforme. Sufuncionamiento consiste en ir expandiendo todos ycada uno de los nodos que va localizando, de formarecurrente, en un camino concreto. Cuando ya noquedan más nodos que visitar en dicho camino,regresa, de modo que repite el mismo proceso con cadauno de los hermanos del nodo ya procesado.
  9. 9.  Trata de un algoritmo donde No conocen el dominiode problema solo saben una acción dada.Como podremos ver acontuniacion con la solucion decomo realizar el algoritmo de busqueda a lo ancho y alo largo en un k-arbol
  10. 10.  La siguiente implementación fue realizada paraWólfram mathematica
  11. 11.  <<Combinatorica` h=0; k=Input["Digite el orden del K-arbol:"]; n=Input["Digite la cantidad de vertices del K-arbol:"]; w=Input["Digite el dato de busqueda:"]; ShowGraph[G=CompleteKaryTree[n,k],VertexNumberTrue,PlotRange 0.1] v=DepthFirstTraversal[G,1,Edge]; For[i=1,i£ Length[v],If[wŠv[[i]],h=1;Break[]];i++] If[h=0,Print["Dato no encontrado"], Print["Dato encontrado"]] AnimateGraph[G,v,VertexColorRed,EdgeColor®Blue,VertexNumber True, PlotRange 0.1]
  12. 12.  Donde para empezar se pide un orden Cantidad de vértices del árbol k Y el dato de búsqueda donde los datos se leen porteclado Para construir un k- árbol t con n nodos y determina siuna dato w esta en t mediante una comparación devértices, hallados por el algoritmo de recorrido aprofundidad (BPL)
  13. 13.  Show graph: funciona para construir un grafo CompleteKaryTree: forma un árbol binario completocon n niveles DepthFirstTraversal: realiza un recorrido de buscarprimero a lo largo Animate graph: funciona para darle animación algrafico (opcional )
  14. 14.  <<Combinatorica` h=0; k=Input["Digite el orden del K-arbol:"]; n=Input["Digite la cantidad de vertices del K-arbol:"]; w=Input["Digite el dato de busqueda:"]; ShowGraph[G=CompleteKaryTree[n,k],VertexNumberTrue,PlotRange 0.1] v=BreadthFirstTraversal [G,1,Edge]; For[i=1,i£ Length[v],If[wŠv[[i]],h=1;Break[]];i++] If[h=0,Print["Dato no encontrado"], Print["Dato encontrado"]] AnimateGraph[G,v,VertexColorRed,EdgeColor®Blue,VertexNumber True, PlotRange 0.1]
  15. 15.  En al caso de busqueda a lo ancho es exactamenteigual al recorrrido de profundidad el unico cambio esla utilizacion del comando Breathfristtraversal: que realiza en recorrido primero alo ancho
  16. 16.  Si hay una solución la encuentra. Es mas si hay variasencuentra la optima. No se “pierde”, explorando caminos infructuosos queconsumen mucho tiempo sin llegar a una solución Requiere mucho menos memoria Puede encontrar el árbol sobre todo si hay varioscaminos a la solución.
  17. 17.  Un claro ejemplo de arboles son los conocidos “arbolesgenealógicos” Otro ejemplo son los tipos de movimientos en elajedrez

×