Sei sulla pagina 1di 24

REPBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR


PARA LA EDUCACIN UNIVERSITARIA
VICEMINISTERIO DE POLTICAS ACADMICAS
DIRECCIN DE DESARROLLO ACADMICO E INSTITUCIONAL
UNIVERSIDAD POLITCNICA TERRITORIAL DEL NORTE
DEL TCHIRA MANUELA SENZ
MATEMTICA

GRAFOS

AUTORES:
NORIEGA CRISTOFHER

15.685.910

RODRGUEZ SHAIRY

22.677.077

T3M2
T4M1

PNF INFORMTICA
LA FRA; OCTUBRE 2013

INTRODUCCIN
El origen de la teora de grafos se remonta al siglo XVIII con el problema
de los puentes de Knigsberg, el cual consista en encontrar un camino que
recorriera los siete puentes del ro Pregel (544212N 203056E) en la ciudad
de Knigsberg, actualmente Kaliningrado, de modo que se recorrieran todos los
puentes pasando una sola vez por cada uno de ellos. El trabajo de Leonhard
Euler sobre el problema titulado Solutio problematis ad geometriam situs
pertinentis (La solucin de un problema relativo a la geometra de la posicin)
en 1736, es considerado el primer resultado de la teora de grafos. Tambin se
considera uno de los primeros resultados topolgicos en geometra (que no
depende de ninguna medida). Este ejemplo ilustra la profunda relacin entre la
teora de grafos y la topologa. Luego, en 1847, Gustav Kirchhoff utiliz la teora
de grafos para el anlisis de redes elctricas publicando sus leyes de los circuitos
para calcular el voltaje y la corriente en los circuitos elctricos, conocidas
como leyes de Kirchhoff, considerado la primera aplicacin de la teora de grafos
a un problema de ingeniera.
En 1852 Francis Guthrie plante el problema de los cuatro colores el cual
afirma que es posible, utilizando solamente cuatro colores, colorear cualquier
mapa de pases de tal forma que dos pases vecinos nunca tengan el mismo color.
Este problema, que no fue resuelto hasta un siglo despus por Kenneth
Appel y Wolfgang Haken en 1976, puede ser considerado como el nacimiento de
la teora de grafos. Al tratar de resolverlo, los matemticos definieron trminos y
conceptos tericos fundamentales de los grafos. En 1857, Arthur Cayley estudi y
resolvi el problema de enumeracin de los ismeros, compuestos qumicos con
idntica composicin (formula) pero diferente estructura molecular. Para ello
represento cada compuesto, en este caso hidrocarburos saturados CnH2n+2,
mediante un grafo rbol donde los vrtices representan tomos y las aristas la
existencia de enlaces qumicos.
El termino grafo, proviene de la expresin graphic notation usada por
primera vez por Edward Frankland y posteriormente adoptada por Alexander
Crum Brown en 1884, y haca referencia a la representacin grfica de los enlaces
entre los tomos de una molcula. El primer libro sobre teoria de grafos fue
escrito por Dnes Knig y publicado en 1936.

TEORA DE GRAFOS
La teora de grafos (tambin llamada teora de las grficas) es un campo de
estudio de las matemticas y las ciencias de la computacin, que estudia las
propiedades de los grafos (tambin llamadas grficas, que no se debe confundir
con las grficas que tienen una acepcin muy amplia) estructuras que constan de
dos partes, el conjunto de vrtices, nodos o puntos; y el conjunto de aristas, lneas
o lados (edges en ingls) que pueden ser orientados o no.
La teora de grafos es una rama de la matemticas discretas y aplicadas, y
es una disciplina que unifica diversas reas: combinatoria, lgebra,
probabilidad, geometra de polgonos, aritmtica y topologa.
Actualmente ha tenido mayor preponderancia en el campo de
la informtica, las ciencias de la computacin y telecomunicaciones.

GRAFO MULTIGRAFO
Un multigrafo o pseudografo es un grafo que est facultado para tener
aristas mltiples; es decir, aristas que relacionan los mismos nodos. De esta forma,
dos nodos pueden estar conectados por ms de una arista. Formalmente, un
multigrafo G es un par G:=(V, E) donde:
V es un conjunto de vrtices o nodos
E es un multiconjunto de pares no ordenados de nodos, llamados aristas o
lneas.
Ejemplo. Los multigrafos podran usarse, por ejemplo, para modelar las
posibles conexiones de vuelo ofrecidas por una aerolnea. Para este caso
tendramos un grafo dirigido, donde cada nodo es una localidad y donde pares de
aristas paralelas conectan estas localidades, segn un vuelo es hacia o desde una
localidad a la otra.
Algunos autores permiten que los multigrafos tengan bucles, es decir, que
una arista conecte a un nodo consigo mismo.1
Un multidigrafo es un grafo dirigido que est facultado para tener aristas
mltiples, es decir, aristas con los mismos nodos iniciales y finales. Formalmente,
un multidigrafo G es un par G:=(V,A) donde:
V es un conjunto de vrtices o nodos

