Sei sulla pagina 1di 15

Introduccin

Grafos Historia 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, 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 trmino 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 Aplicaciones Gracias a la teora de grafos se pueden resolver diversos problemas como por ejemplo la sntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para diferentes reas por ejemplo, Dibujo computacional, en toda las reas de Ingeniera.

Los grafos se utilizan tambin para modelar trayectos como el de una lnea de autobs a travs de las calles de una ciudad, en el que podemos obtener caminos ptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd. Para la administracin de proyectos, utilizamos tcnicas como PERT en las que se modelan los mismos utilizando grafos y optimizando los tiempos para concretar los mismos. La teora de grafos tambin ha servido de inspiracin para las ciencias sociales, en especial para desarrollar un concepto no metafrico de red social que sustituye los nodos por los actores sociales y verifica la posicin, centralidad e importancia de cada actor dentro de la red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la estructura social puede representarse grficamente. Por ejemplo, una red social puede representar la estructura de poder dentro de una sociedad al identificar los vnculos (aristas), su direccin e intensidad y da idea de la manera en que el poder se transmite y a quines. Los grafos son importantes en el estudio de la biologa y hbitat. El vrtice representa un hbitat y las aristas (o "edges" en ingls) representa los senderos de los animales o las migraciones. Con esta informacin, los cientficos pueden entender cmo esto puede cambiar o afectar a las especies en su hbitat. Clases de grafos Un multigrafo es un grafo con varias aristas entre dos vrtices. Un pseudografo es un grafo en el que hay aristas (lazos) que tienen el mismo extremo. Un digrafo es un grafo donde a cada arista se le indica un sentido mediante una flecha. Los multidigrafos o pseudomultidigrafos son combinaciones de los anteriores.

Grficamente estas tres estructuras de vrtices y arcos se pueden representar de la siguiente manera:

Algunos de los principales tipos de grafos son los que se muestran a continuacin: Aquel con el mismo grado en todos los vrtices. Si ese grado es k lo llamaremos k-regular. Por ejemplo, el primero de los siguientes grafos es 3-regular, el segundo es 2-regular y el tercero no es regular

Es aquel con cuyos vrtices pueden formarse dos conjuntos disjuntos de modo que no haya adyacencias entre vrtices pertenecientes al mismo conjunto Ejemplo.- de los dos grafos siguientes el primero es bipartito y el segundo no lo es Aquel con una arista entre cada par de vrtices. Un grafo completo con n vrtices se denota Kn. A continuacin pueden verse los dibujos de K3, K4, K5 y K6

de vrtices. A continuacin ponemos los dibujos de K1,2, K3,3, y K2,5 Se dice que un grafo es nulo cuando los vrtices que lo componen no estn conectados, esto es, que son vrtices aislados.

Dos grafos son isomorfos cuando existe una correspondencia biunvoca (uno a uno), entre sus vrtices de tal forma que dos de estos quedan unidos por una arista en comn.

Son los Grafos formados por los vrtices y aristas de los cinco slidos regulares (Slidos Platnicos), a saber, el tetraedro, el cubo, el octaedro, el dodecaedro y el icosaedro.

GRAFOS EULERIANOS. Para definir un camino euleriano es importante definir un camino euleriano primero. Un camino euleriano se define de la manera ms sencilla como un camino que contiene todos los arcos del grafo. Teniendo esto definido podemos hablar de los grafos eulerianos describindolos simplemente como aquel grafo que contiene un camino euleriano. Como ejemplos tenemos las siguientes imgenes: El primer grafo de ellos no contiene caminos eulerianos mientras el segundo contiene al menos uno. GRAFOS CONEXOS. Un grafo se puede definir como conexo si cualquier vrtice V pertenece al conjunto de vrtices y es alcanzable por algn otro. Otra definicin que dejara esto ms claro sera: un grafo conexo es un grafo no dirigido de modo que para cualquier par de nodos existe al menos un camino que los une.

