You are on page 1of 24

UNIVERSIDAD PRIVADA DEL NORTE Laureate International Universities

FACULTAD DE ARQUITECTURA, DISEO E INGENIERA


Carrera: Ingeniera de Sistemas Computacionales

Algebra Lineal y Numrica


Trabajo de aplicacin

TEORIA DE GRAFOS

INTEGRANTES:
CODIGO APELLIDOS Y NOMBRES C1 C2 C3 C4 C5 TOTAL

57950 58445 57272 57878 57996

Garca Montoya Alexis Llucho Cuba Diana Lino Flores ,Jonathan Mendoza Arana Christian Torres Rojas Jess

_________________________________ Docente: Valverde Morales Miguel.

NDICE
CONTENIDOS I. II. III. IV. V. INFORMACIN DE GRUPO ................................................ INTRODUCCION .................................................................. PROBLEMA .......................................................................... HIPOTESIS........................................................................... OBJETIVOS.......................................................................... 5.1 GENERAL ...................................................................... 5.2 ESPECIFICOS................................................................ VI. MARCO TERICO ............................................................... 6.1 6.2
6.3

Pg. 03 04 05 05 05 05 05 06 06 06 09 09 10 11 12 12 14 15 23 24
25

Teora de Grafos ........................................................ Graficas Dirigidas. ...................................................... Tipos de Grafos .......................................................... 6.3.1 Grafo Simple ..................................................... 6.3.2 Grafo Completo ................................................. 6.3.3 Grafos Bipartido ................................................ 6.3.4 Grafos Planos.................................................... 6.3.5 Grafos Conexo .................................................. 6.3..6 Grafos Ponderado ............................................

VII. VIII. IX. X.

DESARROLLO DEL PROYECTO ........................................ RESULTADOS O CONCLUSIONES ................................... BIBLIOGRAFA Y/O LINKOGRAFA .................................... ANEXOS ................................................................................................

I.

INFORMACIN DEL GRUPO

CUADRO DE INTEGRANTES DEL GRUPO NOMBRES Y APELLIDOS CODIGO ESCUELA

Garca Montoya Alexis

57950

Ing. De Sistemas Comp.

Llucho Cuba Diana

58445

Ing. De Sistemas Comp.

Lino Flores Jonathan

57272

Ing. De Sistemas Comp.

Mendoza Arana Christian

57878

Ing. De Sistemas Comp.

Torres Rojas Jess

57996

Ing. De Sistemas Comp.

CUADRO DE CONTROL DE ASISTENCIA NOMBRES Y APELLIDOS 1 Reunin 2 Reunin 3 Reunin

Garca Montoya Alexis

Llucho Cuba Diana

Lino Flores Jonathan

Mendoza Arana Christian

Torres Rojas Jess

II.

INTRODUCCION

La teora de grafos o teora de grficas es un rea relativamente nueva de las matemticas, que se utiliza ampliamente para formular modelos de muchos problemas en los negocios, las ciencias sociales , las ciencias fsicas y la ingeniera pero tambin es aplicada en una gran cantidad de reas tales como ciencias sociales, lingstica, ingeniera de comunicacin, y otras. La teora de grafos tambin juega un papel importante en varias reas de la ciencia de la computacin, tales como teora de cambio y lgica de diseo, inteligencia artificial, lenguajes formales, grficos por

computadora, sistemas operativos, compiladores, y organizacin y recuperacin de informacin.

En este proyecto presentaremos ejemplos representados por algoritmos que nos permitirn conocer un poco ms acerca de esta materia, que incluye la relacin entre lgica de programacin y la forma de emplear estos conceptos elementales de grafos para elaborar soluciones de algunos problemas importantes.

III.

PROBLEMA Todos estamos familiarizados con los sorprendentes resultados que se logran con ayuda de los mtodos, funciones y algoritmos (empleados en algn lenguaje de programacin), que nos permiten programar y automatizar procesos. Entonces, Cmo influye el uso de la teora de grafos en el desarrollo de algoritmos para lenguajes de programacin de alto nivel?

IV.

HIPOTESIS La teora de grafos nos ayuda a comprender y desarrollar problemas sobre el tema de Listas en el lenguaje de programacin C++.