A es un multiconjunto de pares ordenados de nodos, llamados aristas


dirigidas, arcos o flechas.
Un multidigrafo mixto G:=(V,E,A) puede definirse de la misma manera
que un grafo mixto, es decir, con la capacidad de poseer al mismo tiempo aristas
dirigidas (A) y no dirigidas (E).
Los multigrafos y multidigrafos pueden etiquetarse de manera anloga a
un grafo tradicional. Sin embargo, slo existe consenso con respecto a la
terminologa para los multidigrafos.
Un multidigrafo
arcos etiquetados.

etiquetado G es
Formalmente,

tupla

un grafo
es

etiquetado con
una
8-

donde:
V es un conjunto de nodos y A un multiconjunto de arcos.
y

son alfabetos finitos para las etiquetas de nodos y arcos.

y
son
dos funciones que
la fuente y objetivo de los nodos de un arco.

y
nodo y arco con una etiqueta.

indican

son dos funciones que asocian cada

GRAFO DIRIGIDO
Un grafo dirigido o digrafo es un tipo de grafo en el cual el conjunto de las
aristas tiene una direccin definida1 , a diferencia del grafo generalizado, en el
cual la direccin puede estar especificada o no.
Al igual que en el grafo generalizado, el grafo dirigido est definido por un
par de conjuntos

, donde:

,
un
conjunto
llamados vrtices o nodos.

no

vaco

de

objetos

simples

es
un
conjunto
de pares
ordenados de elementos de denominados aristas o arcos, donde por
definicin un arco va del primer nodo (a) al segundo nodo (b) dentro del par.

A veces un digrafo es denominado digrafo simple para distinguirlo del


caso general del multigrafo dirigido, donde los arcos constituyen
un multiconjunto, en lugar de un conjunto. En este caso, puede haber ms de un
arco que una dos vrtices en la misma direccin, distinguindose entre s por su
identidad, por su tipo (por ejemplo un tipo de arco representa relaciones de
amistad mientras que el otro tipo representa mensajes enviados recientemente
entre los nodos), o por un atributo como por ejemplo su importancia opeso.
A menudo tambin se considera que un digrafo simple es aqul en el que
no estn permitidos los bucles. Un bucle es un arco que une un vrtice consigo
mismo.
Un
arco
se
considera
denomina cabeza y x se denomina cola del arco.

dirigido desde x hacia y; y se

y se denomina tambin un sucesor directo de x; correspondientemente, se


denomina a x un predecesor directo de y.
Si existe un camino compuesto de uno o ms arcos que una x con y,
entonces a y se le denomina sucesor de x, al igual que a x se le
denomina predecesor de y.
Al arco

se le denomina arco invertido de

Un grafo dirigido G es llamado simtrico si, para cualquier arco que


pertenece a G, el arco invertido correspondiente tambin pertenece a G. Un grafo
dirigido simtrico y sin bucles es equivalente a un grafo no dirigido; basta con
reemplazar cada par de arcos dirigidos por un solo arco no dirigido.
Una orientacin de un grafo simple no dirigido se obtiene al asignar una
orientacin a cada uno de los arcos existentes. Un grafo dirigido construido de
esta manera se denomina un grafo orientado. Una manera de distinguir entre un
grafo simple dirigido y un grafo orientado es que si x e y son vrtices, un grafo
simple dirigido permite tanto
como
entre sus arcos, mientras que
solo una de las dos posibilidades es admitida en un grafo orientado.2 3
Un digrafo ponderado es un digrafo en el que existen pesos asociados a
cada uno de los arcos, de manera anloga al grafo ponderado. Un digrafo
ponderado en el contexto de la teora de grafos es denominado una red.
La matriz de adyacencia de un digrafo (con bucles y arcos mltiples
permitidos) es una matriz compuesta por valores enteros, donde los ndices de
columnas y filas se corresponden con las identidades de los vertices .
Un elemento de esta matriz,
representa el nmero de arcos existentes
entre los nodos i y j. Un elemento en la diagonal de esta matriz,
representa el

nmero de bucles que existen en el nodo i. La matriz de adyacencia de un digrafo


es una representacin nica del digrafo, exceptuadas posibles permutacions de las
filas y columnas.
Otra representacin comn de un digrafo es la matriz de incidencia.

REPRESENTACION
ADYACENCIA)

DE

GRAFOS.

