FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

132
FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE LA TESIS DOCTORAL O DEL TRABAJO DE GRADO TÍTULO COMPLETO DE LA TESIS DOCTORAL O TRABAJO DE GRADO: APLICACIONES DE LA TEORIA DE GRAFOS EN LA INFORMÁTICA AUTOR O AUTORES Apellidos Completos Nombres Completos PIEDRA HERNANDEZ PATERNOSTRO MOVILLA VIVIANA SOFIA CARLOS ANDRES DIRECTOR (ES) TESIS DOCTORAL O DEL TRABAJO DE GRADO Apellidos Completos Nombres Completos NIETO CLAVIJO GUSTAVO ADOLFO TRABAJO PARA OPTAR AL TÍTULO DE: TESIS DE GRADO FACULTAD: CIENCIAS BASICAS PROGRAMA: Carrera _X_ Licenciatura ___ Especialización ____ Maestría ____ Doctorado ____ NOMBRE DEL PROGRAMA: INFORMATICA MATEMATICA NOMBRES Y APELLIDOS DEL DIRECTOR DEL PROGRAMA: PATRICIA ARACELY HERNANDEZ ROMERO CIUDAD: BOGOTA AÑO DE PRESENTACIÓN DEL TRABAJO DE GRADO: 2009 NÚMERO DE PÁGINAS 86 TIPO DE ILUSTRACIONES: - Tablas y gráficos SOFTWARE requerido y/o especializado para la lectura del documento__NINGUNO________

Transcript of FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Page 1: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

FORMATO 2 (Anexo No.3)

FORMULARIO DE LA DESCRIPCIÓN DE LA TESIS DOCTORAL O DEL TRABAJO DE GRADO

TÍTULO COMPLETO DE LA TESIS DOCTORAL O TRABAJO DE GRADO: APLICACIONES DE LA TEORIA DE GRAFOS EN LA INFORMÁTICA

AUTOR O AUTORES

Apellidos Completos Nombres Completos

PIEDRA HERNANDEZ PATERNOSTRO MOVILLA

VIVIANA SOFIA CARLOS ANDRES

DIRECTOR (ES) TESIS DOCTORAL O DEL TRABAJO DE GRADO

Apellidos Completos Nombres Completos

NIETO CLAVIJO

GUSTAVO ADOLFO

TRABAJO PARA OPTAR AL TÍTULO DE: TESIS DE GRADO FACULTAD: CIENCIAS BASICAS PROGRAMA: Carrera _X_ Licenciatura ___ Especialización ____ Maestría ____ Doctorado ____ NOMBRE DEL PROGRAMA: INFORMATICA MATEMATICA NOMBRES Y APELLIDOS DEL DIRECTOR DEL PROGRAMA: PATRICIA ARACELY HERNANDEZ ROMERO CIUDAD: BOGOTA AÑO DE PRESENTACIÓN DEL TRABAJO DE GRADO: 2009 NÚMERO DE PÁGINAS 86 TIPO DE ILUSTRACIONES:

­ Tablas y gráficos SOFTWARE requerido y/o especializado para la lectura del documento__NINGUNO________

Page 2: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

DESCRIPTORES O PALABRAS CLAVES EN ESPAÑOL E INGLÉS: Son los términos que definen los temas que identifican el contenido.

ESPAÑOL INGLÉS

Arista no dirigida Arista dirigida Aristas múltiples Bucle Grafo no dirigido Grafo simple Grafo dirigido Multigrafo dirigido Adyacente Incidente Grafo bipartito Hoja Grafo regular Subgrafo

Edge not addressed Directed edge Multiple edges Loop Graph not addressed Simple graph Directed graph Multigraph directed Adjacent Incident Bipartite graph Sheet Regular graph Subgraph

RESUMEN DEL CONTENIDO EN ESPAÑOL E INGLÉS: ESPAÑOL

El principal objetivo es conformar un proyecto que muestre algunas de las aplicaciones de la teoría de grafos en las redes de comunicaciones, manejo de información y secuencia de programas. También mostrar ejemplos y aplicaciones de la teoría de grafos en el diseño y estructura de redes de comunicaciones, establecer situaciones donde se muestra la importancia de los grafos dirigíos en la ejecución de programas y diseñar estructuras de bases de datos mostrando la utilidad de los grafos a través de ejemplos ilustrados. La finalidad de nuestro trabajo es proveer de un texto en donde se encuentren algunas de las mas grandes e importantes aplicaciones informáticas, teoría y terminología básica de la teoría de grafos, a los estudiantes de informática matemática e ingeniería de Sistemas de los primeros semestres, los cuales empiezan a estudiar la teoría de grafos y a comprender que ésta puede ser de gran ayuda para la ciencia de la computación, por ende así para sus carreras respectivas. INGLES The main objective is to build a project that shows some of the applications of graph theory in communication networks, information management and sequencing programs. We also show examples and applications of graph theory in the design and structure of communication networks, establish situations, showing the importance of the graph directed in program implementation and design of database structures showing the usefulness of a graph illustrated through examples. The purpose of our work is to provide a text where some of the biggest and important applications, theory and basic terminology of graph theory, students of mathematics and computer engineering of the first semester, the are beginning to study the theory of graphs and understand that it can be very helpful for computer science, and hence for their respective careers.

Page 3: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

1

APLICACIONES DE LA TEORIA DE GRAFOS EN LA

INFORMÁTICA

VIVIANA SOFIA PIEDRA HERNANDEZ

CARLOS ANDRES PATERNOSTRO MOVILLA

Page 4: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

2

TRABAJO DE GRADO

INFORMATICA MATEMATICA

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE CIENCIAS

CARRERA DE INFORMATICA MATEMATICA

Bogotá, D. C.

10 de julio de 2009

Page 5: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

3

DEDICATORIA

Este trabajo esta dedicado a quienes nos apoyaron económica,

física, emocional y mentalmente a lograr dar cada paso en

nuestro camino profesional. A nuestros padres, familias y

maestros.

Page 6: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

4

RESUMEN

El principal objetivo es conformar un proyecto que muestre algunas de las aplicaciones de la

teoría de grafos en las redes de comunicaciones, manejo de información y secuencia de

programas. También mostrar ejemplos y aplicaciones de la teoría de grafos en el diseño y

estructura de redes de comunicaciones, establecer situaciones donde se muestra la

importancia de los grafos dirigíos en la ejecución de programas y diseñar estructuras de

bases de datos mostrando la utilidad de loa grafos a través de ejemplos ilustrados.

La finalidad de nuestro trabajo es proveer de un texto en donde se encuentren algunas de

las mas grandes e importantes aplicaciones informáticas, teoría y terminología básica de la

teoría de grafos, a los estudiantes de informática matemática e ingeniería de Sistemas de

los primeros semestres, los cuales empiezan a estudiar la teoría de grafos y a comprender

que ésta puede ser de gran ayuda para la ciencia de la computación, por ende así para sus

carreras respectivas.

Page 7: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

5

AGRADECIMIENTOS

Gracias a José Luis Piedra, Reinaldo Paternostro, Carmen

Hernández y Vilma Movilla, nuestros padres y principales

colaboradores en nuestra educación. A Gustavo Nieto quien con

su inteligencia y paciencia nos ayudo a crear este trabajo. A

Alejandro Forero.

10 de julio de 2009

Page 8: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

6

INDICE

1 INTRODUCCIÓN .................................................................................................................... 7

2 MARCO TEÓRICO Y REVISIÓN DE LITERATURA ......................................................... 8

3 FORMULACION DEL PROBLEMA Y JUSTIFICACION .................................................. 9

4 OBJETIVOS ........................................................................................................................... 10

5 HISTORIA DE LA TEORIA DE GRAFOS .......................................................................... 11

7 TÉRMINOS CLAVE .............................................................................................................. 19

8 DEFINICIONES ..................................................................................................................... 20

9 MODELOS CON GRAFOS ................................................................................................... 29

10 APLICACIONES INFORMÁTICAS USANDO LA TEORÍA DE GRAFOS ..................... 33

11 GRAFOS BIPARTITOS ......................................................................................................... 36

12 GRAFOS ISOMORFOS ......................................................................................................... 37

13 CONEXIÓN ............................................................................................................................ 39

13.1 CAMINOS ....................................................................................................................... 39 13.2 CONEXIÓN EN GRAFOS NO DIRIGIDOS .................................................................... 41 13.3 CONEXIÓN EN GRAFOS DIRIGIDOS ........................................................................... 43 13.4 APLICACIONES INFORMATICAS PARA LA CONEXIÓN ENTRE GRAFOS ............ 45

14 CAMINOS EULERIANOS Y HAMILTONIANOS .............................................................. 47

15 ALGORITMO DE DIJKSTRA .............................................................................................. 51

16 ÁRBOLES ............................................................................................................................... 52

17 INTRODUCCION A LOS ÁRBOLES ................................................................................... 54

18 ARBOL BINARIO .................................................................................................................. 56

19 ALGORITMOS DE RECORRIDOS ..................................................................................... 57

19.1 IN-ORDEN ...................................................................................................................... 57 19.2 PREORDEN ..................................................................................................................... 58 19.3 POSTORDEN .................................................................................................................. 58

20 ÁRBOLES DE DECISIÓN ..................................................................................................... 61

20.2 APLICACIONES DE ÁRBOLES BINARIOS .................................................................. 64 20.3 APLICACIONES INFORMATICAS DE ÁRBOLES DE DECISION ............................... 70 20.4 ÁRBOLES DE JUEGOS .................................................................................................. 72

21 ARBOL RECUBRIDOR ........................................................................................................ 78

22 ALGORITMO DE KRUSKAL .............................................................................................. 79

23 ALGORITMO DE PRIM ....................................................................................................... 83

24 BIBLIOGRAFIA..................................................................................................................... 91

Page 9: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

7

1 INTRODUCCIÓN

La teoría de grafos también llamada teoría de las gráficas, es una disciplina que es

importante tanto para las matemáticas como para la teoría de la computación. En esta

última disciplina todo es manejado a través de los grafos que son estructuras discretas

que constan de puntos y de líneas que se conectan entre sí. Es importante saber que

existen diferentes tipos de grafos, que se distinguen entre si por el tipo y el número de

líneas que pueden conectarse a través de pares de puntos.

Para este caso serán representados algunos de los diferentes problemas informáticos

que pueden ser resueltos a través de la teoría de grafos, dichos problemas pueden ser

como calcular el número de combinaciones diferentes de vuelo entre dos ciudades de

una red aérea, el problema del viajante, que trata de resolver cual es la manera en que

una persona debería viajar para conocer diferentes ciudades sin volver a pasar por la

misma ciudad, como utilizar grafos predecibles para la creación de sistemas

operativos, diseño de bases de datos entre otras aplicaciones.

Es importante también saber de los diferentes algoritmos ya existentes y que son de

gran importancia para poder resolver las diferentes aplicaciones informáticas, dichos

algoritmos son el de Dijkstra, Prim, Kruskal, y Kuratwoski etc.

El propósito principal de la investigacion es mostrar algunas de las aplicaciones que

contienen la teoría de grafos y cómo se pueden resolver, con la ayuda de las

matemáticas muchos manejos computacionales. Algunos de los temas relacionados

con dichas aplicaciones son: Las estructuras de datos, el diseño de circuitos planos y

la solución de variados problemas en campos tan particulares como la teoría de

juegos, en las redes telefónicas, eléctricas, Bases de datos y de comunicaciones en

general.

Page 10: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

8

2 MARCO TEÓRICO Y REVISIÓN DE LITERATURA

Actualmente la teoría de grafos es esencial para el manejo de circuitos y la creación

del diseño de programas, en el sigo XVIII Leonhard Euler introdujo las primeras

ideas de esta disciplina.

El problema de los puentes de Konigsberg, resuelto por Leonhard Euler, en 1736, fue

el comienzo de la teoría de grafos, ya que es considerado el primer resultado de esta

disciplina.

Existieron otros pensadores que influyeron en su desarrollo, como Gustav Kirchhoff

con las leyes de los circuitos para calcular el voltaje y la corriente en los circuitos

eléctricos. Son éstos ejemplos esenciales para el desarrollo de la teoría de grafos.

Podemos encontrar bibliografía variada y rica en conocimiento como J. Gross, J.

Yellen: "Graph Theory and its Applications" . CRC Press, 1999 y también

encontramos K. H. Rosen: "Exploring Discrete Mathematics with Maple". McGraw-

Hill, 1997, que nos presentan conceptos y aplicaciones matemáticas importantes.

Después de estudiar la bibliografía nos dimos cuenta que hacía falta en la bibliografía

un texto donde se encontraran en un sólo lugar algunas de las aplicaciones más

importantes en la informática en el tema de la teoría de grafos. De ahí es de donde

surge nuestro objetivo final de este proyecto.

Page 11: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

9

3 FORMULACION DEL PROBLEMA Y JUSTIFICACION

3.1 Formulación del problema

El problema básicamente se centra en la falta de información sobre algunas

aplicaciones informáticas desde un tema tan amplio como es la teoría de grafos. Lo

que se pretende solucionar es contar rápidamente con un manual, en el cual se puedan

encontrar algunas de las más importantes aplicaciones informáticas en el ámbito de

dicha disciplina.

3.2 Justificación de la investigación

La finalidad de nuestro trabajo es proveer de un texto en donde se encuentren algunas

de las más grandes e importantes aplicaciones informáticas, teoría y terminología

básica de la teoría de grafos, a los estudiantes de informática matemática e ingeniería

de Sistemas, los cuales apenas empiezan a estudiar la teoría de grafos y a comprender

que ésta puede ser de gran ayuda para la ciencia de la computación ya que a través de

ella se logran muchas de las aplicación mostradas alrededor de toda su carrera.

Page 12: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

10

4 OBJETIVOS

4.1 Objetivo General:

Conformar un proyecto que muestre algunas de las aplicaciones de la teoría de grafos

en las redes de comunicaciones, manejo de información y secuencia de programas.

4.2 Objetivos Específicos:

- Mostrar ejemplos y aplicaciones de la teoría de grafos en el diseño y

estructura de redes de comunicaciones.

- Establecer situaciones donde se muestra la importancia de los grafos dirigidos

en la ejecución de programas

- Diseñar estructuras de bases de datos mostrando la utilidad de los grafos a

través de ejemplos ilustrados.

Page 13: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

11

5 HISTORIA DE LA TEORIA DE GRAFOS

La teoría de grafos es una disciplina que hoy en día presenta un desarrollo vertiginoso

debido a su importancia en el diseño de programas, circuitos etc. Sus ideas básicas las

introdujo el matemático suizo Leonhard Euler en el siglo XVIII.

Los grafos desde sus inicios se han empleado para resolver problemas de diversas

áreas. Dicha disciplina se puede utilizar, por ejemplo, para determinar si se puede o

no implementar un circuito sobre una placa de una sola capa; también a través de ella

se pueden diferenciar dos compuestos químicos que tengan la misma fórmula

molecular, pero distinta estructura. Como es también de gran importancia para

nuestra área, Informática, ya que a través de los grafos se pueden estudiar las

estructuras de redes en Internet, redes neuronales, análisis de los diferentes algoritmos

ya existentes, manejo de las estructuras de datos, la creación de los diferentes

sistemas operativos manejados hoy en día, entre otras aplicaciones.

Esta disciplina fue creada por el respetado matemático Leonhard Euler nacido el 15

de abril de 1707 en Brasilea, Suiza, y fallecido el 18 de septiembre de 1783 en San

Petersburgo. Quien es considerado como el principal matemático del siglo XVIII y

como uno de los más grandes de todos los tiempos.

Euler Vivió en Rusia y Alemania la mayor parte de su vida y realizó múltiples aportes

a la matemática, siendo uno de los más importantes la teoría de grafos, en 1736 con el

trabajo de los puentes de Konigsberg que fue considerado el primer resultado de

dicha disciplina.

Dicho problema consistía en que existen dos islas en el Rio Pregel en tierras de

Konigsberg, y que existen 7 puentes que se cruzan entre dichas islas, por lo cual

Euler se pregunto ¿Es posible dar un paseo empezando por cualquiera de las cuatro

Page 14: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

12

partes de tierra firme, cruzando cada puente una sola vez y volviendo al punto de

partida?

=

FIGURA 1. PUENTE DE KONIGSBERG Y SU REPRESENTACIÓN EN

GRAFOS

Euler enfocó dicho problema representando cada parte de tierra por un punto y cada

puente, por una línea. Al final de esto se llega a la misma pregunta ¿Se podrá recorrer

todas las líneas del dibujo terminando en el mismo punto de partida sin repetir las

líneas?

Euler demostró que no era posible puesto que el número de líneas que inciden en cada

punto no es par, (condición necesaria para entrar y salir de un mismo punto). Así

nació la teoría de grafos.

También existieron otros trabajos que influyeron en su desarrollo, como el de Gustav

Kirchhoff, quien publicó sus leyes de los circuitos para calcular el voltaje y la