V.

OBJETIVOS 5.1 General Aplicar la teora de grafos en el desarrollo de algoritmos para lenguajes de programacin de alto nivel, en nuestro caso C++.

5.2 Especficos Determinar conceptos previos del tema de teora de grafos. Determinar las distintas aplicaciones de la teora de grafos en la realidad. Lograr comprender de manera grfica como es la estructura lgica de las listas en C++

VI.

MARCO TERICO MATEMTICO 6.1 TEORIA DE GRAFOS Hablando intuitivamente, un grafo es un conjunto de nodos unidos por un conjunto de lneas o flechas. Por lo general, los nodos son entes de procesamiento o estructuras que contienen algn tipo de informacin y las lneas o flechas son conexiones o relaciones entre estos entes. Si se utilizan flechas para conectar los nodos decimos que el grafo es dirigido (tambin llamado dgrafo) porque las relaciones entre los nodos tienen una direccin. En caso contrario el grafo es no dirigido. En cualquiera de los dos casos, bien sea que se utilicen lneas o flechas, a estas relaciones se les puede llamar simplemente aristas.

Frecuentemente las aristas tambin tienen algn tipo de informacin asociada (distancia, costo, confiabilidad, etc.), en cuyo caso estamos en presencia de un grafo pesado. [1] 6.2 GRAFICAS DIRIGIDAS Las grficas dirigidas (conocidas tambin como digrficas) son conjuntos finitos de puntos P1, P2, . . . , Pn, llamados vrtices o nodos, junto con conjuntos finitos de arcos(aristas o lados) dirigidos, cada uno de los cuales une un par ordenado de vrtices distintos. De acuerdo con lo anterior, la arista dirigida Pi Pj es diferente de la arista dirigida Pj Pi. Observe que en una digrfica podra no haber una arista dirigida del vrtice Pi a alguno de los otros vrtices, y viceversa. Por otro lado, ninguno de los vrtices de una digrfica puede estar unido a l mismo por medio de una sola arista dirigida, pero s mediante otros vrtices.
[1]

ALGORITMOS BASICOS DE GRAFOS UNIV.CENTRAL DE VENEZUELA -PAG#22

Expresamos esta propiedad diciendo que no hay bucles (o lazos). Adems, supondremos que no hay aristas dirigidas mltiples que unan a cualesquiera dos vrtices. [2] EJEMPLO 1 La figura 1 muestra cuatro ejemplos de grficas dirigidas. La digrfica de la figura 1(a) tiene vrtices, P1, P2 y P3, y aristas dirigidas, P1P2 y P2P3; la digrfica de la figura 1(b) tiene vrtices P1, P2, P3 y P4 y aristas dirigidas P1P2 y P1P3; la digrfica de la figura 1(c) tiene vrtices P1, P2 y P3 y aristas dirigidas P1P2, P1P3 y P3P1; la digrfica de la figura 1(d) tiene vrtices P1, P2 y P3 y aristas dirigidas P2P1, P2P3, P1P3 y P3P1. Un par de aristas dirigidas como P1P3 y P3P1 se indican por medio de un segmento recto o curvo con una flecha de doble punta, P1P3.

[2]

BERNARD KOLMAN ALGEBRA LINEA 8VA EDICION.-PAG#125

EJEMPLO 2 Una liga de boliche consta de siete equipos: T1, T2, . . . , T7. Suponga que despus de cierto nmero de juegos tenemos la siguiente situacin: T1 venci a T2 y T5, y perdi contra T3; T2 venci a T5, y perdi contra T1 y T3; T3 venci a T1 y T2, y perdi contra T4; T4 venci a T3, y perdi contra T7; T5 perdi contra T1 y T2; T6 no ha jugado; T7 venci a T4. Con la informacin anterior obtenemos la digrfica de la figura 2, donde TiTj significa que Ti venci a Tj. Las digrficas pueden utilizarse en muchas situaciones, incluyendo problemas de comunicaciones, relaciones familiares, estructuras sociales, mapas de calles, diagramas de flujo, problemas de transporte, circuitos elctricos y cadenas ecolgicas. Tanto en las siguientes pginas como en los ejercicios analizaremos algunos de estos casos.

