Elabore un algoritmo de bsqueda de un rbol binario y un
algoritmo de bsqueda usando grafos de algn juego. RBOL BINARIO E B!"#$EA. El rbol binario de bsqueda es una estructura sobre la cual se pueden realizar eficientemente las operaciones de bsqueda, insercin y eliminacin. Formalmente se define un rbol binario de bsqueda de la siguiente manera: Para todo nodo del rbol debe cumplirse que todos los !alores de los nodos del subrbol izquierdo de deben ser menores o iguales al !alor del nodo . "e forma similar, todos los !alores de los nodos el subrbol derec#o de deben ser mayores o iguales al !alor del nodo $. RBOL BINARIO E B!"#$EA. %bser!emos que si se efecta un recorrido in&orden sobre el rbol de 'squeda se obtendr una clasificacin de los nodos en forma ascendente. El recorrido in&orden del rbol anterior produce el siguiente resultado: (( )* +, ,+ -. /* // 0(1 0*1 0*+ 0)1 AL%ORI&'O E B!"#$EA 2 '3456E"7 89%"%, :9F%;< 2 =El algoritmo localiza un nodo en un rbol binario de bsqueda. 9%"% es una !ariable de tipo puntero que apunta a la ra>z del rbol. :9F%; es una !ariable que contiene la informacin que se desea localizar en el rbol. ?abe aclarar que la primera !ez la !ariable 9%"% no puede ser !ac>a. 4i :9F%; @ 9%"%A.:9F% entonces 4i 9%"%A.:B5 C 9:DD entonces Escribir El nodo no se encuentra en el rbol$ 4ino '3456E"7 89%"%A.:B5, :9F%;< =Dlamada recursi!aE Fin 4i 4ino 4i :9F%; F 9%"%A.:9F% entonces 4i 9%"%A."E; C 9:DD entonces Escribir El nodo no se encuentra en el rbol$ 4ino '3456E"7 89%"%A."E;, :9F%;< =Dlamada recursi!aE Fin 4i 4ino Escribir El nodo se encuentra en el rbol$ Fin 4i Fin 4i Fin del algoritmo AL%ORI&'O" E B!"#$EA EN %RA(O" Dos algoritmos de bsqueda en grafos nacen por la necesidad de crear un mecanismo de na!egacin autnoma, bien sea de robots, coc#es, o personaGes en un !ideoGuego. 7lgunos de los ms conocidos son 7H, DP7H, o "H. es)ri*)i+n 6n grafo, representa un conGunto de nodos unidos en una red. 4i dos nodos estn unidos, al !iaGar de uno a otro se considerara sucesor el nodo al que nos mo!emos, y predecesor el nodo del que !enimos. 7dems, normalmente eIistir un coste !inculado al desplazamiento entre nodos. 6n algoritmo de bsqueda tratar, de encontrar un camino optimo entre dos nodos como por eGemplo un camino que minimice el coste de desplazamiento, o el numero de pasos a realizar. Da principal diferencia entre los algoritmos es la informacin que guardan a cerca del grafo. 7lgunos de ellos no guardan informacin alguna, simplemente eIpanden la bsqueda desde el nodo inicial, #asta que se llega al nodo final, otros guardan el coste de !iaGar desde el origen #asta ese nodo, o incluso una estimacin de lo prometedor que es un nodo para conducir el camino a su obGeti!o. Da eIpansin de la bsqueda se realiza en forma de rbol. Partiendo del nodo inicial, se eItender la bsqueda a sus nodos !ecinos, de cada uno de estos nodos !ecinos, a sus respecti!os nodos !ecinos, y as> #asta que uno de los nodos a los que se eIpande la bsqueda es el nodo obGeti!o. En esta pgina se desarrollar un algoritmo de bsqueda lo suficientemente general para trabaGar en la mayor>a de los grafos, y que da paso a otros mJtodos de bsqueda ms compleGos. Nota)i+n El algoritmo consta de dos listas, 7bierta, y ?errada. En la lista 7bierta se guardan los nodos que aun no se #an eIpandido para la bsqueda, que en otras palabras, ser>an las #oGas de un rbol. En la lista ?errada, se guardan los nodos que ya se #an procesado y eIpandido, estos nodos se guardan porque la eIpansin de la bsqueda podr>a intentar !ol!er a pasar por uno de esos nodos y de estar almacenados, se tiene constancia de los nodos que ya se #an procesado. 7dems, cada nodo, almacenar informacin acerca de quiJn es su nodo predecesor. Ejem*lo de algoritmo sim*le ,seudo)+digo de bsqueda E-*li)a)i+n del algoritmo Primero se crean dos listas que almacenarn nodos, la lista 7biertos, que contiene los nodos que se tienen que eIpandir, y la lista ?errados que contiene los que ya #an sido eIpandidos. El nodo de origen, llamado % en este caso, se mete en la lista de 7biertos para ser eIpandido. En este punto, se inicia la propagacin de la bsqueda, se crea un bucle que acabar en dos posibles ocasiones: ?uando la lista 7biertos este !ac>a, o cuando se encuentre el nodo destino. El bucle consiste en !arios pasos: Primero se obtiene el primer nodo de la lista 7biertos. El nodo a coger el arbitrario, en otros algoritmos se coger>a un nodo que cumpliera ciertas propiedades, pero no es lo que se busca aqu>. 4i esta lista est !ac>a, quiere decir que no quedan ms candidatos para la eIpansin, y aun as> no se encontr el destino, el algoritmo #a fallado. Por otra parte, si el nodo que cogimos de la lista 7biertos es el destino, el algoritmo #abr acabado, ya que #emos encontrado el destino. El camino entre el origen y el destino es un conGunto de nodos que se obtendrn guardando cada predecesor del nodo destino. En otro caso, se seguir eIpandiendo la lista, obteniendo una lista de sucesores del nodo actual, y guardando en la lista 7biertos, aquellos nodos que no estu!ieran antes en una lista, o con otras palabras, aquellos nodos a los que an no se #ab>a llegado. "e esta forma, el algoritmo acabar encontrando el destino, o recorriendo todo el mapa. Efe)ti.idad Nota/ Da animacin tiene un fallo, ya que el camino deber>a de #aber empezado en direccin norte en !ez de en direccin oeste. Esto #a pasado porque no se meti el cuadro destino en la lista abierta en el momento oportuno 8se meti dos turnos ms tarde<. El algoritmo trata de llegar desde el cuadro !erde 8el origen<, #asta el cuadro roGo 8el destino<. Da zona negra es un nodo por el que no puede pasar. 4iguiendo el algoritmo, el nodo inicial se ira eIpandiendo, pasando a estar el nodo actual en la lista ?errados 8color !ioleta< y metiendo otros nodos en la lista de 7biertos 8color azul<. 7dems cada nodo almacenar quien es su predecesor, que est simbolizado con las muescas en los bordes de los cuadrados. 6na !ez que la eIpansin alcanza el nodo destino, se genera un camino siguiendo la cadena de predecesores. ?omo se aprecia, la eIpansin se realiza sin orientacin alguna, a lo largo y anc#o del espacio. Esto aumentar considerablemente el tiempo de computacin, ya que se procesan muc#os ms nodos que si la eIpansin estu!iera orientada en la direccin del destino. %tro factor a tener en cuenta es que a pesar de #aber alcanzado el nodo destino, el algoritmo no finaliza #asta que lo procesa, o en otras palabras, #asta que pasa a ser el primer nodo de la lista 7biertos. Estas dos taras, estn relacionadas con la prioridad de bsqueda, y en algoritmos ms a!anzados se corrige mediante el uso de estimadores #eur>sticos como la distancia man#attan, o la distancia eluc>dela. 6sando estos estimadores el algoritmo procesar primero los nodos de la lista abierta que tengan una menor distancia al origen, e!itando as> eIpansiones innecesarias.