corriente en los circuitos eléctricos; en éste se estudiaron los grafos conexos de

medida mínima, es decir, sin ciclos (árboles) con el objetivo de desarrollar un método

efectivo para el análisis de redes eléctricas entendido dicho análisis como el cálculo

de la intensidad y la diferencia de potencial de cada elemento de la red (resistencia,

bobina, condensador, fuente de tensión, etc.). En realidad conocidas las características

físicas de un elemento (resistencia, inductancia o capacidad, según corresponda) las

Page 15: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

13

dos variables Jk(t) y Vk(t) están relacionadas por una ley física (Ohm, etc.). Además,

por el hecho de estar interconectados deben cumplir los postulados conocidos como

leyes de Kirchhoff :

La suma algebraica de las intensidades (corrientes) asociadas a los arcos incidentes a

un vértice dado ha de ser 0 (CP). (No se acumula intensidad en ningún nodo).

La suma algebraica de los voltajes asociados a los arcos de cualquier ciclo ha de ser

0 (VP). (La diferencia de potencial ha de ser 0).

El término “suma algebraica" tiene el significado siguiente:

(CP): se suma [resta] si corresponde a un arco adyacente desde [hacia] el vértice en

cuestión;

(VP): se asigna una orientación arbitraria al ciclo y, según esta, se suma [resta] un

voltaje si la orientación del arco asociado coincide [difiere] con la del ciclo.

Modelización: Imponiendo dichos postulados a cada uno de los nodos y ciclos del

grafo que modela la red eléctrica se obtiene un sistema de ecuaciones lineales a

solucionar. El trabajo de Kirchhoff consistió en determinar un sistema equivalente y

reducido de dichas ecuaciones. Tal reducción se obtiene considerando únicamente las

ecuaciones asociadas a un sistema fundamental de ciclos y cortes asociados a un árbol

generador del grafo subyacente que, en total, da lugar a un sistema de tantas

ecuaciones lineales como elementos eléctricos. Dado un árbol generador T de un

grafo G de orden n, un ciclo fundamental asociado a T se obtiene añadiendo a T una

arista de G no perteneciente a T. De este modo pueden obtenerse m - (n - 1) ciclos

distintos, donde m es la medida de G. Por otro lado, un corte fundamental está

formado por el conjunto de arcos que unen pares de vértices situados en las dos

componentes conexas que resultan de suprimir en el árbol generador una de sus

aristas. Así, en total, hay n - 1 conjuntos de corte fundamentales.

Page 16: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

14

EL PROBLEMA DE LOS CUATRO COLORES

En 1852 Francis Guthrie escribió una carta a su hermano Frederick, discípulo de

Augustus de Morgan, preguntándole si sería posible demostrar matemáticamente que

son suficientes cuatro tintas para colorear cualquier mapa de forma que países con

frontera común tengan asignados colores distintos. Al hablar de “países vecinos",

Guthrie debió pensar en países adyacentes a lo largo de una línea fronteriza común ya

que si se permitiesen fronteras reducidas a un punto, como ocurre con los distintos

trozos en los que se divide un pastel, serían necesarios tantos colores como países.

Por otro lado, por “país" debieron entender una “región conexa" ya que si no fuera así

habría mapas pentacromáticos.

Augustus de Morgan probó que no es posible que cinco países estén situados de

modo que cada país tenga frontera común con cada uno de los otros cuatro. Ahora

bien, en general, del hecho que en un determinado mapa se observe que no puede

haber k países adyacentes dos a dos no puede deducirse que pueda pintarse con k

colores.

En 1878 Arthur Cayley, incapaz de probar o refutar la conjetura de los cuatro colores,

presentó el problema a la London Mathematical Society. Antes de transcurrir un año,

Alfred Kempe (abogado y miembro de la sociedad) publicó un artículo en el que

hablaba de haber demostrado la conjetura de los cuatro colores.

Aunque la demostración de Kempe resultó ser incompleta ésta contenía la mayor

parte de las ideas fundamentales que posteriormente serían utilizadas por Appel y

Haken.

Noción de mapa normal: es aquélla donde ningún país engloba otros países y donde,

además, nunca hay más de tres países que tengan un punto común.

Page 17: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

15

Kempe demostró que era suficiente probar la conjetura de los cuatro colores para los

mapas normales ya que si hubiera un mapa que precisara de cinco colores, entonces

también habría un mapa pentacromático normal. También se percató que era

suficiente trabajar con mapas normales minimales, en el sentido que contienen el

mínimo número de países. Así, pues, el esquema de la demostración de Kempe

consistía en suponer la existencia de un mapa pentacromático normal y minimal y

concluir de ella una contradicción.

Kempe demostró primero que todo mapa normal debe tener un país con cinco, o

menor número, de países vecinos (en términos de grafos, a cada mapa normal se le

puede asociar un grafo plano (grafo dual) cuyas caras serán triángulos y, como grafo

plano, debe tener al menos un vértice de grado menor o igual que cinco). De aquí

dedujo que el conjunto de configuraciones (un país tiene dos vecinos, tres vecinos,

cuatro vecinos o cinco vecinos) es “inevitable" en cuanto todo mapa normal debe

contener alguna de ellas. Entonces su objetivo era probar que cada una de estas

configuraciones era también “reducible" en el sentido que si un mapa pentacromático

minimal contenía una de ellas, entonces habría un mapa pentacromático con menor

número de países, lo cual es absurdo. Su demostración es incompleta ya que la prueba

que presenta para el caso de la configuración de un país con cinco vecinos es

incorrecta. (De alguna manera puede decirse que la demostración de Appel y Hakel

corrige esta deficiencia analizando, mediante un programa informático, unas 1500

configuraciones).

En 1890, once años después de publicarse la demostración de Kempe, John

Heawood señaló que el razonamiento dado por Kempe para justificar la

imposibilidad de mapas pentacromáticos minimales en los cuales hubiese un país con

cinco vecinos era insuficiente y, además, su arreglo parecía harto difícil. Heawood se

planteó el problema de la coloración de un mapa en otras superficies (además del

plano y la esfera) y obtuvo cotas superiores para el número mínimo de colores

necesarios. Sin embargo sus razonamientos no podían aplicarse en el caso del plano.

Heinrich Heesch (1936) parece haber sido el primer matemático que con

Page 18: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

16

posterioridad a Kempe haya afirmado públicamente que la conjetura de los cuatro

colores podría demostrarse encontrando un conjunto de configuraciones inevitables y

reducibles. Heesch utilizó un método muy conveniente para la representación de

configuraciones. Esta representación se conoce hoy como el grafo dual del mapa

original. Dicho grafo (plano) se obtiene considerando como vértices las capitales de

los distintos países y como aristas las trazas que unen las capitales correspondientes a

países vecinos y que cortan la frontera común. Así, asociado a un mapa normal

tenemos un grafo plano cuyas caras son triángulos. Por otro lado, con el objetivo de

hallar configuraciones inevitables, Heesch introdujo un método que puede asimilarse

al desplazamiento de cargas eléctricas de una malla.

Kenneth Appel y Wolfgang Haken, de la universidad de Illinois, en enero de

1976 comenzaron la construcción de un conjunto inevitable de configuraciones

reducibles utilizando un nuevo proceso de descarga. En junio de 1976, después de

1200 horas de funcionamiento de tres ordenadores distintos, terminaron la

construcción. Los revisores de su trabajo, presentado en el Illinois Journal of

Mathematics, “comprobaron" los cómputos de irreductibilidad mediante un

programa independiente. Según, Appel y Haken, su demostración sugiere que existe

un límite por que se puede conseguir con métodos puramente teóricos, incluso en el

campo de las matemáticas y pone de relieve que en el pasado se había subestimado el

uso de métodos computacionales en las demostraciones matemáticas.

FIGURA 2. EJEMPLO GRAFICO DEL PROBLEMA DE LOS CUATRO

COLORES

Page 19: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

17

Estos trabajos desarrollados por dichos matemáticos fueron de gran importancia ya

que dieron inicio a lo que miraremos en todo el transcurso del trabajo que lo

llamaremos teoría de grafos y aplicaciones informáticas.

6 REPRESENTACIÓN DE GRAFOS EN PROGRAMAS.

Hay tres maneras de representar un grafo en un programa: mediante matrices,

mediante listas y mediante matrices dispersas.

Representación mediante matrices: La forma más fácil de guardar la información de

los nodos es mediante la utilización de un vector que indexe los nodos, de manera que

los arcos entre los nodos se pueden ver como relaciones entre los índices. Esta

relación entre índices se puede guardar en una matriz, que llamaremos de adyacencia.

Ejemplo de matriz de adyacencia:

A C

B

FIGURA 3. Representación de un grafo dirigido.

Para la representación de la matriz se utilizara la siguiente condición:

0 el vértice i está conectado con el vértice j.

aij= -1 el vértice i no está conectado con el vértice j.

Page 20: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

18

A B C

A -1 0 0

B -1 -1 0

C -1 -1 -1

TABLA 1. Representación de la FIGURA 3 a través de una matriz de adyacencia.

Representación mediante listas: En las listas de adyacencia lo que haremos será

guardar por cada nodo, además de la información que pueda contener el propio nodo,

una lista dinámica con los nodos a los que se puede acceder desde él. La información

de los nodos se puede guardar en un vector, al igual que antes, o en otra lista

dinámica.

FIGURA 4. Representación de la FIGURA 3 mediante listas.

Representación mediante matrices dispersas: Una matriz dispersa es una matriz de

grandes dimensiones (la cual puede aceptar muchos elementos), dichas matrices son

de gran importancia en la teoría de grafos, ya que si tenemos que representar un área

de red amplia, existirán muchos elementos, la cual utilizando una lista de adyacencia

o una matriz normal pueda que no se guarden todos sus elementos por esto se crearon

dichas matrices para no tener estos problemas en cuanto al manejo de información.

A B C

Page 21: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

19

7 TÉRMINOS CLAVE

Arista no dirigida: una arista asociada al conjunto {u, v}, donde u y v son vértices.

Arista dirigida: una arista asociada al par ordenado (u, v), donde u y v son vértices.

Aristas múltiples: aristas distintas conectando a los mismos vértices.

Bucle: una arista que conecta a un vértice consigo mismo.

Grafo no dirigido: un conjunto de vértices junto con un conjunto de aristas no

dirigidas que conectan a estos vértices entre si.

Grafo simple: un grafo no dirigido sin bucles ni aristas múltiples.

Grafo dirigido: un conjunto de vértices junto con un conjunto de aristas dirigidas que

conectan a estos vértices entre si.

Multigrafo dirigido: un grafo con aristas dirigidas que puede tener aristas dirigidas

múltiples.

Adyacente: dos vértices son adyacentes si hay una arista entre ellos.

Incidente: una arista es incidente con un vértice, si el vértice es un extremo de la

arista.

δ(v) (grado del vértice v de un grafo no dirigido): el número de aristas incidentes con

v.

δ+(v) (grado de salida del vértice v de un grafo dirigido): el número de aristas que

tienen a v como vértice inicial.

δ-(v) (grado de entrada del vértice v de un grafo dirigido): el número de aristas que

tienen a v como vértice final.

Grafo bipartito: un grafo cuyo conjunto de vértices esta dividido en dos subconjuntos

V1 y V2 tales que cada arista del grafo conecta un vértice de V1 con un vértice de V2.

Vértice aislado: un vértice de grado cero.

Hoja: un vértice de grado uno.

Grafo regular: un grafo en el que todos los vértices tienen el mismo grado.

Page 22: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

20

Subgrafo de un grafo G = {V, E}: un grafo (W, F) tal que W es subconjunto de V y F

es subconjunto de E.

8 DEFINICIONES

DEFINICIÓN1: Vértice

Un vértice es la unidad fundamental de la que están formados los grafos. Los vértices

son tratados como un objeto indivisible y sin propiedades, aunque puedan tener una

estructura adicional dependiendo de la aplicación por la cual se usa el grafo; por

ejemplo, una red semántica es un grafo en donde los vértices representan conceptos o

clases de objetos.

tiene

EMPRESA EMPLEADOS

Tiene pertenecen

DEPARTAMENTOS

FIGURA 5. Representación de una red semántica.

DEFINICIÓN 2: Grafo

Un grafo simple G= {V, E} consta de V, un conjunto no vacío de vértices, y de E, un

conjunto de pares no ordenados de elementos distintos de V. A estos pares se les

llama arista. A continuación podemos dar una representación de lo que es un grafo:

Page 23: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

21

V1 arista V2

V3 V4

FIGURA 6.Representación de un grafo no dirigido de 2 vértices y una arista

DEFINICIÓN 3: Subgrafo

Un subgrafo de un grafo G es un grafo cuyos conjuntos de vértices y aristas son

subconjuntos de los de G. Se dice que un grafo G contiene a otro grafo H si algún

subgrafo de G es H o es isomorfo a H (dependiendo de las necesidades de la

situación)

El subgrafo inducido de G es un subgrafo G' de G tal que contiene todas las aristas

adyacentes al subconjunto de vértices de G.

DEFINICIÓN 4: Aristas dirigidas y no dirigidas

Las aristas son las uniones entre vértices.

En algunos casos es necesario asignar un sentido a las aristas, por ejemplo, si se

quiere representar la red de las calles de una ciudad con sus direcciones únicas. El

conjunto de aristas será ahora un subconjunto de todos los posibles pares ordenados

de vértices, con (a, b) ≠ (b, a). Los grafos que contienen aristas dirigidas se

denominan grafos orientados, como el siguiente:

A contiene a B

FIGURA 7. Grafo dirigido.

A B

FIGURA 8. Grafo no dirigido.

Page 24: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

22

Las aristas no orientadas se consideran bidireccionales para efectos prácticos

(equivale a decir que existen dos aristas orientadas entre los nodos, cada una en un

sentido).

a c b

d e

FIGURA 9. Representación de grafo dirigido.

En la FIGURA 9 V = {a, b, c, d, e} y A = {(a, c), (d, a), (d, e), (a, e), (b, e), (d, b)}.

Se considera la característica de "grado" (positivo o negativo) de un vértice v (y se

indica como (v)), como la cantidad de aristas que llegan o salen de él; para el caso de

grafos no orientados, el grado de un vértice es simplemente la cantidad de aristas

incidentes a este vértice. Por ejemplo, el grado positivo (salidas) de d es 3, mientras

que el grado negativo (llegadas) de d es 0.

DEFINICIÓN 5: Multigrafo

Un multigrafo G= {V, E} consta de un conjunto V de vértices, un conjunto de E

aristas y una función f de E en {{u, v} |u, v € V, u≠v}. Se dice que las aristas e₁ y e₂

son aristas múltiples o paralelas su f(e₁)= f (e₂).

Page 25: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

23

V4

V3

V1 V2

FIGURA 10. Representación de un multigrafo no dirigido de 4 vértices y 5 aristas

Como podemos ver en el anterior grafo V1,V2, V3, Y V4 tienen más de una arista

que conectan un mismo vértice a eso se le denomina un multigrafo.

Cuando hay mucho tráfico de información en diferentes servidores, es importante

tener varias líneas telefónicas simples esto se hace para que el flujo de información

que se este mandando quepa en varias líneas telefónicas (modelo multigrafo), ya que

si se esta mandando mucha información en los diferentes servidores y se toma una

sola línea telefónica (grafo simple), pueda que esa línea no tenga la capacidad

suficiente para mandar toda la información necesaria en consecuencia traerá perdida

de información y por lo cual hay una inestabilidad en las redes ya que no esta

mandando toda la información necesaria.

Como podemos ver en el anterior grafo si tomamos que los servidores son los vértices

y las líneas telefónicas son las aristas y se esta enviando un flujo de información

grande en V1 a V2, como podemos ver, V1 y V2 están utilizando dos aristas o sea

dos líneas telefónicas por lo que se esta enviado un flujo de información grande, pero

si podemos ver en V2 a V4 o V2 a V3 se esta enviando un flujo de información

pequeño por lo que nada más es necesario utilizar una sola arista en el cual representa

una sola línea telefónica.

Por lo tanto una forma de manejar redes entre servidores para el manejo de mucha

información es utilizando un modelo de multigrafos.

Page 26: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

24

DEFINICION 7: Pseudografo

Un pseudografo G= {V, E} consta de un conjunto V de vértices, un conjunto E de

aristas y una función f de E en {{u, v}| u, v € V}. Una arista e es un bucle, o lazo, si

f(e) = {u, u} = {u} para algún u € V.

V1 V2

V4

V3

FIGURA 11.Representación de un pseudografo de 4 vértices, 5 aristas y 3 bucles

Como podemos ver en la FIGURA11, V1, V3 Y V4 tienen aristas conectadas

consigo mismo. Ese tipo de conexiones se llama bucles, por lo tanto aquellos grafos

que tengan bucles en sus vértices son denominados pseudografos.

Una aplicación que puede ser manejada con este tipo de grafo puede ser también las

redes entre servidores. Ya que pudimos arreglar el problema cuando uno quiere

