Está en la página 1de 25

GRAFOS

CREACIN DE NDICES EN GOOGLE DE


LOS SITIOS DE LA RED DE INTERNET

INDICE

1. Introduccin
2. Conceptos matemticos con ejemplos
3. Resolucin de ejercicios
4. Ejercicios con Maxima
5. Explicacin del modelo ilustrada con un ejemplo
6. Ejercicios propuestos sobre el tema
7. Bibliografa

Tania Guzmn Garca


Luis Gonzlez Varela
Alexandre Gonzlez Rivas

1. Introduccin
La teora de grafos es una disciplina antigua con muchas
aplicaciones modernas. Sus ideales bsicos fueron introducidos por el
gran matemtico suizo Leonhard Euler (1700-1783) en el siglo XVIII.
L. Euler utiliz los grafos para resolver el famoso problema de los
puentes de Knigsberg que se considera el primer trabajo sobre esta
materia.
Los grafos se emplean para resolver problemas de diversas
reas. Pueden utilizarse, por ejemplo, para determinar si se puede o
no implementar un circuito sobre una placa de una sola capa, para
estudiar la estructura de una red de Internet, para determinar si dos
ordenadores estn conectados o no dentro de una red informatizada,
para hallar el camino ms corto entre dos ciudades en una red de
transportes, para trazar rutas de vuelo en un espacio areo
concreto
El primer ejemplo de trabajo con grafos fue este trabajo que
surgi para resolver un problema en la ciudad de Knigsberg (Rusia).
La ciudad estaba dividida en cuatro partes por dos brazos del ro
Pregel estando conectadas por siete puentes.

La pregunta que se hizo L. Euler fue: Es posible recorrer los


siete puentes pasando por todos ellos una nica vez, partiendo y
llegando al mismo sitio?
Para intentar resolver este problema represent
esquemticamente las reas de tierra por puntos y los puentes por
lneas conectando esos puntos. El resultado fue el siguiente grafo:
e1
B
e3

A
e2

e5

e4

e6
e7
D

V = {A,B,C,D}
C

E = {e1,e2,e3,e4,e5,e6,e7}
e1 = {A,B}e7 = {C,D}

2. Conceptos matemticos con ejemplos


Grafo. Informalmente, un grafo es un conjunto de objetos llamados
vrtices o nodos unidos por enlaces llamados aristas o arcos, que
permiten representar relaciones binarias entre elementos de un
conjunto. 1

Definicin formal. Un grafo es un par G =


(V,E), donde V es un conjunto finito no
vaco, cuyos elementos se llaman vrtices o
nodos y, E es una familia, cuyos elementos
se llaman aristas. Una rasita es un par no
ordenado de vrtices de V. 2

Grafo etiquetado con 6 vrtices y 7 aristas.

Tipos de grafos.

1
2

Grafos simples. Un grafo simple es un conjunto de vrtices y

Multigrafos. Son grafos que contienen dos aristas que conectan

Pseudografos. Son multigrafos que permiten la existencia de

Grafos dirigidos. Son grafos que, indistintamente de si son

aristas. Las aristas unen pares de vrtices, no habiendo dos


aristas que conecten el mismo par.

el mismo par de vrtices.

lazos o aristas que unen un vrtice consigo mismo.

simples, multigrafos, o pseudografos, tienen aristas con


direccin o aristas dirigidas. Los grafos sin aristas dirigidas son
grafos no dirigidos.

http://es.wikipedia.org/wiki/Grafo
Definicin recogida en los apuntes de Matemtica Discreta de la FIC (2006-2007), tema 5 pg. 100

Terminologas o propiedades.

Etiquetado. Distincin que se hace a los vrtices y/o aristas


mediante una marca que los hace unvocamente distinguibles
del resto, es decir, asignarle a cada vrtice o arista un nombre.
Quedan registrados los vrtices A y B y la arista que los une
como e1.
e1

Adyacencia. Se dice que dos vrtices son adyacentes si hay una