RBOLES. Un rbol se define como un tipo de grafo que no contiene ciclos, es decir es un grafo tambin acclico, pero a su vez es conexo. Tal es el caso de los siguientes dos grafos en donde se puede notar que ninguno de los dos contiene repeticiones (ciclos). BOSQUES DE RBOLES. Los bosques de rboles son un caso similar a los rboles, son acclicos, pero no son conexos. Como ejemplo tenemos la siguiente figura.

RECORRIDO DE UN GRAFO. Recorrer un grafo significa tratar de alcanzar todos los nodos que estn relacionados con uno que llamaremos nodo de salida. Existen bsicamente dos tcnicas para recorrer un grafo: el

recorrido en anchura; y el recorrido en profundidad. Recorrido en anchura: El recorrido en anchura supone recorrer el grafo, a partir de un nodo

dado, en niveles, es decir, primero los que estn a una distancia de un arco del nodo de salida, despus los que estn a dos arcos de distancia, y as sucesivamente hasta alcanzar todos los nodos a los que se pudiese llegar desde el nodo salida. Recorrido en profundidad: el recorrido en profundidad trata de buscar los caminos que parten desde el nodo de salida hasta que ya no es posible avanzar ms. Cuando ya no puede avanzarse ms sobre el camino elegido, se vuelve atrs en busca de caminos alternativos, que no se estudiaron previamente. REPRESENTACIN DE GRAFOS EN PROGRAMAS. Hay tres maneras de representar un grafo en un programa: mediante matrices, mediante listas y mediante matrices dispersas. Representacin mediante matrices: La forma ms fcil de guardar la informacin de los nodos es mediante la utilizacin de un vector que indexe los nodos, de manera que los arcos entre los

nodos se pueden ver como relaciones entre los ndices. Esta relacin entre ndices se puede guardar en una matriz, que llamaremos de adyacencia. Representacin mediante listas: En las listas de adyacencia lo que haremos ser guardar por

cada nodo, adems de la informacin que pueda contener el propio nodo, una lista dinmica con los nodos a los que se puede acceder desde l. La informacin de los nodos se puede guardar en un vector, al igual que antes, o en otra lista dinmica. Representacin mediante matrices dispersas: Para evitar uno de los problemas que tenamos

con las listas de adyacencia, que era la dificultad de obtener las relaciones inversas, podemos utilizar las matrices dispersas, que contienen tanta informacin como las matrices de adyacencia, pero, en principio, no ocupan tanta memoria como las matrices, ya que al igual que en las listas de adyacencia, slo representaremos aquellos enlaces que existen en el grafo. DGRAFO (GRAFO DIRIGIDO). A un grafo dirigido se le puede definir como un grafo que contiene aristas dirigidas, como en el siguiente caso.

Teoremas Dos grafos son isomorfos si tienen el mismo nmero de vrtices y aristas y, estas se corresponden con los mismos extremos. El grado del vrtice de un grafo (gr) es el nmero de aristas que tienen por extremo dicho vrtice. Si dos grafos son isomorfos, los vrtices que se corresponden tienen el mismo grado. Primer Teorema de la Teora de Grafos: todo grafo contiene un numero par o cero de vrtices de grado impar. Un subgrafo es un grafo que esta contenido dentro de otro grafo y que se obtiene eliminando algunas aristas y vrtices del grafo principal. Un grafo es regular si todos sus vrtices tienen el mismo grado k (k-regular).