enviar un flujo de información grande poniendo más líneas telefónicas y en la cual es

representado con un multigrafo, pero que pasaría con la información que no pudo ser

enviada o que se perdió en el momento del envio; para eso tocaría volver a reenviar

la información y utilizar un modelo de multigrafo no será la mejor forma, ¿ pues

cómo vamos a saber nosotros que un servidor va a volver a reenviar dicha

información?; la mejor forma de estar seguro de que dicha información va ser

enviada es utilizando bucles en cada servidor para que cuando se pierda una

información lo que haga dicho bucle es reenviar dicha información que se perdió y

así podemos controlar el manejo de información sin pérdida y eso lo vamos a poder

hacer a través del pseudografo.

Page 27: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

25

Vemos que en la FIGURA 11, V1, V3, V4 tienen bucles; dichos bucles están

puestos en los vértices para saber que si hay una pérdida de información, a ellos les

toque volver a retransmitir dicha información.

DEFINICIÓN 8: Grafo Dirigido

Un grafo dirigido (V, E) consta de un conjunto V de vértices y de un conjunto E de

aristas, que son pares ordenados de elementos de V.

V2

V1 Arista con dirección

FIGURA 12. Representación de un grafo dirigido compuesto de 2 vértices y una

arista

Utilizando la misma aplicación de comunicación entre servidores, usando un diseño

de grafo dirigido podemos ver que el servidor 1 (V1), puede enviarle un flujo de

información al servidor 2 (v2), pero el servidor 2 no puede enviarle un flujo de

información al servidor 1, porque como podemos ilustrar la arista es dirigida por lo

que la línea telefónica es manejada unidireccionalmente (SIMPLEX).

Las aplicaciones que se pueden manejar utilizando grafos dirigidos pueden servir de

mucha ayuda para la comunicación entre servidores, esto se da porque en las

comunicaciones es fundamental utilizar la transmisión de medio SIMPLEX y HALF-

DUPLEX que es intentar comunicar servidores de manera unidireccional y la mejor

forma de hacerlo es utilizando un diseño de grafos dirigidos.

Page 28: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

26

DEFINICIÓN 9: Multigrafo Dirigido

Un multigrafo dirigido G= (V, E) consta de un conjunto V de vértices, un conjunto E

de aristas y una función f de En E= {(u, v) | u, v€ V}. Se dice que la aristas e₁ y e₂ son

aristas múltiples si f (e₁)= f (e₂).

V2

V1 e3 e5

e4

e6

e1 e2 V5

V4 e7

e8

V3

FIGURA13. Representación de un multígrafo dirigido

El anterior diseño de multigrafo puede ser aplicativo también en redes entre

servidores cuando se quiere enviar un flujo de información grande de manera

unidireccional, como ilustramos anteriormente V1, V2, y V5 necesitan enviar gran

cantidad de flujo de información de manera unidireccional hacia los servidores V3,

V2, y V1 para eso la mejor forma de hacer dicho diseño es utilizando un multigrafo

dirigido.

DEFINICIÓN 10: Pseudografo dirigido

Un pseudografo dirigido es un grafo G= {V, E} donde V≠Ѳ y E es subconjunto VxV

es un conjunto de pares ordenados y etiquetados de elementos de V.

Es decir, un pseudografo dirigido es un grafo dirigido que acepte bucles en E.

Page 29: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

27

V1

V3

V2

FIGURA 14. Representacion de un pseudografo dirigido

NOTA: Es importante que para hacer un buen diseño en teoría de grafos para

aplicaciones informáticas se necesita que las terminologías explicadas anteriormente

estén bien entendidas para eso se mostrara una tabla resumida con las terminologías

ya explicadas, con el fin de tener un mejor entendimiento en la hora de querer hacer

diseños para manejos aplicativos a través de los grafos.

TERMINOLOGIA EN TEORIA DE GRAFOS

Tipos

Aristas

¿Se admite

aristas

múltiples?

¿Se admiten

bucles?

Grafo simple

Multigrafo

Pseudografo

Grafo dirigido

Multigrafo

dirigido

Pseudografo

dirigido

No dirigido

No dirigido

No dirigido

Dirigido

Dirigido

Dirigido

No

Si

Si

No

Si

Si

No

No

Si

Si

No

Si

TABLA 2. TERMINOLOGIA EN TEORIA DE GRAFOS

Page 30: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

28

DEFINICIÓN 11: Se dice que dos vértices u y v de un grafo no dirigido G son

adyacentes (o vecinos) en G si {u, v} es una arista de G. Si e = {u, v}, se dice que la

arista e es incidente con los vértices u y v. también se dice que la arista e conecta a u

y v. se dice que los vértices u y v son extremos de la arista e.

DEFINICIÓN 12: El grado de un vértice de un grafo no dirigido es el número de

aristas incidentes con él, exceptuando los bucles, cada uno de los cuales contribuye

con dos unidades al grado del vértice. El grado de un vértice se denota por δ(v).

DEFINICIÓN 13: Si (u, v) es una arista del grafo dirigido G, se dice que u es

adyacente a v y que v es adyacente desde u. Al vértice u se le llama vértice inicial de

(u, v) y a v se le llama vértice final o Terminal de (u, v). Los vértices iníciales y

Terminales de un bucle coinciden.

DEFINICIÓN 14: En un grafo dirigido, el grado de entrada de un vértice v, denotado

por δ‾(v), es el numero de aristas que tiene a como vértice final. El grado de salida de

un vértice v, denotado por δ+(v), es el numero de aristas que tiene a como vértice

inicial.

DEFINICIÓN 15: La unión de dos grafos simple G1 = (V1, E1 ) y G2= (V2, E2 ) es el

grafo simple cuyo conjunto de vértices es V1 U V2 y cuyo conjunto de aristas es E1 U

E2 . La unión de G1 y G2 se denota por G1 U G2. Ejemplo en el grafo de la FIGURA

14. δ‾(V1)=2 δ

+(V1) =2

Page 31: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

29

9 MODELOS CON GRAFOS

Los grafos se emplean en una gran variedad de modelos en diferentes áreas, en

nuestro caso mostraremos algunos modelos empleados en el área computacional:

Grafos de llamadas

Los grafos se pueden utilizar para representar las llamadas telefónicas hechas en una

red, por ejemplo en una red telefónica de larga distancia. En particular, puede usarse

un multigrafo dirigido para representar llamadas: cada vértice representa un número

de teléfono y cada arista representa una llamada. La arista que representa una llamada

sale del número del teléfono desde el que se hace la llamada y llega al número de que

lo recibe.

En la siguiente FIGURA que ilustraremos, se muestra un pequeño grafo de llamadas

telefónicas que representa siete números de teléfono. Este grafo muestra, por ejemplo,

que se han hecho cinco llamadas telefónicas desde el 732-555-1234 al 732-555-4444

a ninguno de los otros seis números, salvo al 732-555-0011. Cuando solo nos importa

si ha habido o no alguna llamada entre dos números, empleamos un grafo no dirigido

tal que una arista conecta dos números de teléfono si se ha hecho alguna llamada en

dichos números. Esta versión del grafo de llamadas la mostraremos a continuación.

Page 32: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

30

732-555-4444

732-555-1001

732-555-1234

732-555-0069

732-555-0011

732-555-9876

732-555-6666

FIGURA 15. Representación grafo de llamadas

Grafo de la Red

La red de Internet se puede representar mediante un grafo dirigido en el que cada

pagina Web esta representada por un vértice y en el que una arista comienza en la

pagina a y termina en la pagina b si hay un enlace en la pagina a que conduce a la

pagina b. Como cada segundo se crean paginas Web nuevas y otras desaparecen, hay

más de mil millones de vértices y decenas de miles de millones de aristas. Hay

muchas personas estudiando las propiedades del grafo de la red para entender mejor

la naturaleza de la red de Internet.

Grafos de precedencia y procesamiento concurrente

Los programas informáticos, más que todo para los Sistemas Operativos, pueden

ejecutarse más rápidamente si ciertas sentencias se ejecutan simultáneamente. Es

Page 33: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

31

importante no ejecutar sentencias que requieran el resultado de sentencias no

ejecutadas. La dependencia de sentencias con respecto a sentencias previas se puede

representar por medio de un grafo dirigido. Cada sentencia se representa por un

vértice, y hay una arista de un vértice a un segundo si la sentencia representada por el

segundo vértice no puede ejecutarse hasta la sentencia representada por el primero se

ha ejecutado. A este tipo de grafo se le llama grafo de precedencia. Por ejemplo, el

grafo nos dice que la sentencia S₅ no se puede ejecutar hasta que se ejecute S₁, S₂, y

S₄.

S6

S5

S3

S4

S1 S2

FIGURA16. Representación de un Grafo de procedencia

S1 a:= 0

S2 b:= 1

S3 c:= a+1 (necesita que s1 se ejecute para que s3 se ejecute)

S4 d:= b+a (necesita que s1 y s2 se ejecute para que s4 se ejecute)

S5 e:= d+1 (necesita que s4 se ejecute para que s5 se ejecute)

S6 f:= d+c (necesita que s4 y s3 se ejecuten para que s6 se ejecute)

Como pudimos ver anteriormente estos grafos son de gran ayuda para aplicaciones

que tengan que ver con el manejo de los sistemas operativos en las computadoras ya

Page 34: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

32

que pueden servir de mucho para el diseño de ejecución de programas para dicho

sistema.

Diseño de bases de datos

Los grafos también pueden ser de gran ayuda para el diseño de bases de datos en las

empresas; por ejemplo, una organización necesita saber información acerca de sus

empleados, de sus departamentos, y de los trabajos que hace cada empleado en los

departamentos. Para estos seria bueno hacer un diseño de una base de datos para que

así la empresa tenga una facilitación en saber acerca de todo lo que necesita, pero

para eso es necesario hacer el diseño de las bases de datos y una forma de poder

representarlos es a través de un grafo.

Para hacer un breve diseño en grafos de una base de datos conocer que información

acerca de sus empleados, departamentos y de los trabajos que hace cada empleado en

su departamento, sería conveniente representar los vértices como la información que

hay para los empleados, departamentos, y trabajos, y las aristas como la relación que

hay para cada una de ellas a continuación ilustraremos el diseño a través de un

multigrafo no dirigido.

Page 35: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

33

Empleados

Trabajos

Empresa

Departamentos

FIGURA 17. Representación de un multigrafo no dirigido para una organización.

Anteriormente ilustramos que a través de los grafos se pueden representar el diseño

de una base de datos para una empresa, como podemos ver existen vértices que los

llamamos empleados, trabajos, departamentos, y Empresa, los enlaces muestran la

comunicación que es impredecible para que la empresa tenga la capacidad de conocer

la información que más le interese.

10 APLICACIONES INFORMÁTICAS USANDO LA TEORÍA DE GRAFOS

Un sistema de adquisición de datos supervisa continuamente un cierto proceso físico,

para registrar su comportamiento, informar cambios significativos y enviar comandos

a un controlador de proceso.

Desde la perspectiva del programador, el sistema debe:

Recoger un paquete de datos desde los sensores y colocarlo en una memoria del

computador

Page 36: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

34

Una vez se tienen los datos, archivarlos en disco y efectuar un cálculo para identificar

el estado de funcionamiento.

Una vez calculado el estado, informar si se han detectado cambios significativos y

enviar comandos al controlador

Para aprovechar el paralelismo, el sistema se divide en cinco procesos, los cuales

efectúan las siguientes actividades:

R (recoger), G (guardar), C (calcular), I (imprimir) y E (enviar).

Si se necesitara recoger dos veces un paquete de datos desde un mismo sensor,

construir un grafo de precedencia, y mostrar el orden en que los procesos tienen que

ser ejecutados.

R1 R2

G2

G1

I1 I2

C2

C1 E1 E2

FIGURA 18. Representación de un grafo de precedencia.

R1 a:= 0* (Inician recogiendo un paquete de datos desde los sensores)

Page 37: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

35

G1 b:= a+1 (Guardan los datos que fueron recogidos)

C1 c:= a+1 (Calculan los datos que fueron recogidos)

I1 d:= a+c (Después de calcular el paquete de datos. Imprime lo que lleva hasta el

momento)

E1 e:= a+c (Enviar lo que se calculo del primer paquete de datos recogido, ya que

toca volver a recoger otro paquete de datos desde el sensor y no se puede perder lo

que se lleva hasta el momento)

R2 a1:= b+c (después de que haya calculado y guardado el paquete de datos anterior,

se puede volver a recoger el siguiente paquete de datos)

G2 b1:= a1+1 (vuelve otra vez a guardar lo que recoge de los sensores de datos)

C2 c1:= a1+1 (vuelve otra vez a calcular de lo que recogió hasta el principio)

I2 d1:= a1+c1 (ahora se imprime el total de lo que recogió)

E2 e1:= a1+c1 (vuelve a enviar el total que calculo, esto lo hace si le toca volver a

recoger en el sensor de datos).

(*) esta es la forma en que se representa un grafo de precedencia.

Las anteriores secuencias son manejadas en los sistemas operativos cuando se quieren

hacer varias impresiones en WORD simultáneamente.

Page 38: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

36

11 GRAFOS BIPARTITOS

DEFINICIÓN: Se dice que un grafo simple G es bipartito si su conjunto de vértices V

se puede dividir en dos conjuntos distintos V1 y V2 tales que cada arista del grafo

conecta un vértice de V1 con un vértice de V2 (de manera que no haya ninguna arista

que conecte entre si dos vértices de V1 ni tampoco dos vértices de V2).

11.1 APLICACIONES INFORMÁTICAS

Podemos encontrar aplicaciones informáticas con grafos bipartitos en la comparación

de archivos de computador, utilizando el problema de la Longest Common

Subsequence (LCS), en español Subsecuencia Común Más Larga , en el cual dadas

dos palabras X e Y sobre un alfabeto finito cualquiera, lo que pretende es encontrar

cuál es el largo máximo que puede tener una palabra que sea subsecuencia de X e Y

simultáneamente.

Por ejemplo, si consideramos X=matemáticas e Y=astronomía, una LCS (y en este

caso la única) es atmia. El largo de una LCS se usa comúnmente como criterio de

comparación de palabras, pues está relacionada con la cantidad de "pasos" necesarios

para ir de una palabra a la otra mediante operaciones de inserción, eliminación y

reemplazo de caracteres.

Vamos a visualizar un poco más el ejemplo. Todo par de palabras puede

representarse convenientemente como un grafo bipartito donde los arcos unen a los

caracteres coincidentes de ambas palabras.

X=matemáticas e Y=astronomía, el grafo que los representa sería:

Page 39: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

37

FIGURA 19. Representación de grafo bipartito.

Un matching en un grafo arbitrario (no necesariamente bipartito) es cualquier

conjunto de arcos que no comparten extremos; un PM es un matching en donde los

arcos no se cruzan ni comparten extremos. Así, calcular la LCS entre dos palabras no

es más que calcular el matching planar de costo máximo del grafo bipartito asociado

a dichas palabras, donde todos los arcos tienen costo igual a 1. Más aún,

aprovechando la generalidad que otorga ver el problema LCS como uno de matching,

se nos ocurren ideas nuevas que dan mayor alcance al concepto de comparación de

palabras: podemos, por ejemplo, agregar más arcos al grafo asociado a dos palabras

cuando los caracteres tengan cierta similitud o cuando compartan algún atributo, y

asociarle un costo menor al que tienen los arcos que unen caracteres iguales.

12 GRAFOS ISOMORFOS

DEFINICION

Dados G=(V,E) y G´=(V´,E´), se denomina isomorfismo de G a G´ a la aplicación

biyectiva f tal que para a, b ε V, {a,b}ε E se cumple {f(a),f(b)} ε E´. Es decir, la

aplicación que relaciona biyectivamente pares de vértices de E con pares de vértices

de E´, de modo que los vértices conectados por aristas siguen estándolo.

Page 40: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

38

INTRODUCCIÓN

Hay muchas maneras en las que los caminos y circuitos pueden ayudarnos a

determinar si dos grafos son o no isomorfos. Por ejemplo, la existencia de un circuito

simple de una longitud concreta es un invariante útil que se puede emplear a la hora

de mostrar que dos grafos no son isomorfos.

Además, podemos hacer uso de los caminos a la hora de construir posibles

isomorfismos.

Como ya hemos dicho, un invariante bajo isomorfismo es útil para grafos simples es

la existencia de un circuito simple de longitud k, siendo k un entero positivo mayor

que 2.

En este ejemplo, G y G´ se denominan isomorfos, y son matemáticamente iguales,

solo varia la apariencia, o sea, que se mantienen las adyacencias, estructura, caminos

y ciclos.

a c 1

2 3

b d

G 4 G‟

FIGURA 20. Ejemplo de grafos isomorfos.

Page 41: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

39

13 CONEXIÓN

INTRODUCCION

Hay muchos problemas que se pueden representar por medio de caminos que se

forman al ir recorriendo las aristas de un grafo. Por ejemplo, el problema de