(INCIDENCIA

MATRIZ DE INCIDENCIA
La matriz de incidencia es una matriz binaria (sus elementos slo pueden
ser unos o ceros), que se utiliza como una forma de representar relaciones
binarias.

CONSTRUCCIN DE LA MATRIZ A PARTIR DE UN GRAFO


1. Las columnas de la matriz representan las aristas del grafo.
2. Las filas representan a los distintos nodos.
3. Por cada nodo unido por una arista, ponemos un uno (1) en el lugar
correspondiente, y llenamos el resto de las ubicaciones con ceros (0).

HIPERGRAFOS
A diferencia de las matrices de incidencias que representan grafos, las
cuales slo pueden poseer dos unos en cada columna, las matrices de incidencia
que representan hipergrafos pueden tener cualquier nmero de unos por columna.

COMPARACIN CON OTRAS REPRESENTACIONES


Existen otras formas de representar relaciones binarias, como por ejemplo
los pares ordenados o los grafos. Cada representacin tiene sus virtudes y
desventajas.
En particular, la matriz de incidencia es muy utilizada en la programacin,
porque su naturaleza binaria y matricial calza perfecto con la de los computadores.
Sin embargo, a una persona sin conocimientos de computacin se le har mucho
ms sencillo comprender una relacin descrita mediante grafos, que mediante
matrices de incidencia.

Otra representacin matricial para las relaciones binarias es la matriz de


adyacencia.

MATRIZ DE ADYACENCIA
La matriz de adyacencia es una matriz cuadrada que se utiliza como una
forma de representar relaciones binarias.
1. Se crea una matriz cero, cuyas columnas y filas representan los nodos del
grafo.
2. Por cada arista que une a dos nodos, se suma 1 al valor que hay
actualmente en la ubicacin correspondiente de la matriz.
Si tal arista es un bucle y el grafo es no dirigido, entonces se suma 2 en
vez de 1.
Finalmente, se obtiene una matriz que representa el nmero de aristas
(relaciones) entre cada par de nodos (elementos).
Existe una matriz de adyacencia nica para cada grafo (sin considerar
las permutaciones de filas o columnas), y viceversa.

EJEMPLOS
La siguiente tabla muestra dos grafos y su respectiva matriz de adyacencia.
Note que en el primer caso, como se trata de un grafo no dirigido, la matriz
obtenida es simtrica:
Grafo no dirigido

Matriz de adyacencia

Grafo dirigido

Matriz de adyacencia

PROPIEDADES DE LA MATRIZ DE ADYACENCIA

Para un grafo no dirigido la matriz de adyacencia es simtrica.


El nmero de caminos Ci,j(k), atravesando k aristas desde el nodo i al
nodo j, viene dado por un elemento de la potencia k-sima de la matriz de
adyacencia:

COMPARACIN CON OTRAS REPRESENTACIONES


Existen otras formas de representar relaciones binarias, como por ejemplo
los pares ordenados o los grafos. Cada representacin tiene sus virtudes y
desventajas.
En particular, la matriz de adyacencia es muy utilizada en la programacin,
porque su naturaleza binaria y matricial calza perfecto con la de los computadores.
Sin embargo, a una persona comn y corriente se le har mucho ms sencillo
comprender una relacin descrita mediante grafos, que mediante matrices de
adyacencia.
Otra representacin matricial para las relaciones binarias es la matriz de
incidencia.

CAMINOS, GRAFOS CONEXOS Y CICLOS


CICLOS Y CAMINOS HAMILTONIANOS
Un ci

clo es una sucesin de aristas adyacentes, donde no se


recorre dos veces la misma arista, y donde se
regresa
al
punto
inicial.
Un ciclo

hamiltoniano tiene adems que recorrer todos los vrtices exactamente una vez
(excepto el vrtice del que parte y al cual llega).
Por ejemplo, en un museo grande (al estilo del Louvre), lo idneo sera recorrer
todas las salas una sola vez, esto es buscar un ciclo hamiltoniano en el grafo que
representa el museo (los vrtices son las salas, y las aristas los corredores o
puertas entre ellas).
Se habla tambin de camino Hamiltoniano si no se impone regresar al
punto de partida, como en un museo con una nica puerta de entrada. Por
ejemplo, un caballo puede recorrer todas las casillas de un tablero de ajedrez sin
pasar dos veces por la misma: es un camino hamiltoniano. Ejemplo de un ciclo
hamiltoniano en el grafo del dodecaedro.
Hoy en da, no se conocen mtodos generales para hallar un ciclo
hamiltoniano en tiempo polinmico, siendo la bsqueda por fuerza bruta de todos
los posibles caminos u otros mtodos excesivamente costosos. Existen, sin
embargo, mtodos para descartar la existencia de ciclos o caminos hamiltonianos
en grafos pequeos.
El problema de determinar la existencia de ciclos hamiltonianos, entra en
el conjunto de los NP-completos.

GRAFOS CONEXOS
Un grafo es conexo si cada par de vrtices est conectado por un camino;
es decir, si para cualquier par de vrtices (a, b), existe al menos un camino posible
desde a hacia b.
Un grafo es doblemente conexo si cada par de vrtices est conectado por
al menos dos caminos disjuntos; es decir, es conexo y no existe un vrtice tal que
al sacarlo el grafo resultante sea disconexo.
Es posible determinar si un grafo es conexo usando
algoritmo Bsqueda en anchura (BFS) o Bsqueda en profundidad (DFS).

un

En trminos matemticos la propiedad de un grafo de ser (fuertemente)


conexo permite establecer con base en l una relacin de equivalencia para sus
vrtices, la cual lleva a una particin de stos en "componentes (fuertemente)
conexas", es decir, porciones del grafo, que son (fuertemente) conexas cuando se
consideran como grafos aislados. Esta propiedad es importante para muchas
demostraciones en teora de grafos.

CICLO EULERIANO
Un ciclo euleriano o circuito euleriano es aquel camino que recorre todas
las aristas de un grafo tan solo una nica vez, siendo condicin necesaria que
regrese al vrtice inicial de salida (ciclo = camino en un grafo donde coinciden
vrtice inicial o de salida y vrtice final o meta). Una definicin ms formal lo
define como: "aquel ciclo que contiene todas las aristas de un grafo solamente una
vez". Se debe tener en cuenta que no importa la repeticin de vrtices mientras no
se repitan aristas.
En la teora de grafos, un camino euleriano es un camino que pasa por
cada arista una y solo una vez. Un ciclo o circuito euleriano es un camino cerrado
que recorre cada arista exactamente una vez. El problema de encontrar dichos
caminos fue discutido por primera vez por Leonhard Euler, en el
famoso problema de los puentes de Knigsberg.
En relacin con los ciclos eulerianos Carl Hierholzer public la primera
caracterizacin completa de los grafos eulerianos en 1873, probando
matemticamente que de hecho los grafos eulerianos son exactamente aquellos
grafos que estn conectados con todos y donde cada uno de los vrtices tienen
grado par.
Un grafo es una representacin, un modelo, compuesto por un nmero
determinado de vrtices (nodos) y un nmero de arcos (aristas) que los relacionan,
cada arista o arco tiene la capacidad de relacionar dos nodos. La palabra ciclo se
emplea en teora de grafos para indicar un camino cerrado en un grafo, es decir, en
que el nodo de inicio y el nodo final son el mismo, como contrapartida un camino
hamiltoniano es un camino que recorre todos los vrtices de un grafo sin pasar dos
veces por el mismo vrtice. Si el camino es cerrado se dice un ciclo hamiltoniano.
Si un grafo admite un ciclo euleriano, se denomina grafo euleriano.

CASOS
Dado
dirigido

un

grafo
, si

conexo

(no

existen

nodos

aislados)

no

tiene exactamente dos vrtices de grado impar,

entonces tiene un camino euleriano no cerrado. En caso de que todos los


vrtices tengan grado par, tiene un ciclo euleriano.

TEOREMA
Dado
no orientado y conexo; si tiene
nodos de grado impar,
entonces puede ser escrito como unin de caminos (simples) distintos sobre
los arcos y valen las siguientes expresiones:
1)