EJEMPLO 3 Suponga que seis individuos se han reunido en sesiones de terapia de grupo durante mucho tiempo, y el moderador, que no es parte del grupo, ha trazado la digrfica G de la figura 3 para describir las relaciones de influencia entre ellos. La matriz de adyacencia de G es

Al observar las filas de A(G), vemos que P3 tiene tres unos (1) en su fila, de modo que P3 influye en tres personas (ms que cualquier otro individuo). En consecuencia, P3 sera declarado lder del grupo. Por otro lado, P5 no influye en persona alguna del grupo.

6.3 TIPOS DE GRAFOS 6.3.1 GRAFOS SIMPLES Un grafo es simple si a lo ms existe una arista uniendo dos vrtices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la nica que une dos vrtices especficos. Un grafo que no es simple se denomina multigrafo. [3]

[3]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#130

6.3.2 GRAFOS COMPLETO Un grafo es completo si existen aristas uniendo todos los pares posibles de vrtices. Es decir, todo par de vrtices (a, b) debe tener una arista e que los une. El conjunto de los grafos completos es denominado usualmente K, siendo Kn el grafo completo de n vrtices. Un Kn, es decir, grafo completo de n vrtices tiene exactamente n(n-1)/2 aristas. La representacin grfica de los como los vrtices de un polgono

regular da cuenta de su peculiar estructura. [4]

[4]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#130

10

6.3.3 GRAFOS BIPARTIDOS: Un grafo G es bipartito si puede expresarse como G = {V1 U V2, A} (es decir, sus vrtices son la unin de dos grupos de vrtices), bajo las siguientes condiciones: V1 y V2 son disjuntos y no vacos. Cada arista de A une un vrtice de V1 con uno de V2. No existen aristas uniendo dos elementos de V1; anlogamente para V2. Bajo estas condiciones, el grafo se considera bipartito, y puede describirse informalmente como el grafo que une o relaciona dos conjuntos de elementos diferentes, como aquellos resultantes de los ejercicios y puzzles en los que debe unirse un elemento de la columna A con un elemento de la columna B.[5]

[5]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#131

11

6.3.4 GRAFOS PLANOS: Un grafo G es planar si admite una representacin en el plano de tal forma que las aristas no se cortan, salvo en sus extremos. A dicha representacin se le denomina grafo plano. Se dice que un grafo es plano si puede dibujarse en el plano de manera que ningn par de sus aristas se corte. A ese dibujo se le llama representacin plana del grafo.[6]

6.3.5 GRAFOS CONEXO: Un grafo es conexo si cada par de vrtices est conectado por un camino; es decir, si para cualquier par de vrtices (a, b), existe al menos un camino posible desde a hacia b. Un grafo es fuertemente conexo si cada par de vrtices est conectado por al menos dos caminos disjuntos; es decir, es conexo y no existe un vrtice tal que al sacarlo el grafo resultante sea disconexo.

[6]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#131

12

Es posible determinar si un grafo es conexo usando un algoritmo Bsqueda en anchura (BFS) o Bsqueda en profundidad (DFS). En trminos matemticos la propiedad de un grafo de ser (fuertemente) conexo permite establecer en base a l una relacin de equivalencia para sus vrtices, la cual lleva a una particin de stos en "componentes (fuertemente) conexas", es decir, porciones del grafo, que son (fuertemente) conexas cuando se consideran como grafos aislados. Esta propiedad es importante para muchas demostraciones en teora de grafos. [7]

[7]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#134

13

6.3.6 GRAFOS PONDERADO: Llamamos grafos ponderados a los grafos en los que se asigna un nmero a cada una de las aristas. Este nmero representa un peso para el recorrido a travs de la arista. Este peso podr indicar, por ejemplo, la distancia, el costo monetario o el tiempo invertido, entre otros. Denimos la longitud de un camino en un grafo ponderado como la suma delos pesos de las aristas de ese camino. [8]

[8]

Bernard Kolman-Algebra Lineal 6ta Edic.-Pag#135

14

VII.

DESARROLLO DEL PROYECTO CASO: Estructuras de Lista y Grafos.

