Está en la página 1de 9

Informe grafos y arboles

Presentado por:
Youlvis Jimenez Peñate

Al docente:
Irene Gómez Franco
En la asignatura:
Sistemas Discretos

Universidad EIA
Envigado
2019
¿Qué es un grafo?
Es una figura formada por aristas y vértices. Estos aparecen para resolver problemas de la
vida cotidiana, como es el caso de representar una red eléctrica de una ciudad y ver cada una de
las conexiones de manera clara, para hacer posibles modificaciones y mejorar la distribución de
la energía a la ciudad. Son muy usados para resolver problemas tales como, problemas de
construcción, problemas de optimización, problemas de enumeración, entre otros. (Valdivia,
s.f.)
Para hablar de los grafos hamiltoniano y eulerianos es debido definir que son los grafos conexos,
son aquellos donde cada par de vértice esta conectado, es decir, al tomar un par de vértice, no
tiene por que ser vértices adyacentes, existe un camino que los une. Si no existe un camino que
los une se dice que no es un grafo conexo.

(Mostaccio & Pérez, s.f.)


Se puede ver que la segunda imagen no es conexo ya que hay pares de vértices que no presenta
un camino que los une.

Grafos eulerianos
Se le llama grafo euleriano a todo aquel grafo que admita un circuito euleriano, es decir,
que comience y termine en el mismo vértice pasando una vez por cada arista y al menos una vez
por cada vértice. Este tipo de grafo fue la solución para el problema de los 7 puentes de la ciudad
de Königsberg, que consistía en pasar los 7 puentes sin cruzar por uno más de una vez, tomando
los puentes como aristas y el terreno que los separa como los vértices, Leonard Euler llegó a la
conclusión que no existe una solución para este problema.
Para determinar si existe un circuito euleriano en un grafo es suficiente con ver si el teorema que
dice “Un grafo es euleriano si, y solo si, es conexo y todos sus vértices tienen vértice par” se
cumple en este grafo, es decir, si cumple con la definición de grafos conexo y si el grado de cada
vértice es par, que se saca contando el numero de aristas que inciden al vértice. (Soto, 2015)
Representación grafo de los 7 puentes
de la ciudad de Königsberg (SUMA, s.f.)

Como se puede ver si aplicamos el teorema anterior nos damos cuenta que el grafo anterior no es
un grafo euleriano ya que no tiene todos sus vértices de grado par.

Código para saber si un grafo es euleriano

public static boolean circuitoEuleriano(int [ ][ ] m){

boolean euleriano=true; int i; int j; int aux;

while (i<m.length && euleriano){

aux=0; j=0;

while(j< a.length){

aux+=m[i][j]; j++; }

if( aux % 2 !=0)

euleriano=false; i++; }

return euleriano; }
Explicación del código

Este programa recibe como parámetro una matriz, la cual es la matriz del grafo,
específicamente la de adyacencia. Lo que hace el programa es ir recorriendo los renglones o filas
de la matriz e ir sumando cada valor en esa posición y luego comprueba si ese valor es impar, si
esto es falso quiere decir que ese vértice tiene un grado par ya que si fuera impar ya no se cumple
el teorema de grafos eulerianos el cual se habló en la definición de grafo euleriano luego se pasa
al otro renglón reiniciando la variable que va acumular el valor de cada elemento de ese renglón
y se vuelve hacer el mismo procedimiento y así sucesivamente con todo los renglones con
alguno que de verdadero, es decir que sea de grado impar el programa se sale y arroja falso, lo
que quiere decir que no es un grafo euleriano.

Grafos Hamiltoniano

Este grafo tiene su origen en el juego de Hamilton, que consiste en hallar un recorrido
cerrado sin repetir vértices, a través de las aristas de un dodecaedro regular. Un grafo es
hamiltoniano si contiene un circuito hamiltoniano, es decir, realiza una trayectoria que empieza y
termina en el mismo vértice, este no presenta aristas repetidas, lo que da a entender que no es
necesario pasar por todas las aristas, y pasa por cada vértice solo una vez, al contrario de los
grafos eulerianos que este podía pasar más de una vez por un vértice. (Ramon Masia, Jaume
Pujol, Rifa, & Villanueva, s.f.)
Para determinar si existe un circuito hamiltoniano en un grafo, a diferencia de los euleriano este
no presenta un teorema o algo que los caracterice para darse cuenta de manera rápida si se trata
de un grafo hamiltoniano, aunque este también tiene que ser conexo y además sus vértices tienen
que ser mayor o igual a 3 pero esto no significa que si cumple estas condiciones entonces es un
grafo euleriano.(M, 2007)
Ejemplo de grafo hamiltoniano

(Ramon Masia, Jaume Pujol, Rifa, & Villanueva, s.f.)


Arboles binario
Para hablar de este tipo de arboles es necesario definir primero que es un árbol, Un árbol
es una estructura de datos compuestas por nodo, raíz y aristas. Estos almacenan información de
forma jerárquica y no en forma lineal como son las pilas, colas, etc.
Existen varias terminologías en este tema de arboles por eso es importante definir cada una de
ellas para entender mejor este tema entre ellas tenemos:
Nodos: Se le llama Nodo a cada elemento que contiene un Árbol.
Nodo Raíz: Se refiere al primer nodo de un Árbol, Solo un nodo del Árbol puede ser la Raíz.
Nodo Padre: Se utiliza este término para llamar a todos aquellos nodos que tiene al menos un hijo.
Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre.
Nodo Hermano: Los nodos hermanos son aquellos nodos que comparte a un mismo padre en
común dentro de la estructura.
Nodo Hoja: Son todos aquellos nodos que no tienen hijos, los cuales siempre se encuentran en los
extremos de la estructura.
Nodo Rama: Estos son todos aquellos nodos que no son la raíz y que además tiene al menos un
hijo. (Blancarte, 2014)

