Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
y
son
dos funciones que
la fuente y objetivo de los nodos de un arco.
y
nodo y arco con una etiqueta.
indican
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.
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.
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.
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
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
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
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.
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
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
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.
IMPLEMENTACIN EN C
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);
}
}
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 .
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.
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:
CONCLUSIN