arista que los conecte entre ellos. A y B son adyacentes.
A

Grado de un vrtice. El grado de un vrtice es un nmero natural


de 0 al infinito que designa el nmero de aristas le conectan
con otros vrtices. El grado de A es 2.
A

B
C

Incidencia. Una arista es incidente a un vrtice si sta lo une a


otro. E1 es una arista incidente entre A y B.
A

e1

Ponderacin. Corresponde a una funcin que a cada arista le


asocia un valor (costo, peso, longitud, etc.), para aumentar la
expresividad del modelo. El valor ponderado de la arista entre
A y B es 6.
A

B
9

Camino. Un camino es una secuencia de aristas que comienzan


en un vrtice del grafo y recorren parte o la totalidad del grafo
conectando vrtices adyacentes. E,R,T,Y,U,I es un camino del
grafo.

Circuito. Cuando existe un camino que empieza y acaba en el


mismo vrtice. El siguiente grafo contiene el circuito V,B,N,M,V.
B

Isomorfismo. Si dos grafos son isomorfos slo vara la


apariencia, es decir, que se mantienen las adyacencias,
estructura, caminos, ciclos, nmero de vrtices y nmero de
aristas. Los dos grafos son isomorfos.
A

Conexo. Un grafo es conexo si tiene una nica componente


conexa, es decir, todos los vrtices del grafo estn relacionados.
En el caso contrario sera un grafo disconexo.
A

Grafo conexo

Grafo disconexo

Familias de grafos simples

Grafo regular. Un grafo simple es regular si todos sus vrtices

Grafo completo. El grafo completo es aquel que tiene

Grafo complementario. Un grafo complementario es aquel grafo

tienen el mismo grado.

exactamente una arista entre cada par de vrtices.

que contiene todos los vrtices del original y las aristas que no
ests.

Grafo original

Grafo complementario

Grafo bipartito. Un Grafo bipartito se denomina en Teora de

Grafo bipartito completo. Cumple ambas condiciones.

grafos a un grafo no dirigido cuyos vrtices se pueden separar


en dos conjuntos disjuntos y teniendo que las aristas siempre
unirn vrtices de un conjunto con vrtices de otro.

rboles
Definicin de rbol. Un rbol es un grafo conexo y
sin ciclos o lazos, es decir, un grafo simple.

Un rbol etiquetado con 6 vrtices y 5


aristas

G
Otros ejemplos de rboles

Terminologas o propiedades.

Definicin de bosque. Un rbol es considerado un bosque si sus

rbol generador. Un rbol generador de un grafo conexo es un

rbol generador mnimo. El rbol generador mnimo es un rbol

Raz. Un rbol con raz es un rbol en el que uno de sus vrtices

componentes conexas son rboles.

subgrafo conexo con el menor nmero posible de aristas y con


todos los vrtices del grafo original. No tiene porque ser nico.

generador construido sobre un grafo conexo ponderado con un


criterio de seleccin de aristas definido por su menor peso.

ha sido designado como la raz y todas las aristas estn


colocadas alejndose de dicha raz.
Raz

Padre. Se considera padre de un vrtice al vrtice adyacente

Hijo. Se consideran hijos de un vrtice a todos los vrtices

superior.

comunicados por una arista y adyacentes que se encuentren


por de este. A es padre de B y C o lo que es lo mismo B y C son
hijos de A

A
B

Hoja. Son los vrtices que no tienen hijos. En este ejemplo


A,B,C,D,E son hojas del rbol.

D
B

Bsqueda en profundidad y bsqueda en profundidad en grafos dirigidos.

Bsqueda en profundidad. Una Bsqueda en profundidad es un


algoritmo que permite recorrer todos los nodos de un grafo o
rbol de manera ordenada, pero no uniforme. Su
funcionamiento consiste en ir expandiendo todos y cada uno de
los nodos que va localizando, de forma recurrente, en un
camino concreto. Cuando ya no quedan ms nodos que visitar