Este subtema ser tocado primeramente con la representacin de una estructura que es ms general que un rbol. Dicha estructura es llamada estructura de lista, y varios lenguajes de programacin han sido desarrollados para permitir un procesamiento sencillo similar a los que sern descritos. La necesidad del procesamiento de listas proviene de de un alto costo en el rpido almacenaje computacional y de la impredecible naturaleza del requerimiento de almacenaje de los programas y datos en computadora. Hay varias aplicaciones en la manipulacin de smbolos en las cuales esta incertidumbre es particularmente aguda. Se mostrara que una estructura de lista puede ser usada para representar un grafo dirigido. Segundamente, daremos una introduccin a la representacin de la estructura general de un grafo. Dichas representaciones estn basadas no solo en la naturaleza de los datos, sino tambin en las operaciones que sern realizadas sobre los datos. En el contexto del procesamiento de listas, definimos una lista como una secuencia finita de cero o ms tomos o listas, donde un tomo es concebido como un objeto (por ejemplo, una cadena de smbolos) el cual se distingue de una lista por ser estructuralmente indivisible. Si agrupamos a las listas entre parntesis y separamos los elementos por comas, entonces lo siguiente puede ser considerado una lista: (a, (b, c), d, (e,f,g)) () (((a)))

15

La primera lista contiene cuatro elementos, propiamente, el tomo a, la lista (b, c) la cual contiene a los tomos b y c, el tomo d, y la lista (e, f, g) cuyos elementos son los tomos e, f, y g. La segunda lista no contiene elemento alguno, pero una lista nula continua siendo una lista valida de acuerdo con nuestra definicin. La tercera lista contiene un elemento, la lista ((a)) la cual contiene el elemento simple (a), el cual contiene al tomo a. Existe una relacin distinta entre grafos y listas. Una lista es un grafo dirigido con un nodo fuente (un nodo cuyo grado de entrada es 0) correspondiente a la lista completa, y con cada nodo inmediatamente conectado al nodo de la fuente que corresponde a un elemento de la lista incluso siendo un nodo con grado de salida 0 (para tomos) o siendo un nodo que tenga ramas (para elementos que son listas) emanando de l. Cada nodo excepto el nodo fuente. Los ejes que salen de un nodo son considerados listas ordenadas. Esto significa que podemos distinguir entre el primer eje, el segundo eje, etc., que corresponden al orden de los elementos desde el primer elemento, el segundo elemento, etc. Adems, no hay ciclos en el grafo. La teora anterior podra bien aplicarse a los rboles. De cualquier manera, las listas son, de hecho, extensiones de los rboles excepto porque una lista se puede contener a s misma como elemento y un rbol no. Existen algunas listas que no pueden ser representadas por rboles, pero cada rbol puede ser representado como lista. Las lista pueden tener una estructura anidada esencialmente recursiva que ningn rbol puede tener. As hay algunas listas que tienen una representacin finita en nuestra notacin de parntesis y comas, pero que corresponde a grafos infinitos. Los grafos de algunos ejemplos de listas aparecen en la figura 11. Si, de cualquier manera, M

16

es la lista (a, b, M), entonces tenemos un grafo infinito para M, como se muestra en la figura 12 .

Las tcnicas de asignacin dinmica pueden ser usadas para representar listas en la memoria de una computadora. En dicha representacin existen dos tipos de nodos, uno para los tomos y otro para los elementos de lista. Un nodo atmico contiene dos campos: el primero almacena el valor del tomo (por ejemplo, una cadena de smbolos), y el segundo contiene un apuntador al siguiente elemento de la lista. Un nodo de lista contiene tambin dos campos:

17

el primer campo apunta la representacin del almacenamiento de la lista, y el segundo apunta al elemento que sigue a este elemento de lista en particular. Se asume que un nodo atmico y un nodo de lista son distinguibles. Obsrvese que adems de orden, una lista tiene tambin profundidad. La profundidad de una lista es el nmero de niveles que contiene. As, en la figura 11 los elementos a y d estn en el nivel 1, y b y c estn en el nivel 2. El nmero de pares de parntesis que rodean un elemento indican su nivel. El elemento d en la lista (a,(b, (c, (d)))) tiene un nivel de 4.