es euleriano;

2)
3)
es decir

con grado

y par.

todos disjuntos (caminos distintos) en los arcos,


con

va de un nodo de grado impar a un nodo de grado impar.


Un grafo admite un camino euleriano cuando tiene exactamente dos nodos de
grado impar (conexos a los caminos).

CAMINO HAMOLTONIANO
Un camino hamiltoniano, en el campo matemtico de la teora de grafos,
es un camino de un grafo, una sucesin de aristas adyacentes, que visita todos
los vrtices del grafo una sola vez. Si adems el ltimo vrtice visitado es
adyacente al primero, el camino es un ciclo hamiltoniano.
El problema de encontrar un ciclo (o camino) hamiltoniano en un grafo
arbitrario se sabe que es NP-completo.
Los caminos y ciclos hamiltonianos se llaman as en honor de William
Rowan Hamilton, inventor de un juego que consista en encontrar un ciclo
hamiltoniano en las aristas de un grafo de un dodecaedro. Hamilton resolvi este
problema usando cuaterniones, aunque su solucin no era generalizable a todos
los grafos.
Un camino hamiltoniano es un camino que pasa por cada vrtice
exactamente una vez. Un grafo que contiene un camino hamiltoniano se denomina

un ciclo hamiltoniano si es un ciclo que pasa por cada vrtice exactamente una
vez (excepto el vrtice del que parte y al cual llega). Un grafo que contiene un
ciclo hamiltoniano se dice grafo hamiltoniano.
Estos conceptos se pueden extender para los grafos dirigidos.

EJEMPLOS

Todos los grafos ciclos son hamiltonianos.