en dicho camino, regresa, de modo que repite el mismo proceso


con cada uno de los hermanos del nodo ya procesado.3

Algoritmo de ejemplo de una bsqueda en profundidad 4:


procedure BP(G: grafo conexo de vrtices v1,v2, vn)
T:= rbol que consta slo del vrtice v1
visita(v1)
procedure visita(v: vrtice de G)
for cada vrtice w adyacente a v y que no est en T
begin
aadir el vrtice w y la arista {v,w} a T
visita(w)
end

Bsqueda en profundidad en grafos dirigidos. La bsqueda en


grafos dirigidos es muy similar a la bsqueda sobre un grafo
no-dirigido, sin embargo, el resultado final no tiene porque ser
un rbol generador del grafo original sino que puede ser un
bosque. 5
b

h
j

l
Una bsqueda de ejemplo en un grafo dirigido.

l
k
j

http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_profundidad
Rosen, Kenneth H. Matemtica discreta y sus aplicaciones, pgina 632.
5
Rosen, Kenneth H. Matemtica discreta y sus aplicaciones, pgina 637.
4

3. Resolucin de ejercicios

4. Ejercicios con Maxima


1. Escribe el nombre del paquete de Maxima que incorpora las funciones
relacionadas con Teora de Grafos.
El paquete graphs permite trabajar con estructuras de grafos y
digrafos en Maxima.

2. Escribe las funciones de dicho paquete que:


Define y crea los grafos.
create_graph

Devuelve un ciclo de n vrtices.


cycle_graph

Devuelve un camino de n vrtices.


path_graph

Devuelve un rbol aleatorio de n vrtices.


. random_tree

Determina si un grafo es conexo.


is_connected (Devuelve true si el grafo gr es conexo y false
en caso contrario)

Devuelve las componentes conexas de un grafo.


connected_components

Determina si un grafo es un rbol.


is_tree (Devuelve true si es un arbol y false en caso contrario)

Devuelve un rbol generador de un grafo.


min_edge_cut

Dibuja un grafo.
draw_graph

3. Utilizando Maxima:
Crea los grafos de los ejercicios del Rosen, pg. 509: 3, 4, 5, 7, 8.

Rosen, pg. 538: Ejercicios 3, 4, 5, 6.


Rosen, pg. 598-599: Ejercicio 1.
Obtn un rbol generador para cada uno los grafos de los ejercicios del
Rosen, pg. 638: 2, 3, 13.

/* [wxMaxima batch file version 1] [ DO NOT EDIT


BY HAND! ]*/
/* [ Created with wxMaxima version 0.8.6 ] */
/* [wxMaxima: input

start ] */

load(graphs);
/* [wxMaxima: input
/* [wxMaxima: input
"EJERCICIO 3";
/* [wxMaxima: input

end

] */

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3,4], [[1,2],[2,3],[1,3],[2,4]])
$
print_graph(g)$
draw_graphs(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"EJERCICIO 4";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input
"EJERCICIO 5";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input
"EJERCICIO 7";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input
"EJERCICIO 8";
/* [wxMaxima: input

start ] */

end

end

end

end

] */

] */

] */

] */

/* [wxMaxima: input start ] */


"EJERCICIO 3 PAG 538";
/* [wxMaxima: input end ] */
/* [wxMaxima: input

start ] */

load(graphs)$
g:create_graph([1,2,3], [[1,2],[2,3]])$
print_graph(g)$
is_connected(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
load(graphs)$
g:create_graph([1,2,3,4],[[1,4],[3,4]])$
print_graph(g)$
is_connected(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
"EJERCICIO 4 PAG 538";
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
load(graphs)4
g:create_graph([1,2,3,4,5,6,7,8,9,10,11],[[1,2],
[1,3],[2,8],[3,7],[3,9],[4,8],[4,10],[5,9],[5,11],
[6,10]])$
print_graph(g)$
is_connected(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
"EJERCICIO 5 PAG 538";
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,5],[1,3],[2,6],
[2,4],[3,5],[4,6]])$
print_graph(g)$
is_connected(g);