Un grafo es completo si cada par de vrtices son los extremos de una arista. Dos grafos completos con el mismo numero de vrtices son isomorfos. Caminos Un camino en un grafo es una sucesin finita en la que aparecen alternadamente vrtices y aristas de dicho grafo. Otras definiciones bsicas son: Los extremos son los vrtices inicial y final del camino. La longitud de un camino es el numero de aristas que contiene. Un camino es cerrado si sus extremos coinciden. Un camino es simple si en la sucesin de vrtices no hay ninguno repetido. Un ciclo es un camino cerrado donde los nicos vrtices repetidos son el primero y el ultimo. Un circuito es un camino cerrado que no repite aristas. Si en un grafo existe un camino que conecta dos vrtices distintos, entonces existe un camino simple con extremos en dichos vrtices. Un grafo es conexo si para cada par de vrtices, existe un camino con extremos en dichos vrtices. Tipos de caminos Camino euleriano: es un camino o circuito que contiene todas las aristas apareciendo cada una de ellas exactamente una vez. Un grafo que admite dicho circuito se denomina grafo euleriano, y sus vrtices o tienen grado par o dos de los vrtices tienen grado impar. Camino hamiltoniano: es un camino simple que contiene todos los vrtices apareciendo cada uno de ellos exactamente una vez. Un ciclo que a su vez es un camino hamiltoniano se denomina ciclo hamiltoniano, y un grafo que contiene un ciclo hamiltoniano se denomina grafo hamiltoniano. Exploracin Los grafos son utilizados con frecuencia para representar vas y redes de comunicacin. Aqu se ofrece una forma matricial de representar un grafo. Se denomina matriz de adyacencia a una matriz cuyas entradas son unos y ceros siguiendo una ley: a cada entrada mij le corresponde la arista dada por vivj. Segn sea grafo o digrafo ser:

GRAFO
mij = 1 si vivj forma arista mij = 0 si vivj no forma arista

DIGRAFO
mij = 1 si vivj forma arista orientacin = vi vj mij = 0 si vivj no forma arista orientacin = vj vi

Teoremas * Dos grafos con la misma matriz de adyacencia son isomorfos. * Un rbol es un grafo conexo sin ciclos. Un grafo es un rbol si y solo si cada dos vrtices distintos se conectan por un nico camino simple. Un grafo es etiquetado si sus aristas tienen asignado un nmero. Se llama distancia de un grafo etiquetado a la longitud mnima del camino entre dos vrtices dados. Algoritmo de Dijkstra Es un algoritmo que sirve para hallar la distancia mas corta entre dos vrtices de un digrafo. Sus reglas bsicas son: Se toma el vrtice inicial y se comprueba todas las direcciones posibles de salida. Se elige entre todos los vrtices el de la distancia mnima y se accede a el. Desde el siguiente vrtice se efecta el mismo paso hasta llegar al vrtice final. El algoritmo recorre todos los caminos posibles hasta tener la distancia mnima entre ambos vrtices. Descripcin El algoritmo de dijkstra determina la ruta ms corta desde un nodo origen hacia los dems nodos para ello es requerido como entrada un grafo cuyas aristas posean pesos. Algunas consideraciones:

Si los pesos de mis aristas son de valor 1, entonces bastar con usar elalgoritmo de BFS. Si los pesos de mis aristas son negativos no puedo usar el algoritmo de dijsktra, para pesos negativos tenemos otro algoritmo llamado Algoritmo de Bellmand-Ford.

Como trabaja Primero marcamos todos los vrtices como no utilizados. El algoritmo parte de un vrtice origen que ser ingresado, a partir de ese vrtices evaluaremos sus adyacentes, como dijkstra usa una tcnica greedy - La tcnica greedy utiliza el principio de que para que un camino sea

ptimo,

todos los caminos que contiene

tambin deben ser ptimos- entre todos los vrtices adyacentes, buscamos el que est ms cerca de nuestro punto origen, lo tomamos como punto intermedio y vemos si podemos llegar ms rpido a travs de este vrtice a los dems. Despus escogemos al siguiente ms cercano (con las distancias ya actualizadas) y repetimos el proceso. Esto lo hacemos hasta que el vrtice no utilizado ms cercano sea nuestro destino. Al proceso de actualizar las distancias tomando como punto intermedio al nuevo vrtice se le conoce comorelajacin (relaxation). Dijkstra es muy similar a BFS, si recordamos BFS usaba una Cola para el recorrido para el caso de Dijkstra usaremos una Cola de Prioridad o Heap, este Heap debe tener la propiedad de Min-Heap es decir cada vez que extraiga un elemento del Heap me debe devolver el de menor valor, en nuestro caso dicho valor ser el peso acumulado en los nodos. Tanto java como C++ cuentan con una cola de prioridad ambos implementan un Binary Heap aunque con un Fibonacci Heap la complejidad de dijkstra se reduce hacindolo mas eficiente, pero en un concurso mas vale usar la librera que intentar programar una nueva estructura como un Fibonacci Heap, claro que particularmente uno puede investigar y programarlo para saber como funciona internamente.