Todos los slidos platnicos, (tetraedro, el cubo, el octaedro, el
dodecaedro y el icosaedro.) considerados como grafos, son hamiltonianos .

NOTAS
Cualquier ciclo hamiltoniano puede ser convertido en un camino
hamiltoniano si se elimina cualquiera de sus aristas, pero un camino hamiltoniano
puede ser extendido en ciclo slo si los vrtices de los extremos son adyacentes.

TEOREMA DE BONDY-CHVTAL
La mejor caracterizacin de los grafos hamiltonianos fue dada en 1972 por
el teorema de Bondy-Chvtal que generalizaba los resultados anteriormente
encontrados por G. A. Dirac. Bsicamente dice que un grafo es hamiltoniano
si existen suficientes aristas. Primero debemos definir lo que es la cerradura de un
grafo.
Dado un grafo G con n vrtices, la cerradura (cl(G)) es construida de
manera nica a partir de G agregando toda arista u-v si el par no adyacente de
vrtices u y v cumple que grado(v) + grado(u) n
Un grafo es hamiltoniano si y slo si su grafo cerradura es hamiltoniano.
Bondy-Chvtal (1972)
Como todos los grafos completos son hamiltonianos, todos los grafos cuya
cerradura sea completa son hamiltonianos. Este resultado se basa en los teoremas
de Dirac y Ore.
Un grafo con n vrtices (n > 3) es hamiltoniano si cada vrtice tiene grado mayor o

igual a n/2.
Dirac (1952)
Un grafo con n vrtices (n > 3) es hamiltoniano si la suma de los grados de 2
vrtices no adyacentes es mayor o igual que n.
Ore (1960)
Sin embargo, existe un resultado anterior a todos estos teoremas.
Un grafo con n vrtices (n 2) es hamiltoniano si la suma de los grados de 2
vrtices es mayor o igual que n-1.
L.Redei (1934)
Como puede verse, este teorema pide ms hiptesis que los anteriores ya que la
propiedad de los grados debe cumplirse para todo vrtice en el grafo.

DISTANCIA DE UN GRAFO
En teora de grafos se denomina distancia entre dos vrtices de un grafo al
nmero de vrtices mnimo que debe recorrerse para unirlos. La distancia entre
dos nodos de un grafo es la longitud del camino ms corto (a veces se
denomina geodsico1 ). Si no hubiera conexin alguna entre dos vrtices se dice
que la distancia es infinita. Las distancias de todos los vrtices de un grafo se
computan en lo que se denomina matriz de distancias. el concepto se empela en
las mediadas de centralidad de redes.

APLICACIONES
Existen numerosas aplicaciones en la teora de grafos en las que interviene
el concepto de distancia, por ejemplo en el diseo de grandes interiores, tales
como los aeropuertos donde el concepto distancia supone el conocimiento del
tiempo necesario para llegar a un punto cualesquiera del mismo. Es uno de los
conceptos clave en las redes de mundo pequeo.

ARBOLES

En ciencias de la computacin, un rbol binario es una estructura de


datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No
pueden tener ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene
como referencia a null, es decir que no almacena ningn dato, entonces este es
llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno.
Usos comunes de los rboles binarios son los rboles binarios de bsqueda,
los montculos binarios y Codificacin de Huffman.
En teora de grafos, se usa la siguiente definicin: Un rbol binario es un
grafo conexo, acclico y no dirigido tal que el grado de cada vrtice no es mayor a
3. De esta forma slo existe un camino entre un par de nodos.
Un rbol binario con enraizado es como un grafo que tiene uno de sus
vrtices, llamado raz, de grado no mayor a 2. Con la raz escogida, cada vrtice
tendr un nico padre, y nunca ms de dos hijos. Si rehusamos el requerimiento
de la conectividad, permitiendo mltiples componentes conectados en el grafo,
llamaremos a esta ltima estructura un bosque.

TIPOS DE RBOLES BINARIOS

Un rbol binario es un rbol con raz en el que cada nodo tiene como
mximo dos hijos.
Un rbol binario lleno es un rbol en el que cada nodo tiene cero o dos
hijos.

Un rbol binario perfecto es un rbol binario lleno en el que todas


las hojas (vrtices con cero hijos) estn a la misma profundidad (distancia
desde la raz, tambin llamada altura).

A veces un rbol binario perfecto es denominado rbol binario completo.


Otros definen un rbol binario completo como un rbol binario lleno en el que
todas las hojas estn a profundidad n o n-1, para alguna n.

Un rbol binario es un rbol en el que ningn nodo puede tener ms de dos