determinar si se puede enviar o no un mensaje entre dos ordenadores usando enlaces

intermedios puede estudiarse utilizando un modelo de grafos. Los problemas de

planificar de forma eficiente las rutas de distribución de correo, de recogida de

basuras, los diagnósticos en redes de ordenadores y muchos otros pueden resolverse

utilizando modelos que involucran caminos definidos sobre grafos.

13.1 CAMINOS

De manera informal, un camino es una secuencia de aristas que comienza en un

vértice del grafo y recorre ciertas aristas del grafo siempre conectando pares de

vértices adyacentes. En la definición 1 se da una definición formal de los caminos, así

como cierta terminología relacionada con ellos.

DEFINICION 1

Sea n un entero no negativo y sea G un grafo no dirigido. Un camino de longitud n de

u a v en G es una secuencia de n aristas a₁ a₂,…, an de G tal que f(a₁)= {x₀, x₁}, f(a₂)=

{x₁, x₂},…, f(an){xn-1, xn}, donde x0 = u y xn = v. (Ya que el enumerar estos vértices

determina el camino de forma única).

El camino es un circuito si comienza y termina en el mismo vértice, esto es, si

u=x0=xn=v, y tiene longitud mayor a cero. Se dice que el camino circuito pasa por los

Page 42: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

40

vértices x0, x₁ x₂,…, xn o también que recorre las aristas a₁ a₂,…, an. Un camino o

circuito es simple si no contiene la misma arista más de una vez.

Cuando no es necesario distinguir entre aristas múltiples, denotaremos el camino a₁

a₂,…, an, donde f(a₁) = {xi-1, xi} para i= 1, 2, …, n. Por su secuencia de vértices x₀, x₁,

xn. Esta notación identifica un camino mediante los vértices por los que pasa, puede

haber más de un camino que pase por esa secuencia de vértices. Nótese que un

camino de longitud cero consiste en un único vértice.

EJEMPLO

En el grafo simple que mostraremos en la siguiente FIGURA a, d, c, f, e es un camino

simple de longitud 4, ya que {a, d}, {d, c}, {c, f} y {f, e} son aristas. Sin embargo, d,

e, c, a no es un camino, ya que {e, c}, no es una arista. Nótese que b, c, f, e, b es un

circuito de longitud 4, ya que {b, c}, {c, f}, {f, e} y {e, b} son aristas, y este camino

comienza y termina en b. El camino a, b, e, d, a, b, que tiene longitud, no es simple,

ya que contiene dos veces la arista {a, b}.

a b c

d e f

FIGURA 21. Representación de un grafo simple

Page 43: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

41

DEFINICION 2

Sean n un entero no negativo y G un multigrafo dirigido. Un camino de longitud n de

u a v en G es una secuencia de aristas a₁, a₂,…, an de G talque f (a₁)= (x₀, x₁), f

(a₂)=(x₁, x₂),…, f(an)= (xn-1, xn), donde x₀= u y xn= v. Si no hay aristas múltiples en

el grafo dirigido, denotamos este camino por su secuencia de vértices x₀, x₁,…, xn. Un

camino de longitud mayor que cero que comienza y termina en el mismo vértice es un

circuito. Se dice que un camino o circuito es simple sino contiene la misma arista más

de una vez.

Nótese que el vértice final de una arista de un camino es el vértice inicial de la

siguiente arista del camino. Cuando no es necesario distinguir entre aristas múltiples,

denotaremos el camino a₁, a₂,…, an, donde f(ai)= (xi-1, xi) para i= 1, 2, …, n por su

secuencia de vértices x₀, x₁, …, xn. Esta notación identifica un camino mediante los

vértices por los que pasa. Puede haber más de un camino que pase por esa secuencia

de vértices.

Los caminos representan información útil en muchos modelos de grafos.

13.2 CONEXIÓN EN GRAFOS NO DIRIGIDOS

¿Cuándo tiene una red informática la propiedad de que dos ordenadores cualesquiera

pueden compartir información si pueden enviarse mensajes a través de uno o más

ordenadores intermedios? Si se utiliza un grafo para representar esta red informática,

con los vértices representando ordenadores y las aristas representando enlaces de

comunicación, la pregunta se convierte en la siguiente: ¿Bajo que condiciones existe

siempre un camino entre dos vértices cualesquiera del grafo?

Page 44: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

42

DEFINICION 3

Se dice que un grafo no dirigido es conexo si hay un camino entre cada par de

vértices distintos del grafo.

Se quiere diseñar una red informática, en la cual existen cinco servidores que quieren

enviar información para todos ellos, pero se busca que no pueda existir perdida de

información para ningún servidor que este enviando datos.

FIGURA 22. Representación de un grafo conexo

FIGURA 23. Representación de un grafo no conexo

En las FIGURAS ilustradas anteriormente, se quiere mostrar que si existen 5

servidores que quieren enviarse un flujo de información para una red informática, si

es tomada la primera FIGURA en la cual se representa un grafo conexo, todos los

servidores pueden enviar dicha información a los otros servidores, pero si se toma la

segunda FIGURA en donde se representa un grafo no conexo, no es posible

representar una red informática para enviar información entre servidores, ya que para

los servidores 4 y 5 seria imposible enviar información hacia los servidores 1, 2 y 3

por lo que no hay aristas o conexiones que conecten a los servidores 4 y 5, en tal

Page 45: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

43

caso no es posible representar dicho grafo como una red informática ya que la gracia

es que haya siempre conexión para todos los servidores.

Por lo tanto para manejos de redes informáticas para hacer diseños en grafos seria

bueno representarlo a través de los grafos conexos.

Un modelo que puede ser utilizado para grafos conexos puede ser:

COMPONENTES CONEXAS DEL GRAFO DE LLAMADAS: Dos vértices están

en la misma componente conexa de un grafo de llamadas telefónicas si hay una

secuencia de llamadas telefónicas que comience en x y termine en y. En cierta

ocasión se analizó el grafo de llamadas de las llamadas telefónicas realizadas a lo

largo de un día concreto en la red de AT&T en estados unidos con el siguiente

resultado: El grafo tenia 53.767.087 vértices, más de 170 millones de aristas y más

de 3.7 millones de componentes conexas. La mayor parte de estas componentes eran

pequeñas: aproximadamente tres cuartas partes de ellas representaban pares de

números de teléfono que solo se habían llamado entre sí. El grafo tenía una

componente conexa gigantesca con 44.989.297 vértices, que comprendía más de 80%

del total. Además, cada vértice de esta componente podía conectarse con cualquier

otro vértice por medio de un camino de no más de 20 llamadas.

13.3 CONEXIÓN EN GRAFOS DIRIGIDOS

Hay dos nociones en grafos dirigidos, dependiendo de si se considera o no la

dirección de las aristas

Page 46: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

44

DEFINICION 4

Se dice que un grafo dirigido es fuertemente conexo si hay un camino de a a b y un

camino de b a a para cualesquiera dos vértices a y b del grafo.

DEFINICION 5

Se dice que un grafo es dirigido es débilmente conexo si hay un camino entre cada

dos vértices del grafo no dirigido subyacente.

LAS COMPONENTES FUERTEMENTE CONEXAS DEL GRAFO DE RED: El

grafo de red que introdujimos anteriormente en donde se estaba representado la

pagina Web por medio de vértices y los enlaces por medio de aristas dirigidas. Una

instantánea de la red produjo en 1999 un grafo con más de 200 millones de vértices y

más de 1500 millones de aristas. El grafo no dirigido subyacente a este grafo no es

conexo y tiene una componente no conexa que incluye aproximadamente al 90% de

los vértices del grafo. El subgrafo del grafo dirigido original que corresponde a esta

componente conexa del grafo no dirigido subyacente (esto es, el subgrafo con los

mismos vértices y con todas las aristas dirigidas que conectan entre sí a los vértices)

tiene una sola componente fuertemente conexa muy grande y muchas otras pequeñas.

A la primera se le llama componente fuertemente conexa gigantesca (también

conocida GSCC, gigant strongly connected component) del grafo dirigido. Puede

llegarse a una página Web de esta componente siguiendo enlaces que comiencen en

cualquier otra página de la misma componente. La GSCC del grafo de la red que se

encontró en este estudio tenía más de 53 millones de vértices. Los restantes vértices

de la componente conexa grande del grafo no dirigido corresponden a tres tipos

distintos de página Web: páginas a las que se llega desde una página de la GSCC,

pero desde las que no se puede regresar a dicha página; se llega desde una página de

la GSCC siguiendo una serie de enlaces, pero a las que no se puede llegar siguiendo

enlaces a partir de ninguna página de la GSCC ni tampoco se puede llegar a ninguna

página de la GSCC partiendo de ellas. En el estudio se estimo que cada uno de estos

Page 47: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

45

tres conjuntos tenía aproximadamente 44 millones de vértices (es bastante

sorprendente que estos tres conjuntos sean de tamaños tan parecidos).

13.4 APLICACIONES INFORMATICAS PARA LA CONEXIÓN ENTRE

GRAFOS

El manejo de caminos entre grafos puede ser fundamental para muchas aplicaciones

informáticas, una de ellas puede ser la seguridad para las bases de datos de una

empresa, por ejemplo, si una empresa quiere darle funciones a diferentes

departamentos para el manejo de inserción, eliminación y actualización de los

diferentes empleados que trabajan para cada departamento, una forma de hacerlo es

haciendo un diseño utilizando grafos, a continuación se ilustrara un grafo que

funcione para lo que se pide.

E= Empresa

DS= Departamento de sistemas

DC= Departamento de contaduría

DG= Departamento para la gerencia

ES= Empleados para el departamento de sistemas

EC= Empleados para el departamento de contabilidad

EG= Empleados que hacen parte con la gerencia de la empresa

DS

ES

E DC EC

EG DG

Page 48: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

46

FIGURA 24. Representación de las funciones y departamentos de una empresa en un

grafo.

En el anterior grafo lo que se quiere ilustrar, es que es fundamental manejar bien los

caminos entre grafos, porque como podemos ver existe una empresa que puede

actualizar, insertar, eliminar sus departamentos, dichos departamentos solo pueden

insertar, actualizar, eliminar aquellos empleados que trabajen para este, por eso es que

en el diseño de este grafo se especifican los caminos que pueden existir, existen

caminos dirigidos entre E-DS, E-DC, y E-DG, con esto estamos especificando que la

empresa puede hacer con sus departamentos ya sea eliminar, actualizar o insertar

otro departamento. Para cada departamento que tiene dicha empresa existen caminos

entre DS-DE, DC-EC, y DG-EG, con esto cada departamento puede eliminar,

insertar o actualizar aquellos empleados que trabajen para dicho departamento, esto

es importante ya que cada departamento tiene un poder solo sobre los empleados que

le corresponden.

REDES DE COMUNICACIONES MOVILES

Podemos encontrar muchos tipos de aplicaciones de la teoría de grafos en el ámbito

de las redes de comunicaciones móviles, como por ejemplo bases de datos

electrónicas, desde las vías telefónicas hasta registros de e-mails. Un ejemplo

específico son los patrones de comunicación de millones de usuarios de teléfonos

móviles, los grafos permiten estudiar simultáneamente la estructura local y la global

de una sociedad en toda la red de comunicación, en las cuales se observan

acoplamientos entre la interacción fuertes y una red de la estructura local. La

FIGURA 24 intenta ilustrar la estructura de las redes de comunicaciones móviles en

torno a un individuo elegido al azar. Cada enlace representa la comunicación mutua

entre los usuarios de la red de comunicación, y todos los nodos que se muestran son

la distancia inferior a seis desde usuario seleccionado, marcado por un círculo en el

centro.

Page 49: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

47

FIGURA 25. Representación de la estructura de las redes de comunicaciones móviles

en torno a un individuo elegido al azar.

14 CAMINOS EULERIANOS Y HAMILTONIANOS

INTRODUCCION

Al principio nos habíamos preguntado ¿Si era posible movernos por las aristas de un

grafo comenzando de un vértice y volviendo a él después de haber pasado por cada

arista del grafo exactamente una vez?, Análogamente ahora nos preguntamos ¿Será

qué podemos desplazarnos por las aristas de un grafo comenzando en un vértice y

volviendo a él después de haber visitado cada vértice del grafo exactamente una vez?

Aunque estas preguntas parecen similares, la primera de ellas, que pregunta si el

grafo contiene lo que se llama un circuito euleriano , puede resolverse fácilmente

para cualquier grafo, mientras que la segunda cuestión, la de si el grafo contiene o no

lo que se llama un circuito hamiltoneano, es bastante difícil de resolver. En esta

sección analizaremos ambas preguntas y estudiaremos las dificultades que se

presentan a la hora de resolverlas.

Page 50: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

48

La FIGURA 26 muestra un diagrama del problema del Camino Hamiltoniano. El

objetivo es encontrar un camino que vaya del inicio hasta el final pasando por todos

los demás puntos una sola vez. Este problema es difícil para computadoras

convencionales (lógica serial) porque deben de intentar cada camino posible uno por

uno.

Es como tener una pila de llaves y tratar de ver cuál es la que entra en una cerradura.

Las computadoras convencionales son muy buenas para las matemáticas, pero malas

para problemas de tipo "llave en la cerradura".

Para esto se requiere de otro tipo de computadoras; esta fue la primera

implementación de una computadora basada en ADN, y el título quiere decir que un

problema que requiere buscar varias posibles soluciones (un problema combinatorio)

fue resuelto con moléculas (ADN).

Aún con su respectiva complejidad, las operaciones biológicas y matemáticas tienen

algunas similitudes:

La muy compleja estructura de un ser viviente es el resultado de aplicar operaciones

simples a la información inicial codificada en una secuencia de ADN (genes).

Todos los problemas matemáticos complejos se pueden reducir a operaciones

simples como la suma y la resta.

Por las mismas razones por las que el ADN fue supuestamente seleccionado para los

organismos vivientes como material genético, el ser estable y predecible en

reacciones, las cadenas de ADN también pueden ser usadas para codificar

información para sistemas matemáticos.

Las computadoras basadas en ADN pueden tratar todas las llaves al mismo tiempo

(masivamente paralelo) y por lo tanto son muy buenas para problemas de llave-en-

la-cerradura, pero mucho más lentas para problemas matemáticos simples como la

multiplicación. El problema del Camino Hamiltoniano fue escogido porque todos los

Page 51: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

49

problemas llave-en-la-cerradura pueden ser resueltos como problemas de Camino

Hamiltoniano.

FIGURA 26. Representación de un camino de Hamilton.

El siguiente algoritmo resuelve el problema del Camino Hamiltoniano, sin importar

el tipo de computadora usada:

Generar caminos aleatorios a través del grafo.

Quedarse solo con los caminos que empiezan en la ciudad inicio (a) y terminan en la

ciudad fin (G).

Como el grafo tiene 7 ciudades, quedarse solo con los caminos que tengan 7

ciudades.

Quedarse solo con los caminos que entran a todas las ciudades por lo menos una vez.

Cualquier camino que quede es una solución.

En síntesis, programar con ADN implica respetar algunos pasos:

Crear una secuencia de ADN única para cada ciudad (de A hasta G). Para cada

camino, por ejemplo, de A a B,

Crear una pieza de ADN que concuerde con la última mitad de A y la primera mitad

de B: Aquí el bloque rojo representa a la ciudad A, mientras que el bloque naranja

Page 52: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

50

representa a la ciudad B. El bloque mitad rojo mitad naranja que conecta a los otros

dos bloques, representa el camino de A a B.

En un tubo de ensayo, todas las diferentes piezas de ADN se conectarán unas con

otras al azar, formando caminos a través del grafo. Por peso, las secuencias de ADN

que tuvieran 7 "ciudades" de largo fueron separadas del resto. Una malla fue usada,

la cual permite que pasen rápidamente pedazos pequeños de ADN, mientras que los

segmentos más largos son frenados. El procedimiento usado en realidad permite

aislar las piezas que son precisamente de 7 ciudades de largo. La clave para resolver

el problema fue usar ADN para llevar a cabo los cinco pasos del algoritmo. Estos

bloques interconectados, pueden ser usados para modelar el ADN. Para asegurar que

las secuencias que quedan pasan por todas las ciudades, fueron usadas piezas

"pegajosas" de ADN unidas a magnetos para separar el ADN. Los magnetos fueron

usados para asegurar que el ADN deseado permanezca en el tubo de ensayo,

mientras que el ADN no requerido es removido. Primero, los magnetos se quedaban

con todo el ADN que pasa por la ciudad A en el tubo de ensayo, luego por B, luego

C, y D, y así sucesivamente. Al final, el ADN que permanece en el tubo fue aquél

que pasa por todas las ciudades. Todo lo que falta es secuenciar el ADN, revelando

el camino de A a B a C a D a E a F a G.

Al ADN tiende naturalmente a formar largas hélices dobles: Las dos hélices son

unidas por "bases", que serán representadas por bloques de colores. Cada base se une