/* [wxMaxima: input

end

] */

/* [wxMaxima: input start ] */


"EJERCICIO 6 PAG 538";
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"3";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3], [[1,2],[2,3]])$
print_graph(g)$
connected_components(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
load(graphs)$
g:create_graph([1,2,3,4],[[1,4],[3,4]])$
print_graph(g)$
connected_components(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"4";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)4
g:create_graph([1,2,3,4,5,6,7,8,9,10,11],[[1,2],
[1,3],[2,8],[3,7],[3,9],[4,8],[4,10],[5,9],[5,11],
[6,10]])$
print_graph(g)$
connected_components(g);
/* [wxMaxima: input end ] */

/* [wxMaxima: input
"5";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,5],[1,3],[2,6],
[2,4],[3,5],[4,6]])$
print_graph(g)$
connected_components(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input start ] */
"EJERCICIO 1 pag 598";
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"a";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input

start ] */

end

] */

load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,4],[2,4],[2,5],
[3,5],[3,6]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"b";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input
load(graphs)$

start ] */

end

] */

g:create_graph([1,2,3,4,5,6],[[1,4],[2,4],[3,5],
[3,6]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"c";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,4],[2,5],[2,3],
[3,6],[4,5]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"d";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,4],[2,4],[2,5],
[3,5],[3,6],[4,5]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"e";
/* [wxMaxima: input

start ] */

/* [wxMaxima: input
load(graphs)$

start ] */

end

] */

g:create_graph([1,2,3,4,5,6,7],[[1,4],[2,4],[3,4],
[5,4],[6,4],[7,4]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* [wxMaxima: input
"f";
/* [wxMaxima: input

start ] */
end

] */

/* [wxMaxima: input start ] */


load(graphs)$
g:create_graph([1,2,3,4,5,6],[[1,4],[1,6],[2,4],
[2,5],[3,5],[3,6]])$
print_graph(g)$
is_tree(g);
/* [wxMaxima: input end ] */
/* Maxima can't load/batch files which end with a
comment! */
"Created with wxMaxima"$

5. Explicacin del modelo ilustrada con un ejemplo


Conceptos previos.

El grafo de red. La Red de Internet se puede representar por


medio de un grafo dirigido en el que cada pgina web est
representada por un vrtice y en el que una arista comienza
en la pgina a y termina en la b si hay un enlace en la pgina
a que conduce a la b.[] 6
a
b

Ejemplo de un grafo de red

Araas web. Para indexar los sitios de la red de Internet,


buscadores como Google, Hotbot y Lycos exploran
sistemticamente la Red comenzando en sitios conocidos.
Estos buscadores utilizar los contenidos. Las araas web
utilizan tanto la bsqueda en anchura como en profundidad
para crear ndices. [] 7

Otra definicin. Una araa web (o araa de la web) es un programa

que inspecciona las pginas del World Wide Web de forma metdica y
automatizada. Uno de los usos ms frecuentes que se les da consiste
en crear una copia de todas las pginas web visitadas para su
procesado posterior por un motor de bsqueda que indexa las
pginas proporcionando un sistema de bsquedas rpido. Las araas
web suelen ser bots (el tipo ms usado de stos).

6
7

Rosen, Kenneth H. Matemtica discreta y sus aplicaciones, pgina 508.


Rosen, Kenneth H. Matemtica discreta y sus aplicaciones, pgina 637.

Las araas web comienzan visitando una lista de URLs, identifica los
hiperenlaces en dichas pginas y los aade a la lista de URLs a visitar
de manera recurrente de acuerdo a determinado conjunto de reglas.
La operacin normal es que se le da al programa un grupo de
direcciones iniciales, la araa descarga estas direcciones, analiza las
pginas y busca enlaces a pginas nuevas. Luego descarga estas
pginas nuevas, analiza sus enlaces, y as sucesivamente.8

Ejemplo de bsqueda en profundidad en un grafo dirigido.


Partiendo del siguiente grafo explicaremos una bsqueda en
profundidad 9:
a

h
j

k
l

Elegimos empezar por el vrtice a para mantener un orden alfabtico,


podra empezarse por cualquier vrtice del rbol en este caso, en otro
rbol en el que la raz fuera ms clara debera ser el vrtice raz el
primero.
Siguiendo las aristas dirigidas de a nos encontramos con los
siguientes caminos: 1) (a,b,c,g) y (a,b,f,e) lo que nos da como
resultado el siguiente rbol:
a

8
9

De a la arista dirigida nos lleva a b, de


b, tenemos dos caminos, escogemos
primero por orden alfabtico ir a c y de
este vrtice a g; como no tenemos ms
caminos, volvemos a b y continuamos
de b a f y de f a e. Nuevamente no
tenemos por donde seguir. Esta parte
est completa.

http://es.wikipedia.org/wiki/Ara%C3%B1a_web
Rosen, Kenneth H. Matemtica discreta y sus aplicaciones, pgina 632.

Ahora elegimos el vrtice d, nuevamente por orden alfabtico para


continuar nuestra bsqueda. El camino resultante es (d,h,l,k,j).
d

Esta vez es mucho ms sencillo


encontrar el camino, de d a h, de h a
l, de l a k y de k a j.

l
k

j
El nico vrtice no recogido por nuestros dos rboles es i, para este
resultado de una bsqueda los rboles son los mostrados; una
bsqueda que comenzara en otro vrtice dara lugar a otros rboles.

6. Ejercicios propuestos sobre el tema


1.- De que tipo son los siguientes grafos.
a)