El orden y la profundidad son ms fcilmente en trminos de nuestra representacin de almacenamiento, donde el orden est indicado por las flechas horizontales y la profundidad por flechas verticales que apuntan hacia abajo. As, la lista (a, (b, c), d, (e, f, g)) sera representada por la estructura de almacenamiento de la figura 13. En el almacenamiento, varias listas pueden compartir sublistas comunes. Por ejemplo, las listas (a (b, c), d) y (1, 5.2, (b, c)) podran ser representadas como en la figura 14.

18

La lista recursiva M, donde M es (a, b, M), puede ser representada como se muestra en la figura 15. Naturalmente usaremos esta representacin de almacenaje en los casos en los que las estructuras estn compartidas en vez de generar un nmero infinito de nodos que correspondan a un grafo infinito, pero se debe tener mucho cuidado al manejar dicha estructura recursiva para evitar caer en un ciclo infinito.

19

Una estructura de lista se presenta frecuentemente en el proceso de informacin, aunque no sea siempre evidente. Considrese un enunciado simple en ingls que consta de sujeto, verbo y objeto. Dicho enunciado puede ser interpretado como una lista de tres elementos, cuyos elementos pueden ser atmicos (palabras simples) o listas (frases). Las siguientes oraciones y sus correspondientes representaciones en lista son ejemplos:

Man bites dog. = (Man, bites, dog)

The man bites the dog = ((The, man), bites, (the, dog))

The big man is biting the small dog = ((The, big, man), (is, biting), (the, small, dog))

El sujeto y el objeto del ltimo ejemplo pueden ser incluso separados en sustantivos y adjetivos como se muestra a continuacin:

(((The, big), (man)), (is, biting), (the, small), (dog)))

La representacin del almacenamiento de este ejemplo se ve en la figura 16.

20

Por todo lo anterior, las estructuras de lista son usadas para representar dgrafos, y una propiedad de dicha representacin es que las sublistas pueden estar compartidas. Como un ejemplo, un dgrafo y su representacin en lista se muestran en la figura 17.

En ocasiones se pueden usar arreglos (cuando existe como mximo un eje entre un par cualquiera de nodos) para representar grafos. En este caso los nodos son numerados de 1 a n, y se usa un arreglo bidimensional con n filas y n columnas para representar al grafo. As mismo, se podran requerir vectores para almacenar datos de los nodos en dicha representacin. Este enfoque no es muy adecuado para un grafo que tiene un gran nmero de nodos o muchos nodos que estn conectados a solo algunos ejes, ni cuando el grafo deba ser continuamente alterado.

Si hay un nmero de ramas entre un par de nodos y un nmero considerable nmero de nodos que estn conectados a nicamente a otros pocos nodos, entonces la representacin de la estructura de almacenaje para dicho grafo

21

podra ser una de las mostradas en la figura 18. Obsrvese que el grafo tiene un cierto peso y que la representacin de almacenaje est formada por una tabla directorio, y asociada a cada entrada en este directorio podemos tener una lista de ejes. Un directorio de entrada de nodos tpico est formado por el nmero de nodo, el dato asociado a l, el nmero de ejes que emanan a de l, y un campo apuntador que da la lista de ejes asociadas a este nodo. Cada lista de ejes, en este caso, es almacenada como una tabla secuencial cuya entrada tpica consiste en el peso de un eje y el nmero del nodo en que este eje en particular termina. Para un grafo que es continuamente alterado, una representacin que almacene las listas de ejes como una lista ligada es ms deseable. En este caso no es necesario tener el campo que denota el nmero de ejes en la tabla directorio de los nodos.

22

VIII.

CONCLUSIONES

En conclusin la teora de grafos aplicada a distintos campos de la programacin nos ayudara a tener una idea ms clara del funcionamiento y recorrido estructurado de nuestros algoritmos.

23

IX.

BIBLIOGRAFIA Y/O LINKOGRAFIA

BIBLIOGRAFIA: Algebra Lineal 8va Edicion Bernard Kolman.

LINKOGRAFIA: www.matematica1.com www.matematicasdiscretas.blogspot.com www.matematicasparacomputadoras.com www.youtube.com/watch?v=3LcvmxTq51Y

24