Algoritmo en pseudocdigo Considerar distancia[ i ] como la distancia mas corta del vrtice origen ingresado al vrtice i.

1 mtodo Dijkstra(Grafo,origen): 2 3 4 5 6 7 8 9 10 11 creamos una cola de prioridad Q agregamos origen a la cola de prioridad Q mientras Q no este vaco: sacamos un elemento de la cola Q llamado u si u ya fue visitado continuo sacando elementos de Q marcamos como visitado u para cada vrtice v adyacente a u en el Grafo: sea w el peso entre vrtices ( u , v ) si v no ah sido visitado: Relajacion( u , v , w )

1 mtodo Relajacion( actual , adyacente , peso ): 2 3 si distancia[ actual ] + peso < distancia[ adyacente ] distancia[ adyacente ] = distancia[ actual ] + peso

agregamos adyacente a la cola de prioridad Q

Ejemplo y Cdigo paso a paso Tengamos el siguiente grafo, cuyos ID estn en color negro encima de cada vrtice, los pesos esta en color azul y la distancia inicial en cada vrtice es infinito

Algunas consideraciones para entender el cdigo que se explicara junto con el funcionamiento del algoritmo.

Mapas Definiciones Un grafo se dice que es plano si admite una representacin grfica en el plano de modo que cada arista corta nicamente a otra arista en un vrtice que sea extremo de ambas. Una representacin de un grafo con estas condiciones se dice que es un mapa. Un mapa es conexo si el grafo que representa es conexo. Las regiones son las divisiones en varias partes de un plano. El grado de una regin es la longitud del camino que la bordea. La suma de los grados de las regiones de un mapa es igual al doble del numero de aristas del grafo que representa. Formula de Euler

Sea M un mapa conexo con #R (nmero de regiones) que representa al grafo G con #V (nmero de vrtices) y con #E (nmero de aristas), entonces: #V - #E + #R = 2 Este es un resultado muy interesante y visualmente sorprendente. Considere un poliedro P no importa si este es regular o irregular. La frmula de Euler indica que si de caras del poliedro, representa el nmero de aristas y representa el nmero

representa el nmero de vrtices

del poliedro entonces se cumple que

Por ejemplo si tomamos un cubo cualquiera este tendr seis caras, ocho vrtices y doce aristas. En este caso que de donde fcilmente vemos

Ahora bien, si hacemos un corte en una esquina obtenemos un nuevo poliedro irregular que guarda la misma relacin entre sus caras, aristas y vrtices

De hecho no importa cuantos cortes se le apliquen y lo irregular de la forma final la igualdad anterior seguir siendo vlida. Este tipo de resultado puede ser til para mejorar la capacidad visual, la motora fina y los procesos aritmticos en los estudiantes de los primeros niveles usando como estrategia

didctica la construccin y posterior corte de un poliedro, para que el estudiante verifique con algunos ejemplos la validez de la frmula.

Teoremas Si un grafo es plano conexo con #V > 2, entonces #E <= 3#V - 6. Si en un grafo plano conexo con #V > 2, no existe ningn subgrafo isomorfo k3-regular, entonces #E <= 2#V - 4. Dos regiones son adyacentes si los caminos que las bordean tienen alguna arista en comn. Una coloracin es una aplicacin de tal manera que dos vrtices contiguos no puedan tener el mismo color. Todo grafo plano admite una coloracin con cuatro colores. Un grafo es bipartito si existe una coloracin con solo dos colores, o si y solo si no tiene ciclos con longitud impar.

Conclusin

Bibliografa http://www.tecdigital.itcr.ac.cr/revistamatematica/MundoMatematicas/Vol5n1Jun2004/node11.html http://jariasf.wordpress.com/2012/03/19/camino-mas-corto-algoritmo-de-dijkstra/ http://www.matediscreta.8k.com/grafos.htm

Matemtica discreta N.L. Biggs (Ed. Vincens Vives)

Potrebbero piacerti anche