solamente a otra base específica. En el ejemplo, cada bloque de color únicamente se

unirá con el mismo color. Por ejemplo, si solo se tuvieran bloques rojos, pudieran

formar una cadena larga como esta. Cualquier otro color no se unirá con el rojo.

Page 53: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

51

15 ALGORITMO DE DIJKSTRA

El algoritmo de dijkstra también conocido como ruta más corta; a partir de un vértice

determinado se obtienen todas las rutas más cortas hacia todos los demás vértices.

Los pasos a seguir para el algoritmo son:

1) Conocer el vértice de origen y el vértice de destino.

2) Marcar el vértice de origen y conocer a sus vecinos

3) Mirar los costos de las rutas hacia sus vecinos

4) Marcar el vecino de la ruta más corta

5) El vecino marcado se convierte en el nuevo vértice de origen

6) Hace paso 2 y 3

7) Comparar todas las rutas que hay de sus vecinos y no vecinos no marcados

que ya tengan costo asociado.

8) Obtener el vértice de costo mínimo asociado y marcarlo

9) Volver a el paso 2

EJEMPLO

Los resultados son obtenidos a partir del software ALGORITMOS VORACES.

Page 54: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

52

FIGURA 27. Ejemplo de solución del Algoritmo de Dijkstra

Vértice 1 2 3 4 5 6 7

Ruta - 1,2 1,3 1,4 1,3,5 1,3,6 1,3,5,7

Costo 0 9 7 8 10 12 18

TABLA 3. Tabla solución con rutas de Dijkstra, ejemplo de FIGURA 26.

PSEUDOCODIGO

DIJKSTRA (Grafo G, nodo_fuente s)

// inicializamos todos los nodos del grafo. La distancia de

cada nodo es infinita

// y los padres son NULL

for u ∈ V[G] do distancia[u] = INFINITO

padre[u] = NULL

distancia[s] = 0

//encolamos el nodo_fuente s

Encolar (cola, grafo)

mientras cola no es vacía do

// OJO: Se extrae el nodo que tiene distancia mínima y se

conserva la condición

// de Cola de prioridad

u = extraer_minimo(cola)

for v ∈ adyacencia[u] do if distancia[v] > distancia[u] + peso (u, v) do

distancia[v] = distancia[u] + peso (u, v)

padre[v] = u

16 ÁRBOLES

Intuitivamente, podemos visualizar árboles como una forma de organizar información

de forma jerárquica, con un único punto de entrada y una serie de caminos que van

abriéndose en cada punto hacia sus sucesores.

Page 55: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

53

Los árboles comenzaron a emplearse en 1857, cuando el matemático ingles Arthur

Cayley los utilizo para contar cierto tipo de componentes químicos. Desde ese

momento, los árboles se han empleado para resolver problemas de gran variedad en

diferentes disciplinas como lo son en la informática, biología, medicina etc.

FIGURA 28: Arthur Cayley

Estas estructuras de datos son particularmente importantes en la informática, Ya que

son usados para la creación de muchos algoritmos-

Los árboles se usan para crear algoritmos eficientes que localizan elementos en una

lista, también se pueden utilizar en algoritmos como el código de huffman, que

construyen códigos compresores eficientes, ahorrando costes en la transmisión de

datos y en su posterior almacenamiento (mas adelante se explicara con mas detalle el

código de huffman), también dichos árboles son de gran ayuda para la creación de

juegos como son el ajedrez, triqui entre otros que en si puede ayudar para crear

buenas estrategias ganadoras.

Page 56: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

54

En sí los árboles son estructuras de datos que están teniendo gran importancia en la

actualidad como en futuras generaciones, ya que gracias a dichas estructuras se

pueden construir algoritmos que tienen gran capacidad computacional.

17 INTRODUCCION A LOS ÁRBOLES

Desde un punto de vista formal (teoría de conjuntos), un árbol con raíz se puede

considerar como una estructura constituida por un conjunto, N, cuyos elementos se

denominan vértices, y una relación de orden parcial transitiva, —, definida sobre N, y

caracterizada por la existencia de un elemento mínimo (anterior a todos los demás)

único, la raíz y también un predecesor único para cada vértice p distinto de la raíz, es

decir, un vértice, q. También existen los arboles sin raíz, en cuales la raíz no esta

definida, en éste caso la raíz puede ser cualquiera de los nodos.

Y desde el punto de vista informal, un árbol es un grafo sin circuitos.

Los ascendientes de un vértice se definen como el conjunto formado por su

predecesor único y los ascendientes de éste, cuando estos existan.

Los descendientes de un vértice se definen como el conjunto formado por todos

aquellos nodos que lo tienen en su conjunto de ascendientes.

Esta estructura se puede considerar una estructura recursiva teniendo en cuenta que

cada vértice del árbol, junto con todos sus descendientes, y manteniendo la

ordenación original, constituye también un árbol o subárbol del árbol principal,

característica esta que permite definiciones simples de árbol, más apropiadas desde el

punto de vista de la teoría de tipos abstractos de datos, y, ajustadas, cada una de ellas,

al uso que se vaya a hacer de la noción de árbol.

Page 57: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

55

Raíz

Un árbol impone una estructura jerárquica sobre una colección de objetos. Es claro

decir que la utilización de árboles se presentan tanto dentro como fuera del área de

computación (índices de libros, árboles genealógicos, etc.); en Informática

constituyen una de las estructuras más utilizadas, con aplicaciones que van desde los

árboles sintácticos utilizados para la representación y/o interpretación de términos de

un lenguaje o expresiones aritméticas, pasando por los árboles de activación de

procedimientos recursivos, hasta la representación de datos que se desea mantener

ordenados con un tiempo de acceso relativamente bajo. En general, se usarán árboles

siempre que se quiera representar información jerarquizada, cuando esta converja en

un solo punto.

FIGURA 29: Representación de un árbol.

Page 58: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

56

18 ARBOL BINARIO

Un árbol binario es el que cumple que el subárbol izquierdo de cualquier nodo (si no

está vacío) contiene valores menores que el que contiene dicho nodo, y el subárbol

derecho (si no está vacío) contiene valores mayores.

Usos comunes de los árboles binarios son los árboles binarios de búsqueda, los

montículos binarios y codificación de huffman.

También seria importante definir que los Árboles Binarios según la teoría de grafos

vienen siendo grafos conexos, a cíclicos y no dirigidos tal que el grado de cada

vértice no es mayor a 3. De esta forma solo existe un camino entre un par de vértices.

FIGURA 30: Representación de un árbol binario

Es bueno tener las siguientes condiciones para tener bien definido un árbol binario en

la teoría de grafos. Estas serían:

- Un árbol binario es un árbol con raíz en el que cada vértice tiene como

máximo dos hojas.

- Un árbol binario lleno es un árbol en el que cada vértice tiene cero como

mínimo o dos hijos como máximo.

- Un árbol binario perfecto es un árbol binario lleno en el que todas las hojas

están a la misma profundidad.

- Un árbol binario perfecto es denominado árbol binario completo.

Page 59: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

57

En conclusión lo que podemos decir acerca de los Árboles Binarios es que son

árboles en los que ninguno de sus vértices puede tener más de dos sub-árboles. En un

árbol binario cada vértice puede tener cero, uno o dos hijos. Se conoce el vértice

izquierdo como hijo izquierdo y el vértice derecho como hijo derecho.

19 ALGORITMOS DE RECORRIDOS

Los procesamientos para el recorrido sistemático de los vértices de un árbol ordenado

con raíz se llaman algoritmos de recorrido de un árbol. Describiremos tres de estos

algoritmos, los que se utilizan con mayor frecuencia, llamados recorridos en pre-

orden, recorrido en in-orden y recorrido en post-orden que serán explicados mas

adelante. Cada uno de estos algoritmos se puede definir de manera recursiva.

19.1 IN-ORDEN

DEFINICION

Sea T un árbol ordenado con raíz r. Si T consta de solo r, entonces r es el

recorrido en in-orden de T. En otro caso, supongamos que T1, T2, …., Tn son

los sub-arboles de r listados de izquierda a derecha en T. El recorrido en in-

orden comienza recorriendo T1 en in-orden y continua visitando r, a

continuación recorre T2 en in-orden, después T3 en in-orden y asi

sucesivamente hasta recorrer Tn en in-orden.

Pasos para recorrer en un árbol de profundidad en in-orden:

o Recorrer el sub-árbol izquierdo en in-orden.

o Examinar la raíz.

Page 60: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

58

o Recorrer el sub-árbol derecho en in-orden.

En el caso de árboles generales o de orden N, se visita primero el árbol más a la

izquierda, a continuación la raíz, y por último el resto de sub-árboles en secuencia.

19.2 PREORDEN

DEFINICION

Sea T un árbol ordenado con raíz r. Si T consta solo de r, entonces r es el

recorrido pre-orden de T. En otro caso, supongamos T1, T2,….., Tn son los

sub-árboles de r listados de izquierda a derecha en T. El recorrido en pre-

orden comienza visitando r, continua recorriendo T1 en pre-orden, luego T2

en pre-orden y así sucesivamente hacia recorrer hasta recorrer Tn en pre-

orden.

Pasos para recorrer en un árbol de profundidad en pre-orden:

o Examinar la raíz.

o Recorrer el sub-árbol izquierdo en pre-orden.

o recorrer el sub-árbol derecho en pre-orden.

19.3 POSTORDEN

DEFINICION

Sea T un árbol ordenado en raíz r. Si T consta solo de r, entonces r es el

recorrido en post-orden de T. En otro caso, supongamos que T1, T2, …, Tn

son los sub-arboles de r listados de izquierda a derecha en T. El recorrido en

post-orden y así sucesivamente hasta recorrer Tn en post-orden y finaliza

visitando r.

Pasos para recorrer en un árbol de profundidad en pre-orden:

Page 61: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

59

o Recorrer el sub-árbol izquierdo en post-orden.

o Recorrer el sub-árbol derecho en post-orden.

o Examinar la raíz.

A continuación se muestra un ejemplo de los diferentes recorridos en

profundidad de un Árbol Binario.

FIGURA 31: Representación de un Árbol Binario.

In-orden: GDBHEIACJKF

Pre-orden: ABDGEHICFJK

Post-orden: GDHIEBKJFCA

A

C B

E D F

K J G H I

Page 62: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

60

FIGURA 32: Representación de una expresión aritmética como un Árbol.

Los árboles binarios se emplean a menudo para la representación de expresiones

aritméticas, dado que una operación con dos operandos la podemos representar como

un árbol cuya raíz sea el operador, y sus sub-árboles sean los operandos.

Por ejemplo, la operación: (3-(4*5- 3)*8+7/5)*1/23-j, equivaldría, rellenando

paréntesis, a:

{[(3-{[(4*5)- 3]*8}) + (7/5)]*(1/23)}-j, y su árbol sería el de la FIGURA 25.

-

* J

/

+

23 1

- /

7 5 3 *

8 -

3 *

4 5

Page 63: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

61

Están además la notación polaca en la que los operadores siempre preceden a los

operandos sobre los que actúan, y que tiene la ventaja de no necesitar paréntesis y la

polaca inversa en la que los operadores van después de los operandos sobre los que

actúan, la ventaja mas grande es que los cálculos se realizan secuencialmente según

se van introduciendo operadores, en vez de tener que esperar a escribir la expresión al

completo. Debido a esto, se cometen menos errores al procesar cálculos complejos:

Polaca: -/*+ /-*-* 4 5 3 8 3 7 5 1 23 j

Polaca inversa: {[(3 {[(4 5*) 3-] 8*}-) (7 5/)+] (1 23/)*} j-

20 ÁRBOLES DE DECISIÓN

Un árbol de decisión es un modelo de predicción utilizado en el ámbito de la

inteligencia artificial. Dada una base de datos se construyen estos diagramas de

construcciones lógicas, muy similares a los sistemas de predicción basados en reglas,

que sirven para representar y categorizar una serie de condiciones que suceden de

forma sucesiva, para la resolución de un problema.

Un árbol de decisión tiene unas entradas las cuales pueden ser un objeto o una

situación descrita por medio de un conjunto de atributos y a partir de esto devuelve

una respuesta la cual en últimas es una decisión que es tomada a partir de las

entradas.

Los valores que pueden tomar las entradas y las salidas pueden ser valores discretos o

continuos. Se utilizan más los valores discretos por simplicidad, cuando se utilizan

valores discretos en las funciones de una aplicación se denomina clasificación y

cuando se utilizan los continuos se denomina regresión.

Page 64: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

62

Un árbol de decisión lleva a cabo un test a medida que este se recorre hacia las hojas

para alcanzar así una decisión. El árbol de decisión suele contener vértices internos,

vértices de probabilidad, vértices hojas y aristas. Un vértice interno contiene un test

sobre algún valor de una de las propiedades. Un vértice de probabilidad indica que

debe ocurrir un evento aleatorio de acuerdo a la naturaleza del problema, este tipo de

vértices es redondo, los demás son cuadrados. Un vértice hoja representa el valor que

devolverá el árbol de decisión. Y finalmente las ramas brindan los posibles caminos

que se tienen de acuerdo a la decisión tomada.

El árbol de decisión es un diagrama que representa en forma secuencial condiciones y

acciones; muestra qué condiciones se consideran en primer lugar, en segundo lugar y

así sucesivamente. Este método permite mostrar la relación que existe entre cada

condición y el grupo de acciones permisibles asociado con ella.

Se recomienda el uso del árbol de decisión cuando el número de acciones es pequeño

y no son posibles todas las combinaciones.

Los árboles de decisión se utilizan en cualquier proceso que implique toma de

decisiones, ejemplos de estos procesos son:

Búsqueda Binaria

Sistemas Expertos

Árboles de juegos

Los árboles de decisión generalmente son binarios, es decir que cuentan con dos

opciones, aunque esto no significa que no puedan existir árboles de 3 o más opciones.

Page 65: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

63

EJEMPLO:

BUSQUEDA BINARIA

Método se basa en partir el árbol en dos partes, a continuación tenemos el siguiente

árbol:

FIGURA 33: Representación de un árbol de decisión.

Con el árbol anterior realizaremos una búsqueda binaria a través de un árbol de

decisión.

Supongamos que deseas buscar un numero X en el árbol

- Comparamos si el numero que estamos buscando es igual a la raíz, si es igual

devuelve la raíz y se termina la búsqueda.

- Si no es igual se compara nuevamente el número para saber si es mayor o

menor que la raíz con lo que se ahorraría la totalidad del árbol, y así volver

más eficiente la búsqueda.

- Si es menor recorremos la búsqueda hacia el lado izquierdo hasta encontrar el

siguiente elemento del árbol, el cual volvemos a comparar como lo hicimos

con la raíz.

- Si es mayor se realiza la búsqueda hacia el lado derecho del árbol, el cual

tomamos como si fuera una raíz y comparamos de la misma forma que la

primera raíz.

20

7 25

3 10 23 30

40

Page 66: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

64

El procedimiento anterior se realiza hasta encontrar el número buscado o hasta

llegar a NULL, pueda que el número no se encuentre en la FIGURA 31.

20.1 VENTAJAS

Facilita la interpretación de la decisión adoptada.

Proporciona un alto grado de compresión del conocimiento utilizado en la

toma de decisiones.

Reduce el número de variables independientes.

Es una magnifica herramienta para el control de la gestión empresarial.

20.2 APLICACIONES DE ÁRBOLES BINARIOS

CODIFICACION DE HUFFMAN

Los árboles binarios han sido usados para muchas aplicaciones informáticas, como

uno de estos casos es el algoritmo de Huffman.

FIGURA 34: David Huffman

Este algoritmo fue usado para compresión de datos. El termino se refiere al uso de

una tabla de códigos de longitud variable para codificar un determinado símbolo

(como puede ser un caracter en un archivo), donde la tabla ha sido rellenada de una

manera específica basándose en la probabilidad estimada de aparición de cada posible

Page 67: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

65

valor de dicho símbolo. Dicho algoritmo fue desarrollado por David A. Huffman

mientras era estudiante de doctorado en el MIT.

La codificación Huffman usa un método específico para elegir la representación de

cada símbolo, que da lugar a un código prefijo (es decir, la cadena de bits que

representa a un símbolo en particular nunca es prefijo de la cadena de bits de un

símbolo distinto) que representa los caracteres más comunes usando las cadenas de

bits más cortas, y viceversa. Huffman fue capaz de diseñar el método de compresión

más eficiente de este tipo: ninguna representación alternativa de un conjunto de

símbolos de entrada produce una salida media más pequeña cuando las frecuencias de

los símbolos coinciden con las usadas para crear el código. Posteriormente se

encontró un método para llevar esto a cabo en un tiempo lineal si las probabilidades

de los símbolos de entrada (también conocidas como "pesos") están ordenadas. A

continuación se hará un ejemplo para tener un mejor entendimiento en que se basa la

codificación de Huffman.

Por lo tanto codificaremos la palabra:

- Palabra a codificar: "Esto es un ejemplo de árbol de Huffman".

Haremos una tabla para representar cada carácter es importante saber su

numero de frecuencia, y su código, es bueno organizar cada carácter de

mayor a menor, esto significa que aquel carácter que tenga el numero de

frecuencia mayor será el primero y así sucesivamente (frecuencia asumirlo

como numero de repeticiones que presenta un carácter).

CARACTER FRECUENCIA CODIGO

Espacio 7 00

E 6 100

O 3 1100

N 2 1110

U 2 0100

S 2 0101

M 2 1010

Page 68: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

66

F 2 1011

L 2 0110

D 2 0111

A 2 11010

B 1 110110

H 1 110111

J 1 111100

P 1 111101

R 1 111110

T 1 111111

TABLA 4: Tabla codificación de huffman

2. A continuación se realizara el árbol de huffman generado de la anterior tabla.

38

17 24

7„‟ 9 10 14

6 E

5 4 4 7 7

2 D

3 U 2 A 2 L 2 M 2 F

4

3 N 3 0 4

2 S 2 2 2

1B 1H 1J 1P 1R 1T

Page 69: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

67

FIGURA 35: Árbol Binario que representa el código de huffman.

ARBOLES B+

Los arboles B+ son una alternativa a los archivos secuenciales indexados, este

mecanismo de indexación ayuda a acelerar el acceso a los datos deseados, un ejemplo

concreto para esto puede ser cuando queremos encontrar un capitulo especifico en un

índice alfabético en un libro estos mecanismos son importantes para que el usuario

tenga una respuesta rápida de lo que quiere encontrar.

FIGURA 36: Representación de un árbol B+ para consultas en bases de datos

La FIGURA 36 quiere mostrar una representación de cómo son manejados los

arboles B+ en una base de datos que contiene información del índice de un libro, en

este caso este documento+, la cual tienen la misma función de búsqueda que un árbol

binario con la diferencia de que este tipo de árbol puede aceptar más de dos hijos a

diferencia de un árbol binario que nada mas acepta dos hijos como máximo.

Aplicaciones de árboles: Arboles de Búsqueda

GRAFOS

CONEXION HISTORIA

ARBOLES OBJETIVOS

Page 70: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

68

Un árbol binario es una estructura de datos útil cuando se trata de hacer modelos de

procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada parte

del proceso. Supongamos que tenemos un arreglo en el cual tenemos que buscar un

dato duplicado, una manera de encontrar los elementos duplicados en un arreglo es

recorrerlo todo y comparar con cada uno de los elementos del arreglo. Si en esta

situación tuviéramos un arreglo de n posiciones se deben hacer n comparaciones,

siendo n un número pequeño, no habría ningún problema. Pero se va complicando

más a medida que n aumenta.

Si usamos un árbol binario, el número de comparaciones se reduce bastante.

Como por ejemplo:

El primer número del arreglo se coloca en la raíz del árbol (como en este ejemplo

siempre vamos a trabajar con árboles binarios, simplemente diremos árbol, para

referirnos a un árbol binario) con sus sub-árboles izquierdo y derecho vacíos. Luego,

cada elemento del arreglo se compara con la información del vértice raíz y se crean

los nuevos hijos con el siguiente criterio:

Si el elemento del arreglo es igual que la información del vértice raíz,

entonces notificar duplicidad.

Si el elemento del arreglo es menor que la información del vértice raíz,

entonces se crea un hijo izquierdo.

Si el elemento del arreglo es mayor que la información del vértice raíz,

entonces se crea un hijo derecho.

Una vez que ya está creado el árbol, se pueden buscar los elementos repetidos. Si x es

el elemento buscado, se debe recorrer el árbol del siguiente modo:

Sea k la información del nodo actual p. Si k>x entonces cambiar el vértice actual a

right(p)(Véase el algoritmo a continuación), en caso contrario, en caso de que x=k

Page 71: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

69

informar una ocurrencia duplicada y en caso de que x≥k cambiar el vértice actual a

left(p)(Véase el algoritmo a continuación).

Algoritmo para la búsqueda de duplicados

leer numero buscado >> n

tree=makeTree(n)

while(hay numeros en el arreglo){

leeSiguienteNumero >> k

p=q=tree;

while(k!=info(p)&&q!=NULL){

p=q

if(k<info(p))

q=left(p)

else

q=right(p)

}

if(k==info(p))

despliega<<" el numero es duplicado";

else

if (k<info(p))

setLeft(p,k)

else

setRight(p,k)

}

El arreglo usado para crear el árbol binario de búsqueda fue

<14,15,4,9,7,18,3,5,16,4,20,17,9,14,5>

El árbol de ordenamiento es el que se muestra en la FIGURA.

Page 72: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

70

FIGURA 37: Árbol binario para ordenar una secuencia de números

Para ordenar los elementos de este arreglo basta recorrer el árbol en forma de

in-orden.

20.3 APLICACIONES INFORMATICAS DE ÁRBOLES DE DECISION

ÁRBOLES DE DECISION EN UNA CRISIS EMPRESARIAL

El análisis de la crisis empresarial se configura como un aspecto clave en el análisis

de estados financieros al permitir a la empresa disponer de un sistema de diagnóstico

que abarque los aspectos de solvencia y de rentabilidad. La preocupación por el

cumplimiento del objetivo de solvencia ha originado la elaboración de distintos

modelos de predicción del fracaso empresarial obtenidos mediante el empleo de

diferentes técnicas estadísticas como el análisis univariante o el multivariante en los

que los radios contables funcionan como variables explicativas. Para esto se utilizan

los árboles de decisión.

Un árbol de decisión representa la relación existente entre la conclusión-decisión y

sus atributos. Es decir, se produce un proceso de generalización de forma que el árbol

Page 73: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

71

de decisión generado clasifica correctamente los datos. Este árbol, además, se

caracteriza por ser el óptimo en el sentido que minimiza el número de atributos

requeridos para alcanzar la conclusión-decisión, siendo esta la explicación de por qué

ciertos atributos no aparecen en el árbol.

Por ejemplo, considerando el árbol de decisión que a continuación se presenta, puede

comprobarse que los atributos de los que depende el tomar una u otra decisión son:

Importe (menor de 100.000, entre 100.000 y 500.000, mayor de

500.000)

Solvencia (alta, media y baja)

La decisión a tomar variará entre contado y crédito.

El árbol representa la dependencia lógica entre la decisión a tomar y los atributos

considerados.

X<100000 or X>500000 X<100000 and X>500000

Alta media baja

FIGURA 38: Representación de un Árbol de Decisión

IMPORTE

SOLVENCIA CONTADO

CREDITO CONTADO

Page 74: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

72

Aunque ese árbol, que se lee de izquierda a derecha y desde arriba a abajo, es

equivalente a las cinco reglas siguientes:

Regla 1: SI importe = menor de 100.000, ENTONCES decisión = contado.

Regla 2: SI importe = mayor de 500.000, ENTONCES decisión = contado.

Regla 3: SI importe = entre 100.000 y 500.000 Y solvencia = alta,

ENTONCES decisión = crédito.

Regla 4: SI importe = entre 100.000 y 500.000 Y solvencia = media,

ENTONCES decisión = crédito.

Regla 5: SI importe = entre 100.000 y 500.000 Y solvencia = baja,

ENTONCES decisión = contado

La estructura del árbol representa la trayectoria óptima para alcanzar una decisión en

ese conjunto de reglas.

Al utilizar los árboles de decisión podemos tener como conclusiones lo siguiente:

Resume los ejemplos de partida, permitiendo la clasificación de

nuevos casos siempre y cuando no existan modificaciones sustanciales

en las condiciones bajo las cuales se generaron los ejemplos que

sirvieron para su construcción.

Facilita la interpretación de la decisión adoptada.

Proporciona un alto grado de comprensión del conocimiento utilizado

en la toma de decisiones.

Explica el comportamiento respecto a una determinada tarea de

decisión.

Reduce el número de variables independientes.

Es una magnifica herramienta para el control de la gestión empresarial.

20.4 ÁRBOLES DE JUEGOS

Los árboles de juegos son también una aplicación de los árboles de decisión.

Tomemos por ejemplo el conocido juego de Triqui y consideremos una función que

Page 75: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

73

evalúa una posición del tablero y nos devuelve un valor numérico (entre mas grande

es este valor, mas buena es esta posición).Un ejemplo de la implantación de esta

función es considerando el numero de renglones, columnas y diagonales restantes

abiertas para un jugador menos el numero de las mismas para su oponente, por

ejemplo la siguiente posición en un juego y sus posibles continuaciones:

FIGURA 39: Representación de un Árbol de Decisión en una posición del juego

Triqui.

Nota: La estructura que esta hecha para este determinado juego de triqui es que

muestran todas las posibilidades para que el signo (x) gane pero también se puede

hacer una estructura para que pueda también ganar el signo (o), probabilidad al azar

que para este caso seria organizar de mejor manera las diferentes jugadas que puede

hacer un determinado jugador. Este esquema lo que queremos mostrar es como

pueden ser muy aplicables los arboles de decisión en la programación, pero seria

interesante hacer de aplicación un juego triquis pensando en todas las distintas

jugadas que puede hacer un jugador teniendo como ganador el signo (x) o el signo

(o).

Dada un posición del tablero, el mejor movimiento siguiente esta determinado por la

consideración de todos los movimientos posibles y las posiciones resultantes.

Tal análisis no conduce sin embargo al mejor movimiento, como se ve en el ejemplo

anterior cuando las cuatro primeras posibilidades dan todos los mismos valores de

evaluación, sin embargo la cuarta posición es sin duda mejor, por lo que se debe

mejorar esta función.

Page 76: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

74

Ahora se introduce la posibilidad de prever varios movimientos. Entonces la función

se mejorará en gran medida; se inicia con cualquier posición y se determinan todos

los posibles movimientos en un árbol hasta un determinado nivel de previsión. Este

árbol se conoce como árbol de juego cuya profundidad es igual a la profundidad de

dicho árbol.

Así es como funciona un árbol de juego que es una aplicación de un árbol de

decisión, ya que se genera el árbol de acuerdo al nivel de previsión y cada jugador va

decidiendo que jugada le conviene más de acuerdo a la evaluación de una

determinada posición.

ÁRBOLES DE DECISIÓN UTILIZADOS EN SISTEMAS EXPERTOS

Los árboles de decisión se usan en los sistemas expertos porque son más precisos que

el hombre para poder desarrollar un diagnóstico con respecto a algo, ya que el

hombre puede dejar pasar sin querer un detalle, en cambio la máquina mediante un

sistema experto con un árbol de decisión puede dar un resultado exacto.

Una deficiencia de éste es que puede llegar a ser mas lento pues analiza todas las

posibilidades pero esto a su vez es lo que lo vuelve mas preciso que al hombre. A

continuación se presenta un ejemplo de un sistema experto y de cómo puede llegar a

diagnosticar que se emplee un fármaco X en una persona con presión arterial.

Page 77: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

75

FIGURA 40: Ejemplo de Árbol de Decisión en sistemas Expertos.

Se le administra un fármaco X al paciente si:

1.- Tiene presión alta, su azúcar en la sangre es alto, es alérgico a antibióticos y NO

tiene otras alergias.

2.- Tiene presión alta, su azúcar en la sangre es alto, y NO es alérgico a antibióticos.

3.- Tiene presión arterial alta y su azúcar en la sangre es bajo.

4.- Tiene presión arterial media y su índice de colesterol es bajo.

5.- Tiene presión arterial baja.

No le se le administra el fármaco X si:

1.- Tiene presión arterial alta, su azúcar en la sangre es bajo, es alérgico a los

antibióticos y SI tiene otras alergias.

Page 78: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

76

2.- Tiene presión arterial media y su índice de colesterol es alto.

A continuación en la FIGURA 41, presentamos un árbol de decisión para un

problema medico real que se presenta a diario en todos los hospitales del mundo y

que se encuentra entre las primeras causas de muerte en los países desarrollados y que

constituye causa de invalidez e incapacidad física: el dolor precordial como síntoma

de las enfermedades del corazón.

El árbol nos permite tomar decisiones y llegar a una solución ante cada problema que

se nos presenta en un cuerpo de guardia con un paciente que acuda a nosotros con

dolor precordial.

.

Page 79: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

77

FIGURA 41: Representación de un sistema Experto con Árboles de Decisión en una

situación real.

Page 80: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

78

21 ARBOL RECUBRIDOR

Dado un grafo conexo, un árbol recubridor de ese grafo es un sub-grafo que es un

árbol y conecta todos los vértices. Se le puede asignar un peso a cada arista, que es un

número que representa qué tan adecuado es, y se usa para asignar un peso al árbol

recubridor mínimo computando la suma de todos los pesos de las aristas del árbol en

cuestión.

Un árbol recubridor o un árbol expandido es un árbol recubridor que pesa menos o

igual que otros árboles recubridores. Todo grafo tiene un bosque recubridor mínimo.

El árbol recubridor es usado frecuentemente para algoritmos informáticos, los

algoritmos más destacados se explicaran a continuación.

FIGURA 42: Ejemplo de un árbol recubridor mínimo.

Page 81: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

79

22 ALGORITMO DE KRUSKAL

El algoritmo de Kruskal es un algoritmo de la teoría de grafos para encontrar un árbol

recubridor mínimo en un grafo conexo y ponderado. Es decir, busca un subconjunto

de aristas que, formando un árbol, incluyen todos los vértices y donde el valor total

de todas las aristas del árbol es el mínimo MST (Mínimum Spanning Tree) que sirve

para solucionar problemas relacionados con distribución de redes de energía, redes de

comunicaciones y demás problemas donde se pueda llevar este a un modelo de grafos

y aquí aplicar el algoritmo de Kruskal para hallar la solución al problema.

FIGURA 43: Joseph Kruskal

Las aplicaciones de los árboles abarcadores mínimos son múltiples: obtención de

redes eléctricas o de comunicaciones eficientes, creación de laberintos aleatorios.

Entre los problemas sobre grafos, uno de los de mayor interés por su enorme abanico

de aplicaciones es la obtención del Árbol de recubrimiento de peso mínimo. En lo que

sigue nos referiremos a éste árbol por las siglas de su nombre en inglés, MST. La

determinación del MST tiene innumerables aplicaciones en diversas ramas de la

ciencia y la tecnología. Por ejemplo, este tipo de árboles pueden usarse directamente

Page 82: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

80

como base para optimizar el diseño de redes de transmisión de energía o de

información cuando la topología de las conexiones debe ser (o conviene que sea)

arborescente. En otras áreas, el MST puede usarse para determinar agrupamientos

naturales de datos. Si tenemos una colección de datos y alguna manera de medir la

disimilitud o “distancia” entre ellos, podemos ver esta colección como el conjunto de

vértices de un grafo y las disimilitudes entre objetos como aristas de un grafo

completamente interconectado.

El MST de un grafo de este tipo tiene la propiedad de que si se eliminan sus aristas de

mayor peso (disimilitud) se obtiene un “bosque” en el que cada sub-árbol agrupa

todos los datos similares o “próximos” entre sí.

Para ejecutar bien el algoritmo hay que seguir los siguientes pasos:

1. Se marca la arista con menor valor. Si hay más de una, se elige cualquiera de

ellas.

2. De las aristas restantes, se marca la que tenga menor valor, si hay más de una,

se elige cualquiera de ellas.

3. Repetir el paso 2 siempre que la arista elegida no forme un ciclo con las ya

marcadas.

4. El proceso termina cuando tenemos todos los vértices del grafo en alguna de

las aristas marcadas, es decir, cuando tenemos marcados n-1 arcos, siendo n el

número de vértices del grafo.

Ejemplo: Determinar el árbol de mínima expansión (MST) para el siguiente

grafo:

3 7 9

1 8 5 6 2 4

1

FIGURA 44: Representación de un grafo

1 2 7

3 5

6

4

Page 83: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

81

Siguiendo el algoritmo de Kruskal, en nuestro software llamado

ALGORITMOS VORACES, tenemos los siguientes pasos:

o Elegimos, por ejemplo, la arista (5, 6) = 1 (menor valor) y la

marcamos.

o Elegimos la siguiente arista con menor valor (1, 3) = 1 y la marcamos.

o Elegimos la siguiente arista con menor valor (5, 7) = 2 y la marcamos,

ya que no forma ciclos con ninguna arista de las marcadas

anteriormente.

o Elegimos la siguiente arista con menor valor (1, 2) = 3 y la marcamos,

ya que no forma ciclos con ninguna arista de las marcadas

anteriormente.

o Elegimos la siguiente arista con menor valor (6, 7) = 4 y la

desechamos, ya que forma ciclos con las aristas (5, 7) y (5, 6)

marcadas anteriormente.

o Elegimos la siguiente arista con menor valor (2, 5) = 5 y la marcamos,

ya que no forma ciclos con ninguna arista de las marcadas

anteriormente.

o Elegimos la siguiente arista con menor valor (4, 5) = 6 y la marcamos,

ya que no forma ciclos con ninguna arista de las marcadas

anteriormente.

o FIN. Finalizamos dado que los 7 vértices del grafo están en alguna de

las aristas, o también ya que tenemos marcadas 6 aristas (n-1).

o Por tanto el árbol de mínima expansión resultante sería:

Page 84: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

82

FIGURA 45: Representación de una Árbol de Expansión Mínima.

COMO DISEÑAR UNA RED CABLEADA DE DATOS O TELEFONIA EN

FORMA OPTIMA

FIGURA 46: Dos Ejemplos de Árboles.

Tenemos una área determinada donde existen una cantidad n de oficinas y en cada

oficina uno o mas puntos de red, el punto es hacer el diseño correcto del cableado

estructurado de esta red, de tal manera que utilicemos la menor cantidad posible de

cable de red en unir todas las oficinas y los puntos de red que hay en ella.

Utilizaremos, como se ve en la FIGURA 45, la topología de estrella.

Page 85: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

83

La aplicación practica del Algoritmo Kruskal es la de encontrar un árbol generador

mínimo es decir buscar un árbol donde los vértices y donde el valor de total de todas

las aristas del árbol sea el mínimo posible

Un árbol de peso mínimo es un árbol optimo.

En el algoritmo de kruskal se tiene como origen a un grafo no dirigido, conexo y sin

lazos.

23 ALGORITMO DE PRIM

Este algoritmo fue diseñado en 1930 por el matemático Vojtech Jarnik y luego de

manera independiente por el científico computacional Robert C. Prim en 1957 y

redescubierto por Dijkstra en 1959. Por esta razón, el algoritmo es también conocido

como algoritmo DJP o algoritmo de Jarnik.

FIGURA 47: Robert C Prim

El algoritmo de Prim es un algoritmo de la teoría de grafos para encontrar un árbol

recubridor mínimo (MST) en un grafo conexo (igual que el algoritmo de kruskal), no

Page 86: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

84

dirigido y cuyas aristas están etiquetados. Por así decirlo, dicho algoritmo encuentra

un subconjunto de aristas que forman un árbol con todos los vértices, donde el peso

total de todas las aristas en el árbol es el mínimo posible. Si el grafo no es conexo,

entonces el algoritmo encontrara el árbol recubridor mínimo para uno de los

componentes conexos que forman dicho grafo no conexo.

A continuación se ilustrara el código en JAVA del algoritmo de prim, que puede

servir de mucho para aplicaciones para comunicaciones y redes, bases de datos y

otros temas de interés para la parte informática.

CODIGO EN JAVA

La idea básica consiste en añadir, en cada paso, una arista de peso mínimo a un árbol

previamente construido. Más explícitamente:

Paso 1. Se elige un vértice u de G y se considera el árbol S={u}

Paso 2. Se considera la arista e de mínimo peso que une un vértice de S y un

vértice que no es de S, y se hace S= S+e

Paso 3. Si el nº de aristas de T es n-1 el algoritmo termina. En caso contrario se

vuelve al paso 2

A continuación se muestra el código en java del algoritmo de prim:

public class Algorithms

Page 87: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

85

{

public static Graph PrimsAlgorithm (Graph g, int s)

{

int n = g.getNumberOfVertices ();

Entry[] table = new Entry [n];

for (int v = 0; v < n; ++v)

table [v] = new Entry ();

table [s].distance = 0;

PriorityQueue queue =

new BinaryHeap (g.getNumberOfEdges());

queue.enqueue (

new Association (new Int (0), g.getVertex (s)));

while (!queue.isEmpty ())

{

Association assoc = (Association) queue.dequeueMin();

Vertex v0 = (Vertex) assoc.getValue ();

int n0 = v0.getNumber ();

if (!table [n0].known)

{

table [n0].known = true;

Enumeration p = v0.getEmanatingEdges ();

while (p.hasMoreElements ())

{

Edge edge = (Edge) p.nextElement ();

Vertex v1 = edge.getMate (v0);

int n1 = v1.getNumber ();

Int wt = (Int) edge.getWeight ();

int d = wt.intValue ();

if (!table[n1].known && table[n1].distance>d)

{ table [n1].distance = d;

table [n1].predecessor = n0;

queue.enqueue (

new Association (new Int (d), v1));

}

}

}

}

Graph result = new GraphAsLists (n);

for (int v = 0; v < n; ++v)

result.addVertex (v);

for (int v = 0; v < n; ++v)

Page 88: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

86

if (v != s)

result.addEdge (v, table [v].predecessor);

return result;

}

}

NOTA: Es importante saber que para la implementación del algoritmo de prim, fue

necesario tomar como base la creación de una clase grafo, por lo que ya explicado en

la definición de dicho algoritmo es basado o derivado a través de la teoría de grafos,

por lo que es importante implementar un grafo, ya explicado en capítulos anteriores

podrá ser fácil de implementar.

DEMOSTRACION DEL ALGORITMO DE PRIM

Sea G un grafo conexo y ponderado.

En toda iteración del algoritmo de Prim, se debe encontrar una arista que conecte un

vértice del sub-grafo a otro vértice fuera del sub-grafo.

Ya que G es conexo, siempre habrá un camino para todo vértice.

La salida Y del algoritmo de prim es un árbol porque las aristas y los vértices

agregados a Y están conectados.

Sea Y el árbol recubridor mínimo de G.

Si Y1 = Y → Y es el árbol recubridor mínimo.

Si no, sea e la primera arista agregada durante la construcción de Y, que no esta en

Y1 y sea V el conjunto de vértices conectados por las aristas agregadas antes que e.

Entonces un extremo de e esta en V y el otro no. Ya que Y1 es el árbol recubridor

mínimo de G hay un camino en Y1 que une los dos extremos. Mientras que uno se

mueve por el camino, se debe encontrar una arista f uniendo un vértice en V a uno

que no esta en V. En la iteración que e se agrega a Y, f también se podría haber

agregado y se hubiese agregado en vez de e si su peso fuera menor que el de e. Ya

que f no se agrego se concluye:

Page 89: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

87

P(f) ≥ P(e)

Sea Y2 el grafo obtenido al remover f y agregando e € Y1. Es fácil mostrar que Y2

conexo tiene la misma cantidad de aristas que Y1, y el peso total de sus aristas no es

mayor que el de Y1, entonces también es un árbol recubridor mínimo de G y

contiene a e y todas las aristas agregadas anteriormente durante la construcción de V.

Si se repiten los pasos esto demuestra que Y es el árbol recubridor mínimo de G.

EJEMPLO DE EJECUCION PARA EL ALGORITMO DE PRIM EN EL

SOFTWARE ALGORITMOS VORACES

Estas imágenes son obtenidas en base de los resultados obtenidos en el software

ALGORITMOS VORACES.

IMAGEN DESCRIPCION No

vistos

En el

grafo

En el árbol

Este es el grafo que

será puesto de

partida. No es un

árbol ya que requiere

que no haya circuitos

y en este grafo los

hay. Los números

cerca de las aristas

indican el peso.

Ninguna de las

aristas esta marcada,

y el vértice D ha sido

elegido

arbitrariamente como

el punto de partida.

C, G

A,B, E,

F

D

Page 90: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

88

El segundo vértice es

el más cercano a D:

A esta a 5 de

distancia, B a 9, E a

15 y F a 6. De estos,

5 es el valor mas

pequeño, así que

marcamos la arista

DA.

C, G

B,E,F

A,D

El próximo vértice a

elegir es el mas

cercano a D o A. B

esta a 9 de distancia

de D y a 7 de A, E

esta a 15 y F esta a 6.

6 es el menor

C

B,E,G

A,D,F

El algoritmo

continúa. El vértice B

que esta a una

distancia de 7 de A,

es el siguiente

marcado. En este

punto la arista DB es

marcada porque sus

dos extremos ya

están en el árbol y

por lo tanto no podrá

ser utilizado.

NULL

C,E,G

A,D,F,B

Page 91: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

89

Aquí hay que elegir

entre C, E Y G. C

esta a 8 de distancia

de B, E esta a 7 de

distancia de B, y G

esta a 11 de distancia

de F. E esta mas

cerca, entonces

marcamos el vértice

E y la arista EB.

Otras dos aristas

fueron marcadas

porque ambos

vértices que unen

fueron agregados al

árbol.

NULL

C,G

A,D,F,B,E

Solo quedan

disponibles C y G. C

esta a 5 de distancia

de E, y G a 9 de

distancia de E. Se

elige C, y se marca

con el arco EC. El

arco BC también se

marca.

NULL

G

A,D,F,B,E,

C

G es el único vértice

pendiente, y esta mas

cerca de E que de F,

asi que se agrega EG

al árbol. Todos los

vértices están ya

marcados, el árbol de

expansión minimo se

muestra. En este caso

con un peso de 39.

NULL

NULL

A,D,F,B,E,

C,G

TABLA 5. TABLA DE COMPARACION PRIM Y KRUSKAL

Page 92: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

90

Cada algoritmo tanto Kruskal como prim son de gran ayuda para implementaciones

informáticas, lo importante es que cada una tiene su propia función, por lo cual es

necesario que cuando se programe o se aplique cada una de ellas se haga con sus

respectivos pasos.

KRUSKAL

PRIM

Se marca la arista con menor

valor. Si hay más de una, se elige

cualquiera de ellas.

De las aristas restantes, se marca

la que tenga menor valor, si hay

más de una, se elige cualquiera de

ellas.

Repetir el paso 2 siempre que la

arista elegida no forme un ciclo

con las ya marcadas.

El proceso termina cuando

tenemos todos los vértices del

grafo en alguna de las aristas

marcadas, es decir, cuando

tenemos marcados n-1 aristas,

siendo n el número de vértices del

grafo.

Se marca un vértice cualquiera, será el vértice de partida.

Seleccionamos la arista de menor

valor incidente en el vértice

marcado anteriormente, y

marcamos el otro vértice en el que

incide.

Repetir el paso 2 siempre que la arista elegida enlace un vértice

marcado y otro que no lo este.

El proceso termina cuando tenemos todos los vértices del

grafo marcados.

TABLA 6. Tabla comparativa para el manejo de los algoritmos de Kruskal y Prim.

Page 93: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

91

24 BIBLIOGRAFIA

ROSEN, K. Matemática Discreta y sus Aplicaciones 5o Edición. México: Mc Graww Hill. 2004

J. Gross, J. Yellen: "Graph Theory and its Applications" . CRC Press, 1999

GRIMALDI, R. Matemáticas Discretas y Combinatoria 3o Edición. México: Pearson. 1998

GARCIA, F. Matemática Discreta. México: Thompson. 2001

Redes De Computadoras 3Ed - Tanenbaum, Andrew

STALLINGS W, SISTEMAS OPERATIVOS, 2ED PRENTICE HALL

Introducción al diseño y análisis de algoritmos, McGraw hill

Introducción a las bases de datos, prentice hall

Paternostro, Carlos y Piedra, Viviana Algoritmos Voraces 2009

Page 94: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

PONTIFICIA UNIVERSIDAD JAVERIANA

FACULTAD DE CIENCIAS

CARRERA DE INFORMATICA MATEMATICA

APLICACIONES DE LA TEORIA DE GRAFOS EN LAINFORMÁTICA

Autores:

Carlos Paternostro

Viviana Piedra

Director:

Gustavo Nieto

Page 95: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

CONTENIDO

Introducción

Proposito

Formulacion del problema y justificacion

Objetivos

Grafos

Historia

Definicion

Tipos de grafos

Modelos de los grafos

Aplicaciones

Arboles

Arbol Binario

Arbol de decision y aplicaciones

Software algoritmos voraces

Page 96: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

INTRODUCCIÓN

La teoría de grafos también llamada teoría de las

gráficas, es una disciplina que es importante tanto para

las matemáticas como para la teoría de la computación.

En esta última disciplina todo es manejado a través de

los grafos que son estructuras discretas que constan de

puntos y de líneas que se conectan entre sí. Es

importante saber que existen diferentes tipos de grafos,

que se distinguen entre si por el tipo y el número de

líneas que pueden conectar para cada par de puntos.

Page 97: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

PROPOSITO

Se encuentran muchos problemas informáticos que pueden ser resueltos a través de la teoría de grafos.

El propósito principal es mostrar algunas de las aplicaciones que contienen la teoría de grafos y cómo se pueden resolver, con la ayuda de las matemáticas.

Algunos de los temas relacionados con dichas aplicaciones son:

Las estructuras de datos como los grafos.

El diseño de circuitos planos.

La solución de variados problemas en campos tan particulares como la teoría de juegos, redes telefónicas, eléctricas, bases de datos, sistemas operativos y de comunicaciones en general.

Page 98: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

FORMULACION DEL PROBLEMA Y

JUSTIFICACION

Formulación del problema El problema básicamente se centra en la falta de información sobre

algunas aplicaciones informáticas desde un tema tan amplio como es la teoría de grafos.

Lo que pretendemos solucionar es contar rápidamente con un texto, en el cual se puedan encontrar algunas de las más importantes aplicaciones informáticas en el ámbito de la teoría de grafos.

Justificación de la investigación La finalidad de nuestro trabajo es proveer de un texto en donde se

encuentren algunas de las más grandes e importantes aplicaciones informáticas, teoría y terminología básica de la teoría de grafos, a los estudiantes de informática matemática e ingeniería de Sistemas, los cuales apenas empiezan a estudiar la teoría de grafos y a comprender que ésta puede ser de gran ayuda para la ciencia de la computación ya que a través de ella se logran muchas de las aplicación mostradas alrededor de toda su carrera.

Page 99: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

OBJETIVOS

Objetivo General: Conformar un proyecto que muestre algunas de las

aplicaciones de la teoría de grafos en las redes de comunicaciones, manejo de información y secuencia de programas.

Objetivos Específicos: Mostrar ejemplos y aplicaciones de la teoría de grafos en

el diseño y estructura de redes de comunicaciones.

Establecer situaciones donde se muestra la importancia de los grafos dirigidos en la ejecución de programas

Diseñar estructuras de bases de datos mostrando la utilidad de los grafos a través de ejemplos ilustrados.

Page 100: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

HISTORIA DE LA TEORIA DE GRAFOS

Sus ideas básicas las introdujo el matemático suizo Leonhard Paul Euler en el siglo XVIII.

En 1736 realizó el trabajo de los puentes de Konigsberg.

Euler demostró que no era posible puesto que el número de líneas que inciden en cada punto no es par, (condición necesaria para entrar y salir de un mismo punto). Así nació la teoría de grafos.

Gustav Kirchhoff, quien publicó sus leyes de los circuitos para calcular el voltaje y la corriente en los circuitos eléctricos, usando grafos conexos de medida minima.

El Problema de los cuatro colores

En 1852 Francis Guthrie, se preguntó si sería posible demostrar matemáticamente que son suficientes cuatro tintas para colorear cualquier mapa de forma que países con frontera común tengan asignados colores distintos.

Page 101: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

GRAFOS

Estructura que consta de un conjunto de

puntos y lineas.

Page 102: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

REPRESENTACIÓN DE GRAFOS EN

PROGRAMAS

Representación mediante

matrices

Page 103: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Representación mediante listas

Page 104: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

TIPOS DE GRAFOS

Grafo simple

Grafo dirigido

Multigrafo

Page 105: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Pseudografo

Page 106: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

MODELOS CON GRAFOS

Grafos de llamadas Puede usarse un multigrafo dirigido para representar llamadas: cada vértice representa un número

de teléfono y cada arista representa una llamada.

La arista que representa una llamada sale del número del teléfono desde el que se hace la llamada y llega al número de que lo recibe.

Grafo de la Red La red de Internet se puede representar mediante un grafo dirigido en el que cada pagina Web esta

representada por un vértice y en el que una arista comienza en la pagina a y termina en la pagina b si hay un enlace en la pagina a que conduce a la pagina b.

Grafos de precedencia y procesamiento concurrente Los Sistemas Operativos, pueden ejecutarse más rápidamente si ciertas sentencias se ejecutan

simultáneamente. Es importante no ejecutar sentencias que requieran el resultado de sentencias no ejecutadas. La dependencia de sentencias con respecto a sentencias previas se puede representar por medio de un grafo dirigido.

Cada sentencia se representa por un vértice, y hay una arista de un vértice a un segundo si la sentencia representada por el segundo vértice no puede ejecutarse hasta la sentencia representada por el primero se ha ejecutado.

Diseño de bases de datos Empresa:

Vértices: Empleados, trabajos, departamentos y Empresa.

Enlaces: La comunicación.

Page 107: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES

Un sistema de adquisición

de datos supervisa

continuamente un cierto

proceso físico, para

registrar su

comportamiento,

información cambios

significativos y enviar

comandos a un

controlando de proceso.

R (recoger), G (guardar), C

(calcular), I (imprimir) y E

(enviar)

Page 108: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMÁTICAS

EN GRAFOS BIPARTITOS Comparación de archivos de computador, utilizando el problema de la

Longest Common Subsequence (LCS), en español Subsecuencia Común Más Larga.

Dadas dos palabras X e Y sobre un alfabeto finito cualquiera, pretende encontrar cuál es el largo máximo que puede tener una palabra que sea subsecuencia de X e Y simultáneamente.

El largo de una LCS se usa comúnmente como criterio de comparación de palabras, pues está relacionada con la cantidad de "pasos" necesarios para ir de una palabra a la otra mediante operaciones de inserción, eliminación y reemplazo de caracteres.

Todo par de palabras puede representarse convenientemente como un grafo bipartito donde los arcos unen a los caracteres coincidentes de ambas palabras.

Un matching en un grafo arbitrario (no necesariamente bipartito) es cualquier conjunto de arcos que no comparten extremos; un PM es un matching en donde los arcos no se cruzan ni comparten extremos. Así, calcular la LCS entre dos palabras no es más que calcular el matching planar de costo máximo del grafo bipartito asociado a dichas palabras, donde todos los arcos tienen costo igual a 1.

Page 109: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

ATMIA

Page 110: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS PARA LA

CONEXIÓN ENTRE GRAFOS ( I )

Seguridad para las bases de datos de una empresa

Funciones a diferentes departamentos para el manejo de inserción, eliminación y actualización de los diferentes empleados que trabajan para cada departamento.

E= Empresa

DS= Departamento de sistemas

DC= Departamento de contaduría

DG= Departamento para la gerencia

ES= Empleados para el departamento de sistemas

EC= Empleados para el departamento de contabilidad

EG= Empleados que hacen parte con la gerencia de la empresa

Page 111: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …
Page 112: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS

PARA LA CONEXIÓN ENTRE GRAFOS

( II ) Redes de comunicaciones móviles.

Los patrones de comunicación de millones de usuarios de teléfonos móviles, los grafos permiten estudiar simultáneamente la estructura local y la global de una sociedad en toda la red de comunicación, en las cuales se observan acoplamientos entre la interacción fuertes y una red de la estructura local.

Cada enlace representa la comunicación mutua entre los usuarios de la red de comunicación, y todos los nodos que se muestran son la distancia inferior a seis desde usuario seleccionado, marcado por un círculo en el centro.

Page 113: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …
Page 114: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

ÁRBOLES

Un árbol es un grafo sin circuitos.

Se usarán árboles siempre que se quiera representar información jerarquizada, cuando esta converja en un solo punto.

ARBOL BINARIO Un árbol binario es el que cumple que el subárbol

izquierdo de cualquier nodo (si no está vacío) contiene valores menores que el que contiene dicho nodo, y el subárbol derecho (si no está vacío) contiene valores mayores.

Usos comunes de los árboles binarios son los árboles binarios de búsqueda y codificación de huffman.

Page 115: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

ÁRBOLES DE DECISIÓN Un árbol de decisión es un modelo de predicción utilizado en el ámbito de la inteligencia

artificial.

Dada una base de datos se construyen estos diagramas de construcciones lógicas.

Puede Contener: Un vértice interno contiene un test sobre algún valor de una de las propiedades.

Un vértice de probabilidad indica que debe ocurrir un evento aleatorio de acuerdo a la naturaleza del problema, este tipo de vértices es redondo, los demás son cuadrados.

Un vértice hoja representa el valor que devolverá el árbol de decisión.

Las ramas brindan los posibles caminos que se tienen de acuerdo a la decisión tomada.

Los árboles de decisión se utilizan en cualquier proceso que implique toma de decisiones, ejemplos de estos procesos son: Búsqueda Binaria

Sistemas Expertos

Árboles de juegos

Page 116: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS

DE ÁRBOLES DE DECISION ( I ) CODIFICACION DE HUFFMAN

Este algoritmo fue usado para compresión de datos.

El termino se refiere al uso de una tabla de códigos de longitud variable para codificar un determinado símbolo (como puede ser un caracter en un archivo), donde la tabla ha sido rellenada de una manera específica basándose en la probabilidad estimada de aparición de cada posible valor de dicho símbolo.

La codificación Huffman usa un método específico para elegir la representación de cada símbolo, que da lugar a un código prefijo (es decir, la cadena de bits que representa a un símbolo en particular nunca es prefijo de la cadena de bits de un símbolo distinto) que representa los caracteres más comunes usando las cadenas de bits más cortas, y viceversa.

EJEMPLO

FRASE a codificar: "Esto es un ejemplo de árbol de Huffman".

Page 117: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS

DE ÁRBOLES DE DECISION ( II )

Haremos una tabla para

representar cada carácter es

importante saber su numero

de frecuencia, y su código,

es bueno organizar cada

carácter de mayor a menor,

esto significa que aquel

carácter que tenga el numero

de frecuencia mayor será el

primero y así sucesivamente

(frecuencia asumirlo como

numero de repeticiones que

presenta un carácter).

CARÁCTER FRECUENCIA CODIGO

Espacio 7 00

E 6 100

O 3 1100

N 2 1110

U 2 0100

S 2 0101

M 2 1010

F 2 1011

L 2 0110

D 2 0111

A 2 11010

B 1 110110

H 1 110111

J 1 111100

P 1 111101

R 1 111110

T 1 111111

Page 118: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

ARBOL REPRESENTACION CODIFICACION

DE HUFFMAN

Page 119: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS DE

ÁRBOLES DE DECISION ( III )

Árboles de decisión en una crisis empresarial.

El análisis de la crisis empresarial se configura como un aspecto clave en el análisis de estados financieros al permitir a la empresa disponer de un sistema de diagnóstico que abarque los aspectos de solvencia y de rentabilidad.

Un árbol de decisión representa la relación existente entre la conclusión-decisión y sus atributos.

Importe (menor de 100.000, entre 100.000 y 500.000, mayor de 500.000)

Solvencia (alta, media y baja)

Page 120: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …
Page 121: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS

DE ÁRBOLES DE DECISION ( V )

Arboles de juego

Genera el árbol de acuerdo al nivel de previsión y cada

jugador va decidiendo que jugada le conviene más de

acuerdo a la evaluación de una determinada posición.

Page 122: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

APLICACIONES INFORMATICAS

DE ÁRBOLES DE DECISION ( IV )

Árboles de decisión utilizados en sistemas expertos.

Puede llegar a ser lento pues analiza todas las posibilidades

pero esto a su vez es lo que lo vuelve mas preciso que al

hombre.

Page 123: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

ARBOL RECUBRIDOR

Dado un grafo conexo, un árbol recubridor de ese grafo es un sub-grafo que es un árbol y conecta todos los vértices.

Se le puede asignar un peso a cada arista, que es un número que representa qué tan adecuado es, y se usa para asignar un peso al árbol recubridor mínimo computando la suma de todos los pesos de las aristas del árbol en cuestión.

Un árbol recubridor o un árbol expandido es un árbol recubridor que pesa menos o igual que otros árboles recubridores. Todo grafo tiene un bosque recubridor mínimo.

El árbol recubridor es usado frecuentemente para algoritmos informáticos, los algoritmos más destacados se explicaran a continuación.

Page 124: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

SOFTWARE

ALGORITMOS VORACES ALGORITMO DE KRUSKAL

Encuentra el árbol recubridor mínimo en un grafo conexo y ponderado.

Algoritmo:1. Se marca la arista con menor

valor. Si hay más de una, se elige cualquiera de ellas.

2. De las aristas restantes, se marca la que tenga menor valor, si hay más de una, se elige cualquiera de ellas.

3. Repetir el paso 2 siempre que la arista elegida no forme un ciclo con las ya marcadas.

4. El proceso termina cuando tenemos todos los vértices del grafo en alguna de las aristas marcadas, es decir, cuando tenemos marcados n-1 arcos, siendo n el número de vértices del grafo.

Page 125: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Public Sub kruskal()

Call traskruskal()

'se va escogiendo el menor de la matriz que no tenga los dos

destinos conectados

Dim i As Integer = 0, j As Integer = 0

Dim menorvalor As Integer = 15000

Dim nodotemp As New nodoPeso

indParejas = 0

Do While kruskalVisitoTodos() = False

For i = 0 To maxNodos

For j = 0 To maxNodos

If MatGrafokruskal(i, j) <> 0 And MatGrafokruskal(i, j)

< menorvalor And kruskal_conectados(i, j) = False Then

nodotemp.nodepeso = MatGrafokruskal(i, j)

nodotemp.inicio = i

nodotemp.fin = j

menorvalor = MatGrafokruskal(i, j)

End If

Next Next

vectorparejaK(indParejas).a = nodotemp.inicio

vectorparejaK(indParejas).b = nodotemp.fin

indParejas += 1

VectVisitaKruskal(indiceVisitasK) = nodotemp.inicio

indiceVisitasK += 1

VectVisitaKruskal(indiceVisitasK) = nodotemp.fin

indiceVisitasK += 1

MatGrafoKruskaldibuja(nodotemp.inicio, nodotemp.fin) =

nodotemp.nodepeso

menorvalor = 15000

Loop

Dim ut As Integer = 0

Dim m As Integer, n As Integer, q As Integer, s As Integer

For i = 0 To maxNodos

ut = 0

For j = 0 To maxNodos

ut += MatGrafoKruskaldibuja(i, j)

Next

If ut = 0 Then

n = 15000

q = -1

For m = 0 To maxNodos

If Kruskal_conectados2(i, m) = False And

MatGrafokruskal(i, m) < n And MatGrafokruskal(i, m) <> 0

And DijkstraKruskal(i, m) = False Then

n = MatGrafokruskal(i, m)

q = m s = i

End If

Next

If q <> -1 Then

MatGrafoKruskaldibuja(s, q) = 1

End If

End If

Next

End Sub

Public Sub traskruskal()

Dim i As Integer, j As Integer

For i = 0 To maxNodos

For j = 0 To maxNodos

MatGrafokruskal(i, j) = MatGrafo(i, j)

Next

Next

End Sub

Page 126: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

SOFTWARE ALGORITMOS VORACES

ALGORITMO DE DIJKSTRA También conocido como ruta más corta;

a partir de un vértice determinado se obtienen todas las rutas más cortas hacia todos los demás vértices.

Los pasos a seguir para el algoritmo son:

1. Conocer el vértice de origen y el vértice de destino.

2. Marcar el vértice de origen y conocer a sus vecinos

3. Mirar los costos de las rutas hacia sus vecinos

4. Marcar el vecino de la ruta más corta

5. El vecino marcado se convierte en el nuevo vértice de origen

6. Hace paso 2 y 3

7. Comparar todas las rutas que hay de sus vecinos y no vecinos no marcados que ya tengan costo asociado.

8. Obtener el vértice de costo mínimo asociado y marcarlo

9. Volver a el paso 2

Vértice 1 2 3 4 5 6 7

Ruta - 1,2 1,3 1,4 1,3,5 1,3,6 1,3,5,7

Costo 0 9 7 8 10 12 18

Page 127: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Public Sub Dijkstra()

Dim nNodo As Integer = InputBox("Digite la id del vertice

inicio:", "", "1")

nNodo -= 1

Dim i As Integer = 0

TextBox1.Text = ""

For i = 0 To indiceNodos - 2

ap.Clear()

If i <> nNodo Then

ValorMinimo = 20000

indRecorridoDij = 0

ap.Add(nNodo)

digcal(nNodo, nNodo, nNodo, i, 0)

TextBox1.Text = TextBox1.Text & vbNewLine & "V[" &

CStr(nNodo + 1) & "]-[" & CStr(i + 1) & "] menor peso: " &

ValorMinimo & " Lista : " & ImpListaRec()

End If

Public Function digcal(ByVal porigen As Integer, ByVal

DondeVengo As Integer, ByVal dondeEstoy As Integer, ByVal

dondeVoy As Integer, ByVal suma As Integer) As Integer

Dim val1 As Integer = 0

Dim val2 As Boolean = False

Dim i As Integer

If dondeEstoy = dondeVoy Then

'se encontro

If suma < ValorMinimo Then

ValorMinimo = suma

indRecorridoDij = 0

For i = 0 To ap.Count - 1

recorridoDij(i).a = ap(i)

Next

indRecorridoDij = ap.Count

End If

Return suma

Else

Dim res As Integer

For i = 0 To maxNodos

val1 = MatGrafoDijkstra(dondeEstoy, i)

val2 = estaLista(i)

If val1 <> 0 And val2 = False And i <> dondeEstoy Then

ap.Add(i)

res = digcal(porigen, dondeEstoy, i, dondeVoy, suma +

MatGrafoDijkstra(dondeEstoy, i))

ap.Remove(i)

End If

Next

End If

End Function

Page 128: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

SOFTWARE ALGORITMOS VORACES

ALGORITMO DE PRIM

El algoritmo de Prim es un algoritmo de la teoría

de grafos para encontrar un árbol recubridor

mínimo (MST) en un grafo conexo (igual que el

algoritmo de kruskal), no dirigido y cuyas aristas

están etiquetados. Si el grafo no es conexo,

entonces el algoritmo encontrara el árbol

recubridor mínimo para uno de los componentes

conexos que forman dicho grafo no conexo.

Page 129: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

Dim inicio As Integer = 0

Dim i As Integer

Dim menorE As New nodoPeso

Dim menorEM As New nodoPeso

Dim menorvalor As Integer = 15000

Call trasprim()

Call limpiarVisitas()

vectVisitaNodo(indiceVisitas) = inicio

indiceVisitas += 1

Do While primVisitoTodos() = False

menorvalor = 15000

For i = 0 To indiceVisitas - 1

menorE = NodoMenor(vectVisitaNodo(i))

If menorE.nodepeso < menorvalor And

menorE.nodepeso <> 0 Then

'colocar en una varuable vectVisitaNodo(i) y el fin

que es nodoE

menorvalor = menorE.nodepeso

menorEM.inicio = vectVisitaNodo(i)

menorEM.nodoE = menorE.nodoE

menorEM.nodepeso = menorE.nodepeso

End If

Next

If visitado(menorEM.nodoE) = False Then

' no ha sdo visitado

vectVisitaNodo(indiceVisitas) = menorEM.nodoE

indiceVisitas += 1

'dibuje el arco entre vectVisitaNodo(i) y menor e

MatGrafoPrimdibuja(menorEM.inicio,

menorEM.nodoE) = menorEM.nodepeso

End If

Loop

menorvalor = 15000

End Sub

Public Sub trasprim()

Dim i As Integer, j As Integer

For i = 0 To maxNodos

For j = 0 To maxNodos

MatGrafoPrim(i, j) = MatGrafo(i, j)

Next

Next

For i = 0 To maxNodos

For j = 0 To maxNodos

If MatGrafoPrim(j, i) <> 0 Then

MatGrafoPrim(i, j) = MatGrafoPrim(j, i)

End If

Next

Next

End Sub

Page 130: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

SOFTWARE ALGORITMOS VORACES

IMAGEN DESCRIPCION No vistos En el grafo En el árbol

Este es el grafo que será puesto de partida.

No es un árbol ya que requiere que no haya

circuitos y en este grafo los hay. Los

números cerca de las aristas indican el

peso. Ninguna de las aristas esta marcada, y

el vértice D ha sido elegido arbitrariamente

como el punto de partida.

C, G A, B, E, F D

El segundo vértice es el más cercano a D: A

esta a 5 de distancia, B a 9, E a 15 y F a 6.

De estos, 5 es el valor mas pequeño, así que

marcamos la arista DA.

C, G B, E, F A, D

El próximo vértice a elegir es el mas

cercano a D o A. B esta a 9 de distancia de

D y a 7 de A, E esta a 15 y F esta a 6. 6 es

el menor

C B, E, G A, D, F

Page 131: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

SOFTWARE ALGORITMOS VORACESEl algoritmo continúa. El vértice B que esta a

una distancia de 7 de A, es el siguiente

marcado. En este punto la arista DB es

marcada porque sus dos extremos ya están en

el árbol y por lo tanto no podrá ser utilizado.

NULL C,E,G A,D,F,B

Aquí hay que elegir entre C, E Y G. C esta a 8

de distancia de B, E esta a 7 de distancia de B,

y G esta a 11 de distancia de F. E esta mas

cerca, entonces marcamos el vértice E y la

arista EB. Otras dos aristas fueron marcadas

porque ambos vértices que unen fueron

agregados al árbol.

NULL C,G A,D,F,B,E

Solo quedan disponibles C y G. C esta a 5 de

distancia de E, y G a 9 de distancia de E. Se

elige C, y se marca con el arco EC. El arco BC

también se marca.

NULL G A,D,F,B,E,

C

G es el único vértice pendiente, y esta mas

cerca de E que de F, asi que se agrega EG al

árbol. Todos los vértices están ya marcados, el

árbol de expansión minimo se muestra. En

este caso con un peso de 39.

NULL NULL A,D,F,B,E,

C,G

Page 132: FORMATO 2 (Anexo No.3) FORMULARIO DE LA DESCRIPCIÓN DE …

MUCHAS GRACIAS