Representación gráfica de un árbol y sus componentes

(Blancarte, 2014)
Y aunque los arboles tienen otras características importantes, pero no es necesarias para entender
que son arboles binarios. Estos árboles se caracterizan por tener máximo 2 hijos en cada nodo

(Blancarte, 2014)

Existen otras clasificaciones de árboles binarios como lo son:


Arbol binario lleno: es en que todos los nodos tienen cero o dos hijos con excepción de la raíz.
(Blancarte, 2014)

Árbol binario de búsqueda


Un árbol binario de búsqueda, como su nombre lo indica es un árbol binario donde se
cumple que, para cualquier nodo, el valor de la clave del subárbol de la izquierda es menor que el
valor de la clave del nodo y que el valor de la clave del subárbol de la derecha es mayor.

(RSI, s.f.)
Como lo indica la figura a la izquierda del nodo se ubica el menor y a la derecha el mayor.

¿Como se busca un elemento?

Partiendo siempre del nodo raíz, el modo de buscar un elemento se define de forma recursiva.

 Si el árbol está vacío, se termina la búsqueda: el elemento no está en el árbol.


 Si el valor del nodo raíz es igual que el del elemento que se busca, se termina la búsqueda con
éxito.
 Si el valor del nodo raíz es mayor que el elemento que se busca, se continua la búsqueda en el
árbol izquierdo.
 Si el valor del nodo raíz es menor que el elemento que se busca, se continua la búsqueda en el
árbol derecho.(EcuRed, s.f.)

La búsqueda en un árbol binario de búsqueda consiste en acceder a la raíz del árbol, si el elemento
a localizar coincide con éste la búsqueda ha concluido con éxito, si el elemento es menor se busca
en el subárbol izquierdo y si es mayor en el derecho. Si se alcanza un nodo hoja y el elemento no
ha sido encontrado es que no existe en el árbol.

Código hecho en Python.

def buscar(raiz, clave):


# busca el valor clave dentro del arbol
if raiz == None:
print 'No se encuentra'
else:
if clave == raiz.dato:
print 'El valor ',clave,' se encuentra en el ABB'
elif clave < raiz.dato:
# lado izquierdo
return buscar(raiz.izq, clave)
else:
# lado derecho
return buscar(raiz.der, clave)

(Wikipedia, s.f.)
Explicación código

Como se puede apreciar el código es la búsqueda de un elemento, el cual se le pasa por


parámetro (clave) también se le pasa la raíz del árbol. El código está implementado de forma
recursiva en donde las condiciones base o de parada es si el elemento no se encontró y si ya se
encontró. Una vez analizados las condiciones de parada revisa si el elemento esta a la izquierda o
a la derecha, es decir si es menor o mayor al valor de la raíz dependiendo el caso se hace la llamada
recursiva esta vez pasándole como parámetro raíz al subárbol de la izquierda o derecha y así
sucesivamente hasta encontrar el elemento que sea igual a la clave o si no lo encuentra se sale.

Conclusiones

 Los grafos son importantes a la hora de hacer una optimización o mejorar un sistema que
se deje modelar como uno, como por ejemplo varias ciudades la cuales estén conectadas
por un camino, o como la distribución de energía en una ciudad, entre otras cosas.

 Los arboles son de gran importancia a la hora de organizar datos ya que la búsqueda de
un elemento que este árbol se hace de manera más rápida y eficaz.
Referencias
Blancarte, O. (22 de 8 de 2014). Oscar Blancarte software architect. Obtenido de
https://www.oscarblancarteblog.com/2014/08/22/estructura-de-datos-arboles/

EcuRed. (s.f.). Obtenido de https://www.ecured.cu/%C3%81rbol_binario_de_b%C3%BAsqueda

M, C. C. (5 de 3 de 2007). Teoría de Grafos. Obtenido de


http://teoriadegrafos.blogspot.com/2007/03/grafos-eulerianos-y-hamiltonianos.html

Mostaccio, C., & Pérez, G. (s.f.). Obtenido de


http://163.10.22.82/OAS/estructuras_de_grafos/grafo_conexo_fuertemente_y_dbilmente.html

Ramon Masia, Jaume Pujol, Rifa, J., & Villanueva, M. (s.f.). Grafos eulerianos y grafos hamiltonianos.
Obtenido de
http://uoc.gitlab.io/2010/matematicas/modulo%208.%20grafos%20eulerianos%20y%20hamilta
nianos.pdf

RSI. (s.f.). Obtenido de


http://interactivepython.org/runestone/static/pythoned/Trees/ImplementacionArbolBusqueda.
html

Soto, J. (30 de 4 de 2015). YOUTUBE. Obtenido de https://www.youtube.com/watch?v=zbOUAsoUoPg

SUMA, R. (s.f.). Obtenido de http://e-


ducativa.catedu.es/44700165/aula/archivos/repositorio//4500/4724/html/32_los_puentes_de_
knigsberg.html

Valdivia, J. F. (s.f.). Obtenido de http://decsai.ugr.es/~jfv/ed1/tedi/cdrom/docs/grafos.htm

Wikipedia. (s.f.). Obtenido de https://es.wikipedia.org/wiki/%C3%81rbol_binario_de_b%C3%BAsqueda

También podría gustarte