subrboles. En un rbol binario cada nodo puede tener cero, uno o dos hijos
(subrboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de
la derecha como hijo derecho.

IMPLEMENTACIN EN C

Un rbol binario puede declararse de varias maneras. Algunas de ellas son:


Estructura con manejo de memoria dinmica, siendo el puntero que apunta
al rbol de tipo tArbol:
typedef struct nodo {
int clave;
struct nodo *izdo, *dcho;
}Nodo;
Estructura con arreglo indexado:
typedef struct tArbol
{
int clave;
tArbol hIzquierdo, hDerecho;
} tArbol;
tArbol rbol[NUMERO_DE_NODOS];
En el caso de un rbol binario casi-completo (o un rbol completo), puede
utilizarse un sencillo arreglo de enteros con tantas posiciones como nodos deba
tener el rbol. La informacin de la ubicacin del nodo en el rbol es implcita a
cada posicin del arreglo. As, si un nodo est en la posicin i, sus hijos se
encuentran en las posiciones 2i+1 y 2i+2, mientras que su padre (si tiene), se
encuentra en la posicin truncamiento((i-1)/2) (suponiendo que la raz est en la
posicin cero). Este mtodo se beneficia de un almacenamiento ms compacto y
una mejor localidad de referencia, particularmente durante un recorrido en
preorden. La estructura para este caso sera por tanto:
int rbol[NUMERO_DE_NODOS];

RECORRIDOS SOBRE RBOLES BINARIOS


Recorridos en profundidad
El mtodo de este recorrido es tratar de encontrar de la cabecera a la raz
en nodo de unidad binaria. Ahora pasamos a ver la implementacin de los
distintos recorridos:

Recorrido en preorden
En este tipo de recorrido se realiza cierta accin (quizs simplemente
imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y
posteriormente se trata el subrbol izquierdo y cuando se haya concluido, el
subrbol derecho. Otra forma para entender el recorrido con este metodo seria
seguir el orden: nodo raz, nodo izquierda, nodo derecha.
En el rbol de la figura el recorrido en preorden sera: 2, 7, 2, 6, 5, 11, 5, 9
y 4.
void preorden(tArbol *a)
{
if (a != NULL) {
tratar(a);
//Realiza una operacin en nodo
preorden(a->hIzquierdo);
preorden(a->hDerecho);
}
}
Implementacin en pseudocdigo de forma iterativa:
push(s,NULL);
//insertamos en una pila (stack) el valor NULL, para
asegurarnos de que est vaca
push(s,raz);
//insertamos el nodo raz
MIENTRAS (s <> NULL) HACER
p = pop(s);
//sacamos un elemento de la pila
tratar(p);
//realizamos operaciones sobre el nodo p
SI (D(p) <> NULL)
//preguntamos si p tiene rbol derecho
ENTONCES push(s,D(p));
FIN-SI
SI (I(p) <> NULL)
//preguntamos si p tiene rbol izquierdo
ENTONCES push(s,I(p));
FIN-SI
FIN-MIENTRAS

Recorrido en postorden
En este caso se trata primero el subrbol izquierdo, despus el derecho y
por ltimo el nodo actual. Otra forma para entender el recorrido con este metodo

seria seguir el orden: nodo izquierda, nodo derecha, nodo raz. En el rbol de la
figura el recorrido en postorden sera: 2, 5, 11, 6, 7, 4, 9, 5 y 2.
void postorden(tArbol *a)
{
if (a != NULL) {
postorden(a->hIzquiedo);
postorden(a->hDerecho);
tratar(a);
//Realiza una operacin en nodo
}
}

Recorrido en enorden
En este caso se trata primero el subrbol izquierdo, despus el nodo actual
y por ltimo el subrbol derecho. En un ABB este recorrido dara los valores de
clave ordenados de menor a mayor. Otra forma para entender el recorrido con este
metodo seria seguir el orden: nodo izquierda,nodo raz,nodo derecha. En el rbol
de la figura el recorrido en enorden sera: 2, 7, 5, 6, 11, 2, 5, 4, 9.
Esquema de implementacin:
void enorden(tArbol *a)
{
if (a != NULL) {
enorden(a->hIzquierdo);
tratar(a);
enorden(a->hDerecho);
}
}

//Realiza una operacin en nodo

Recorridos en amplitud (o por niveles)


En este caso el recorrido se realiza en orden por los distintos niveles del
rbol. As, se comenzara tratando el nivel 1, que slo contiene el nodo raz,
seguidamente el nivel 2, el 3 y as sucesivamente. En el rbol de la figura el
recorrido en amplitud sera: 2, 7, 5, 2, 6, 9, 5, 11 y 4.

Al contrario que en los mtodos de recorrido en profundidad, el recorrido


por niveles no es de naturaleza recursiva. Por ello, se debe utilizar una cola para
recordar los subrboles izquierdos y derecho de cada nodo.
El esquema algoritmo para implementar un recorrido por niveles es
exactamente el mismo que el utilizado en la versin iterativa del recorrido en
preorden pero cambiando la estructura de datos que almacena los nodos por una
cola.
Implementacin en C:
void arbol_recorrido_anch (tipo_Arbol* A) {
tipo_Cola cola_nodos; // esta cola esta implementada previamente, almacena
punteros (posiciones de nodos de rbol)
tipo_Pos nodo_actual; // este es un puntero llevara el recorrido
if (vacio(A)) // si el rbol esta vacio, salimos
return;
cola_inicializa(&cola_nodos); // obvio, y necesario
cola_enqueue(A, &cola_nodos); // se encola la raz
while (!vacia(&cola_nodos)) { // mientras la cola no se vacie se realizara el
recorrido
nodo_actual = cola_dequeue(&cola_nodos) // de la cola saldran los nodos
ordenados por nivel
printf("%c,", nodo_actual->info); // se "procesa" el nodo donde va el recorrido,
en este caso se imprime
if (nodo_actual->izq != null) // si existe, ponemos el hijo izquierdo en la cola
cola_enqueue(nodo_actual->izq, &cola_nodos);
if (nodo_actual->der != null) // si existe, ponemos el hijo derecho en la cola
cola_enqueue(nodo_actual->der, &cola_nodos);
} // al vaciarse la cola se han visitado todos los nodos del rbol
}

CREACIN DE RBOLES A PARTIR DE LOS RECORRIDOS

Para poder dibujar un rbol binario en base a los recorridos, se necesitan


por lo menos dos de los recorridos de profundidad (en caso de que no se repitan
los nodos, ya que si se repiten los nodos es recomendable tener los tres
recorridos), ya sean inorden y preorden o inorden y postorden, la nica diferencia
entre usar el recorrido en preorden o postorden es que en preorden se usa el primer
nodo para encontrar la raz y en postorden se usa el ltimo nodo.
El mtodo consiste en ir dividiendo los recorridos del rbol en pequeos
subrboles, se va encontrando la raz con el preorden o postorden y se divide en
dos subrboles basndonos en el recorrido en inorden. En el caso de que los nodos
se repitan es conveniente tener los 3 recorridos para identificar ms fcilmente
cul de los nodos es la raz actual.
Para el rbol de la figura corresponden los siguientes recorridos:
Preorden
Inorden
Postorden
Para encontrar la raz es necesario tener el recorrido preorden o postorden,
ya que la raz es el primer nodo o el ltimo nodo respectivamente. En este
caso la raz es el .
Una vez encontrada la raz, es necesario saber su posicin en el recorrido
inorden, del paso anterior se tiene el nodo , pero existen 2 nodos con ese valor, el
primero y el de en medio. Si el primer dos es la raz, entonces no existe ninguna
rama del lado izquierdo, en ese caso la siguiente raz de acuerdo con el recorrido
en postorden es y de acuerdo con preorden es , lo cual es una incongruencia,
de esa forma sabemos que el otro es la raz.
Entonces marcamos la raz en el recorrido inorden:
Preorden
Inorden
Postorden
El recorrido inorden, es un recorrido de los rboles binarios en los que se empieza
desde el nodo que se encuentra ms a la izquierda de todos, sigue con la raz y
termina con los nodos del lado derecho, entonces, como en el recorrido inorden ya

encontramos la raz, la parte izquierda representa el subrbol izquierdo y la parte


derecha representa el subrbol derecho.
En los recorridos tenemos 5 nodos a la izquierda del y a la derecha se
encuentran 3 valores, entonces podemos crear los recorridos para el subrbol
izquierdo y el subrbol derecho

Subrbol derecho

Subrbol derecho

Preorden

Preorden

Inorden

Inorden

Postorden

Postorden

Se sigue repitiendo el proceso hasta encontrar todos los nodos del rbol, en este
punto la siguiente raz izquierda es el y la raz derecha el .
Cuando se llegan a nodos en los que nicamente cuentan con una rama es
necesario saber que rama es la derecha y cul es la izquierda (para algunos rboles
con balanceo como los AVL), por ejemplo siguiendo la rama de la derecha
partiendo de que el es la raz el recorrido inorden es
entonces el
siguiente nodo va a la derecha, no hay nodo a la izquierda, despus, los recorridos
para el subrbol son:
Preorden
Inorden
Postorden
Finalmente el siguiente nodo se coloca a la izquierda del .

Este mtodo es 100% efectivo cuando no existen nodos repetidos, cuando


los nodos se repiten la complejidad aumenta para poder descubrir cul es el nodo
raz en el recorrido inorden.

MTODOS PARA ALMACENAR RBOLES BINARIOS


Los rboles binarios pueden ser construidos a partir de lenguajes de
programacin de varias formas. En un lenguaje con registros y referencias, los
rboles binarios son construidos tpicamente con una estructura de nodos y
punteros en la cual se almacenan datos, cada uno de estos nodos tiene una
referencia o puntero a un nodo izquierdo y a un nodo derecho denominados hijos.
En ocasiones, tambin contiene un puntero a un nico nodo. Si un nodo tiene
menos de dos hijos, algunos de los punteros de los hijos pueden ser definidos
como nulos para indicar que no dispone de dicho nodo. En la figura adjunta se
puede observar la estructura de dicha implementacin.

Los rboles binarios tambin pueden ser almacenados como una estructura
de datos implcita en vectores, y si el rbol es un rbol binario completo, este
mtodo no desaprovecha el espacio en memoria. Tomaremos como notacin la
siguiente: si un nodo tiene un ndice i, sus hijos se encuentran en ndices 2i + 1 y
2i + 2, mientras que sus padres (si los tiene) se encuentra en el ndice
(partiendo de que la raz tenga ndice cero). Este mtodo tiene como ventajas el
tener almacenados los datos de forma ms compacta y por tener una forma ms
rpida y eficiente de localizar los datos en particular durante un preoden
transversal. Sin embargo, desperdicia mucho espacio en memoria.

CODIFICACIN DE RBOLES N-ARIOS COMO RBOLES


BINARIOS
Hay un mapeo uno a uno entre los rboles generales y rboles binarios, el
cual en particular es usado en Lisp para representar rboles generales como
rboles binarios. Cada nodo N ordenado en el rbol corresponde a un nodo N' en
el rbol binario; el hijo de la izquierda de N es el nodo correspondiente al primer
hijo de N, y el hijo derecho de N' es el nodo correspondiente al siguiente hermano
de N, es decir, el prximo nodo en orden entre los hijos de los padres de N.
Esta representacin como rbol binario de un rbol general, se conoce a veces
como un rbol binario primer hijo hermano, o un rbol doblemente encadenado.
Una manera de pensar acerca de esto es que los hijos de cada nodo estn en una
lista enlazada, encadenados junto con el campo derecho, y el nodo slo tiene un
puntero al comienzo o la cabeza de esta lista, a travs de su campo izquierdo.
Por ejemplo, en el rbol de la izquierda, la A tiene 6 hijos (B, C, D, E, F, G).
Puede ser convertido en el rbol binario de la derecha.
Un ejemplo de transformar el rbol n-ario a un rbol binario cmo pasar de
rboles n-arios a rboles FLOFO.

El rbol binario puede ser pensado como el rbol original inclinado hacia los
lados, con los bordes negros izquierdos representando el primer hijo y los azules
representado los siguientes hermanos.
Las hojas del rbol de la izquierda seran escritas en Lisp como:

(((N O) I J) C D ((P) (Q)) F (M))


Que se ejecutar en la memoria como el rbol binario de la derecha, sin ningn
tipo de letras en aquellos nodos que tienen un hijo izquierdo.

CONCLUSIN

La teora de grafos es un instrumento utilizado en la aplicacin de estos


mtodos, permitindonos evaluar las relaciones entre los puntos del espacio
conectados por la red, buscando medir su influencia sobre la conformacin del
sistema territorial. El anlisis de grafos permite medir propiedades territoriales
como la conexin de la red, la conectividad e indicadores de homogeneidad e
isotropa. Los indicadores ms utilizados son diferentes expresiones de la
accesibilidad.
Algunas de las aportaciones ms relevantes de la teora de grafos como
aplicacin a la planificacin del transporte consisten en encontrar una relacin
entre la falta de conexin al conjunto de la red y las posibles causas de la
marginacin de una parte del territorio; comparar la forma y estructura de la red
con la disposicin de los recursos y asentamientos, y estudiar el impacto de una
actuacin sobre la base de las repercusiones sobre la accesibilidad relativa al resto
de lugares conectados a la red. Todo ello gracias a que el anlisis topolgico de la
red se efecta a partir de la elaboracin de un grafo representativo de la red.
La accesibilidad aparece como un elemento inherente a la organizacin
fsica del espacio y de los sistemas de movimientos y resulta un parmetro
determinante, y en ocasiones decisivo, para la localizacin de determinadas
actividades. Es por esto, por lo que se han venido desarrollando las diversas
medidas de la accesibilidad como indicadores de anlisis de las redes de
transporte y sus efectos estructurales sobre el territorio en que se enmarcan.
Los indicadores de accesibilidad han
planeamiento de redes de transporte y en
interaccin potencial entre puntos a partir de
permiten comprobar cmo se ha deformado

sido ampliamente utilizados en el


el urbanismo, porque miden la
las caractersticas de la red y nos
la geografa de un territorio por

intervenciones en sus redes de transportes. El anlisis de grafos nos ayudar a


simular las intensidades y ritmos de esas deformaciones y las posibles alternativas
a realizar para lograr su reequilibrio.

Potrebbero piacerti anche