e)
A

b)

f)
C

c)
g)

d)

h)
f

h
j

k
l

2.- Partiendo del siguiente rbol indica:


a
c

b
e
d

f
g
i

h
j

a) Cul es el vrtice raz?


b) Qu vrtices son hojas?
c) Qu vrtices son hijos de b?
d) Qu vrtice es padre de d?
e) Cules son hermanos de e?
f) Qu vrtices son los antecesores de j?
g) Cules son los posibles caminos de rbol?

3.- En un juego de ordenador en 2D, los usuarios gestionan una


ciudad, diseando y estructurando sus recursos e infraestructuras.
Un amigo nuestro que juega a ese juego se ha encontrado con un
problema que no consigue solucionar, tiene que enviar agua, luz y
gas a seis viviendas desde las distintas estaciones que se la
proporcionan pero no encuentra la manera de hacerlo. Seras
capaz de ayudarle teniendo en cuenta que el mundo es un plano y
por lo tanto las tuberas y los cables no se pueden cruzar?

Luz

Agua

Gas

7. Bibliografa

Rosen, Kenneth H. Matemtica discreta y sus aplicaciones.


Edicin 5 . McGraw-Hill, 2004 (Hay varios ejemplares
disponibles en la biblioteca del Campus).
Garca Merayo, Flix Matemtica discreta. Edicin 2 ed.
Paraninfo, D.L. 2005.
Kolman, Bernard Estructuras de matemticas discretas
para la computacin. Edicin 3. Prentice Hall, 1997.
Apuntes de Matemtica Discreta de la Facultad de
informtica de Corua (2006-2007)
Poli Abascal Fuentes, Teora de Grafos.
http://enol.epsig.uniovi.es/matdisc/materiales/trgrafosalu.pdf
Introduccin a la Teora de Grafos de Reinaldo Giudici
Espinoza y Angeles Bris Lluch, editorial Equinoccio, Universidad
Simn Bolvar, Caracas, Venezuela, 1997.
http://teoriadegrafos.blogspot.com/
Un ejemplo de bsqueda en profundidad en grafos no dirigidos:
http://translate.google.es/translate?hl=es&langpair=en|
es&u=http://en.wikipedia.org/wiki/Depth-first_search