unidad vi matematicas discretas

29
UNIDAD VI. Teoría de grafos. 6.1 Elementos y características de los grafos. Definición de grafo Un grafo, G, es un par ordenado de V y A, donde V es el conjunto de vértices o nodos del grafo y A es un conjunto de pares de vértices, a estos también se les llama arcos o ejes del grafo. Un vértice puede tener 0 o más aristas, pero toda arista debe unir exactamente a dos vértices. Los grafos representan conjuntos de objetos que no tienen restricción de relación entre ellos. Un grafo puede representar varias cosas de la realidad cotidiana, tales como mapas de carreteras, vías férreas, circuitos eléctricos, etc. La notación G = A (V, A) se utiliza comúnmente para identificar un grafo. Los grafos se constituyen principalmente de dos partes: las aristas, vértices y los caminos que pueda contener el mismo grafo. Elementos de los grafos Aristas Son las líneas con las que se unen las aristas de un grafo y con la que se construyen también caminos. Si la arista carece de dirección se denota indistintamente {a, b} o {b, a}, siendo a y b los vértices que une. Si {a ,b} es una arista, a los vértices a y b se les llama sus extremos. Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vértice. Aristas Paralelas: Se dice que dos aristas son paralelas si vértice inicial y el final son el mismo. Aristas Cíclicas: Arista que parte de un vértice para entrar en el mismo. Cruce: Son dos aristas que cruzan en un punto. Vértices

Upload: peter-c-biafra

Post on 31-Jul-2015

3.168 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: UNIDAD VI Matematicas Discretas

UNIDAD VI. Teoría de grafos.

6.1 Elementos y características de los grafos.

Definición de grafo

Un grafo, G, es un par ordenado de V y A, donde V es el conjunto de vértices o nodos del grafo y A es un conjunto de pares de vértices, a estos también se les llama arcos o ejes del grafo. Un vértice puede tener 0 o más aristas, pero toda arista debe unir exactamente a dos vértices.

Los grafos representan conjuntos de objetos que no tienen restricción de relación entre ellos. Un grafo puede representar varias cosas de la realidad cotidiana, tales como mapas de carreteras, vías férreas, circuitos eléctricos, etc.

La notación G = A (V, A) se utiliza comúnmente para identificar un grafo.

Los grafos se constituyen principalmente de dos partes: las aristas, vértices y los caminos que pueda contener el mismo grafo.

Elementos de los grafos

Aristas

Son las líneas con las que se unen las aristas de un grafo y con la que se construyen también caminos.

Si la arista carece de dirección se denota indistintamente {a, b} o {b, a}, siendo a y b los vértices que une.

Si {a ,b} es una arista, a los vértices a y b se les llama sus extremos.

Aristas Adyacentes: Se dice que dos aristas son adyacentes si convergen en el mismo vértice.

Aristas Paralelas: Se dice que dos aristas son paralelas si vértice inicial y el final son el mismo.

Aristas Cíclicas: Arista que parte de un vértice para entrar en el mismo.

Cruce: Son dos aristas que cruzan en un punto.

Vértices

Son los puntos o nodos con los que esta conformado un grafo.

Llamaremos grado de un vértice al número de aristas de las que es extremo. Se dice que un vértice es `par' o `impar' según lo sea su grado.

Vértices Adyacentes: si tenemos un par de vértices de un grafo (U, V) y si tenemos un arista que los une, entonces U y V son vértices adyacentes y se dice que U es el vértice inicial y V el vértice adyacente.

Vértice Aislado: Es un vértice de grado cero.

Vértice Terminal: Es un vértice de grado 1.

Page 2: UNIDAD VI Matematicas Discretas

Caminos

Sean x, y " V, se dice que hay un camino en G de x a y si existe una sucesión finita no vacía de aristas {x,v1}, {v1,v2},..., {vn,y}. En este caso

x e y se llaman los extremos del camino

El número de aristas del camino se llama la longitud del camino.

Si los vértices no se repiten el camino se dice propio o simple.

Si hay un camino no simple entre 2 vértices, también habrá un camino simple entre ellos.

Cuando los dos extremos de un camino son iguales, el camino se llama circuito o camino cerrado.

Llamaremos ciclo a un circuito simple

Un vértice a se dice accesible desde el vértice b si existe un camino entre ellos. Todo vértice es accesible respecto a si mismo

6.1.2 Tipos de grafos

Podemos clasificar los grafos en dos grupos: dirigidos y no dirigidos. En un grafo no dirigido el par de vértices que representa un arco no está ordenado. Por lo tanto, los pares (v1, v2) y (v2, v1) representan el mismo arco. En un grafo dirigido cada arco está representado por un par ordenado de vértices, de forma que y representan dos arcos diferentes.

Ejemplos

G1 = (V1, A1)

V1 = {1, 2, 3, 4} A1 = {(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)}

G2 = (V2, A2)

V2 = {1, 2, 3, 4, 5, 6} A2 = {(1, 2), (1, 3), (2, 4), (2, 5), (3, 6)}

G3 = (V3, A3)

V3 = {1, 2, 3} A3 = { <1, 2>, <2, 1>, <2, 3> }

Gráficamente estas tres estructuras de vértices y arcos se pueden representar de la siguiente manera:

Page 3: UNIDAD VI Matematicas Discretas

Hay también 6 tipos principales de grafos; simples, completos, bipartidos, planos,conexos y ponderados.

Grafo simple. Se dice que el grafo G = (V, E) es un grafo simple de grado n si todos sus vértices tienen grado n.

Ejemplos:

Grafo completo. Un grafo es completo si cada par de vértices está unido por una arista. Se denota por Kn al grafo completo de n vértices. Ejemplos:

Page 4: UNIDAD VI Matematicas Discretas

Grafo bipartido.Un grafo es bipartido si V=V1∪V2 y cada arista de E une un vértice de V1 y otro de V2. Ejemplos:

-Grafo bipartido completo.Un grafo es bipartido completo si V=V1∪V2 y dos vértices de V están unidos por una arista de E si y solo si un vértice está en V1 y el otro en V2. Se denota por Kr,sal grafo bipartido completo donde V1 tiene r vértices y V2 tiene s vértices

Grafos planos.  Un grafo plano es aquel que puede ser dibujado en el plano sin que ninguna arista se interseque.Ejemplos:

Page 5: UNIDAD VI Matematicas Discretas

Grafos conexos. Un grafo es conexo si cada par de vértices está conectado por un camino; es decir, si para cualquier par de vértices (a, b), existe al menos un camino posible desde a hacia b. Ejemplos:

Grafo ponderado. Un grafo es ponderado si presenta los pesos de cada arista y se puede determinar la longitud de una ruta, la cual es la suma de todos los pesos de las aristas.

Ejemplos:

Page 6: UNIDAD VI Matematicas Discretas

6.2 Representación de grafos

Matriz de adyacencia

Dado un grafo G = (V, E) con n vértices {v1, ..., vn} su matriz de adyacencia es la matriz de orden n×n, A(G)=(aij) donde aijes el número de aristas que unen los vértices vi y vj.

Page 7: UNIDAD VI Matematicas Discretas

La matriz de adyacencia de un grafo es simétrica. Si un vértice es aislado entonces la correspondiente fila (columna) esta compuesta sólo por ceros. Si el grafo es simple entonces la matriz de adyacencia contiene solo ceros y unos (matriz binaria) y la diagonal esta compuesta sólo por ceros.

Matriz de incidencia

Dado un grafo simple G = (V, E) con n=|V| vértices {v1, ..., vn} y m=|E| aristas {e1, ..., em}, su matriz de incidencia es la matriz de orden nxm, B(G)=(bij), donde bij=1 si vi es incidente con ej y bij=0 en caso contrario.

Ejemplo:

La matriz de incidencia sólo contiene ceros y unos (matriz binaria). Como cada arista incide exactamente en dos vértices, cada columna tiene exactamente dos unos. El número de unos que aparece en cada fila es igual al grado del vértice correspondiente. Una fila compuesta sólo por ceros corresponde a un vértice aislado.

6.3 Algoritmos de recorrido y búsqueda

6.3.1 El camino mas corto

El problema de los caminos más cortos es el problema que consiste en encontrar un camino entre dos vértices (o nodos) de tal manera que la suma de los pesos de las aristas que lo constituyen es mínima. Un ejemplo es encontrar el camino más rápido para ir de una ciudad a otra en un mapa. En este caso, los vértices representan las ciudades, y las aristas las carreteras que las unen, cuya ponderación viene dada por el tiempo que se emplea en atravesarlas.Ahora bien, podemos emplear el algoritmo de Dijkstra para éstos casos, los pasos o procedimiento a seguir para éste algoritmo son los siguientes:

Page 8: UNIDAD VI Matematicas Discretas

Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo inicial, un vector D de tamaño N guardará al final del algoritmo las distancias desde x al resto de los nodos.

1. Inicializar todas las distancias en D con un valor infinito relativo ya que son desconocidas al principio, exceptuando la de x que se debe colocar en 0 debido a que la distancia de x a x sería 0.

2. Sea a = x (tomamos a como nodo actual).3. Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos a

estos vi.4. Si la distancia desde x hasta vi guardada en D es mayor que la distancia desde x hasta a,

sumada a la distancia desde a hasta vi; esta se sustituye con la segunda nombrada, esto es:si (Di > Da + d(a, vi)) entonces Di = Da + d(a, vi)

5. Marcamos como completo el nodo a.6. Tomamos como próximo nodo actual el de menor valor en D (puede hacerse almacenando

los valores en una cola de prioridad) y volvemos al paso 3 mientras existan nodos no marcados.

Una vez terminado al algoritmo, D estará completamente lleno.

Ejemplo:

El siguiente ejemplo se desarrollará con el fin de encontrar el camino más corto desde a hasta z:

Leyenda:

Rojo: Aristas y vértices pertenecientes a la solución momentánea. Azul: Aristas y vértices candidatos.

Page 9: UNIDAD VI Matematicas Discretas

Paso 1

En este primer paso, podemos apreciar que hay tres candidatos: Los vértices b, c y d. En este caso, hacemos el camino desde el vértice a, hasta el vértice d, ya que es el camino más corto de los tres.

Solución momentánea:

Camino: AD Distancia:5Paso 2

Ahora, vemos que se añade un nuevo candidato, el vértice e, y el vértice c, pero esta vez a través del d. Pero el camino mínimo surge al añadir el vértice c.

Solución momentánea:

Camino: ADC Distancia:9

Page 10: UNIDAD VI Matematicas Discretas

Paso 3

En este paso no se añade ningún candidato más puesto que el último vértice es el mismo que en el paso anterior. En este caso el camino mínimo hallado es el siguiente:

Solución momentánea:

Camino: ADCB Distancia:11Paso 4

Como podemos comprobar, se han añadido dos candidatos nuevos, los vértices f y g, ambos a través del vértice b. El mínimo camino hallado en todo el grafo hasta ahora es el siguiente:

Solución momentánea:

Camino: ADCBF Distancia:15

Page 11: UNIDAD VI Matematicas Discretas

Paso 5

En este antepenúltimo paso, se añaden tres vértices candidatos, los vértices g, z y e. Este último ya estaba pero en esta ocasión aparece a través del vértice f. En este caso el camino mínimo, que cambia un poco con respecto al enterior, es:

Solución momentánea:

Camino: ADCBF Distancia:19Paso 6

En el penúltimo paso, vuelve a aparecer otro candidato: el vértice e, pero esta vez a través del vértice f. De todas formas, el camino mínimo vuelve a cambiar para retomar el camino que venía siguiendo en los pasos anteriores:

Solución momentánea:

Camino: ADCBFE Distancia:18

Page 12: UNIDAD VI Matematicas Discretas

Paso 7

Por fin, llegamos al último paso, en el que sólo se añade un candidato, el vértice z a través del e. El camino mínimo y final obtenido es:

Solución Final:

Camino: ADCBFEZ Distancia:23

6.2.2 A lo ancho

La búsqueda en anchura es otro procedimiento para visitar sistemáticamente todos los vértices de un grafo. Es adecuado especialmente para resolver problemas de optimización, en los que se deba elegir la mejor solución entre varias posibles. Al igual que en la búsqueda en profundidad se comienza en un vértice v (la raíz) que es el primer vértice activo. En el siguiente paso se etiquetan como visitados todos los vecinos del vértice activo que no han sido etiquetados. Se continúa etiquetando todos los vecinos de los hijos de v (que no hayan sido visitados aún). En este proceso nunca se visita un vértice dos veces por lo que se construye un grafo sin ciclos, que será un árbol

generador de la componente conexa que contiene a v. Sea G(V, E) un grafo conexo y v un vértice de V. El algoritmo de búsqueda en anchura puede detallarse así:

1. Designamos a v como vértice activo y como raíz del árbol generador T que se construirá. Se le asigna a v la etiqueta 0.

2. Sea i=0 y S={v}.

3. Hallar el conjunto M de todos los vértices no etiquetados que son adyacentes a algún vértice de S.

4. Si M es vacío el algoritmo termina. En caso contrario, se etiquetan todos los vértices de M con i+1, se añaden a T las aristas entre cada vértice de S y su vecino en M y se hace S=M.

5. i=i+1 y volver al paso 3.

Page 13: UNIDAD VI Matematicas Discretas

Al terminar el proceso se habrá construido un árbol generador del grafo inicial. En caso

de G no ser conexo, habría que modificar el algoritmo para encontrar un árbol

generador de cada componente conexa de G. La complejidad de este algoritmo es

O(max{n, m}).

6.2.3 Búsqueda en profundidad.

Muchos algoritmos de grafos necesitan visitar de un modo sistemático todos los vértices de un grafo. En la búsqueda en profundidad se avanza de vértice en vértice, marcando cada vértice visitado. La búsqueda siempre avanza hacia un vértice no marcado, internándose “profundamente” en el grafo sin repetir ningún vértice. Cuando se alcanza un vértice cuyos vecinos han sido marcados, se retrocede al anterior vértice visitado y se avanza desde éste. Si dado un grafo simple G, escogemos un vértice v para iniciar la exploración del grafo utilizando la búsqueda en profundidad, el árbol que se construye es un árbol generador de la componente conexa del grafo que contiene a v. Sea G(V, E) un grafo conexo y v un vértice de V. El algoritmo de búsqueda en profundidad puede detallarse así:

1. Se comienza en un vértice v (vértice activo) y se toma como la raíz del árbol generador T que se construirá. Se marca el vértice v.

2. Se elige un vértice u, no marcado, entre los vecinos del vértice activo. Si no existe tal vértice, ir a 4.

3. Se añade la arista (v, u) al árbol T. Se marca el vértice u y se toma como activo. Ir al paso 2.

4. Si se han alcanzado todos los vértices de G el algoritmo termina. En caso contrario, se toma el vértice padre del vértice activo como nuevo vértice activo y se vuelve al paso 2.

La complejidad de este algoritmo es O(max{n, m})

6.4 Arboles

6.4.1 Componentes de los árboles.

Un árbol es una estructura de datos dinámica ( las estructuras del árbol pueden cambiar durante

la ejecución del programa ) no lineal ( puesto que a cada elemento del árbol puede seguirle varios

elementos ) y homogénea en el que cada elemento puede tener varios elementos posteriores y

solamente un elemento anterior. Es una estructura jerárquica aplicada sobre una colección de

elementos u objetos llamados nodos, de los cuales uno es conocido como raíz , además se crea

Page 14: UNIDAD VI Matematicas Discretas

una relación de parentesco entre los nodos dando lugar a términos como padre, hijo, hermano, 

antecesor, sucesor, ancestro, etc.

Un árbol es una estructura que está compuesta por un dato y varios árboles. Dado un nodo

cualquiera de la estructura, podemos considerarlo como una estructura independiente, es decir

un nodo cualquiera puede ser considerado como la raíz de una árbol completo.

En relación con otros nodos:

o Nodo Padre: Nodo que contiene un puntero al nodo actual. En un árbol un nodo solo puede tener un nodo padre.. X es padre de Y sí y solo sí el nodo X apunta a Y, tambien se dice que X es antecesor de Y. En la figura B es padre de E y F.

o Nodo Hijo: Cualquiera de los nodos apuntados por uno de los nodos del aŕbol. Un nodo puede tener varios hijos.. X es hijo de Y, sí y solo sí el nodo X es apuntado por Y. Tambien se dice que X es descenciente directo de Y. En la figura : E es hijo de B.

o Hermano: Dos nodos serán hermanos si son descencientes directos de un mismo nodo. En la figura Ey F son hermanos.

En cuanto a la posición dentro del árbol:

o Nodo Raíz: Es el único nodo del árbol que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En la figura A es el nodo raíz.

o Nodo Hoja: Nodo que no tiene hijos. Se llama hoja o terminal a aquellos nodos que no tienen ramificaciones ( hijos ). En la figura .. N es un nodo hoja.

o Nodo Interior: Es un nodo que no es raíz ni hoja. En la figura .. D es un nodo interior.o Orden: Es el número potencial de hijos que puede tener cada elemento de árbol. De este

modo, diremos que un árbol en el que cada nodo puede apuntar a otros dos es de orden

Page 15: UNIDAD VI Matematicas Discretas

dos, si puede apuntar a tres será de orden tres, etc. Podríamos decir que nuestro árbol de ejemplo es de orden tres.

o Grado: El número de hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo, el grado es tres, ya que tanto A como D tienen tres hijos, y no existen elementos con más de tres hijos.

o Nivel: Se define para cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de la raíz es cero, el de sus hijos uno y asi sucesivamente. En el ejemplo, el nodo D tiene nivel 1, el nodo G tiene nivel 2 y el nodo N nivel 3.

o Rama: Es el camino desde el nodo raíz a una hoja. En el ejemplo A-B-E-K y A-B-F son ramas.

o Altura: La altura de un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un árbol puede considerarse a su vez como la raíz de un árbol, tambien podemos hablar de altura de ramas, el máximo número de nodos que hay que recorrer para llegar de la raíz a una de las hojas. El árbol de la Figura tiene altura 3, la rama B tiene altura 2, la rama G tiene altura 1 y la N cero.

o Peso: Es el número de nodos del árbol sin contar la raíz.o Camino: Es una consecuencia de nodos, en el que dos nodos consecutivos cualesquiera

son padre e hijo. En el ejemplo A-D-H y A-C-G-M son caminos.o Longitud de camino: Es el número de arcos que deben ser recorridos para llegar desde la

raíz al nodo X. Por definición la raíz tiene longitud de camino 1, y sus descendientes directos longitud de camino 2 y así sucesivamente. En nuestro árbol de ejemplo G tiene longitud de camino 3 y N tiene longitud de camino 4.

6.4.2 Propiedades de los árboles

1. Dados dos nodos cualesquiera de un árbol, existe exactamente un camino que los conecta.2. Un árbol con N nodos tiene N-1 aristas.3. Un árbol binario con N nodos internos tiene N+1 nodos externos.

4. La altura de un árbol binario lleno1 con nodos internos es aproximadamente .

5. En general, la altura promedio de un árbol binario es , pero puede llegar a

ser .

6.4.3 Clasificación de árboles

Un árbol binario es un árbol con raíz en el que cada nodo tiene como máximo dos hijos. Un árbol binario es un árbol en el que ningún nodo puede tener más de dos subárboles. En un árbol binario cada nodo puede tener cero, uno o dos hijos (subárboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

Page 16: UNIDAD VI Matematicas Discretas

Un árbol binario lleno es un árbol en el que cada nodo tiene cero o dos hijos. Un árbol binario perfecto es un árbol binario lleno en el que todas las hojas (vértices con cero

hijos) están a la misma profundidad (distancia desde la raíz, también llamada altura). A veces un árbol binario perfecto es denominado árbol binario completo. Otros definen un

árbol binario completo como un árbol binario lleno en el que todas las hojas están a profundidad n o n-1, para alguna n.

Un árbol binario es un árbol en el que ningún nodo puede tener más de dos subárboles. En un árbol binario cada nodo puede tener cero, uno o dos hijos (subárboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho.

6.4.4 Arboles con peso. (Recubridor mínimo)

Dado un grafo conexo, un árbol recubridor mínimo de ese grafo es un subgrafo que tiene que ser un árbol y contener todos los vértices del grafo inicial. Cada arista tiene asignado un peso proporcional entre ellos, que es un número representativo de algún objeto, distancia, etc.. , y se usa para asignar un peso total al árbol recubridor mínimo computando la suma de todos los pesos de las aristas del árbol en cuestión. Un árbol recubridor mínimo o un árbol expandido mínimo es un árbol recubridor que pesa menos o igual que otros árboles recubridores. Todo grafo tiene un bosque   recubridor  mínimo.En el caso de un empate, porque podría haber más de un árbol recubridor mínimo; en particular, si todos los pesos son iguales, todo árbol recubridor será mínimo. De todas formas, si cada arista tiene un peso distinto existirá sólo un árbol recubridor mínimo. La demostración de esto es trivial y se puede hacer por inducción. Esto ocurre en muchas situaciones de la realidad, como con la compañía de cable en el ejemplo anterior, donde es extraño que dos caminos tengan exactamente el mismo coste. Esto también se generaliza para los bosques recubridores.Si los pesos son positivos, el árbol recubridor mínimo es el subgrafo de menor costo posible conectando todos los vértices, ya que los subgrafos que contienen ciclos necesariamente tienen más peso total.

Page 17: UNIDAD VI Matematicas Discretas

6.4.5 Recorrido de un árbol: Preorden, Inorden, Postorden,

Recorrido en preorden

En este tipo de recorrido se realiza cierta acción (quizás simplemente imprimir por pantalla el valor de la clave de ese nodo) sobre el nodo actual y posteriormente se trata el subárbol izquierdo y cuando se haya concluido, el subárbol derecho. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo raiz, nodo izquierda, nodo derecha.

En el árbol de la figura el recorrido en preorden sería: 2, 7, 2, 6, 5, 11, 5, 9 y 4.

Recorrido en postorden

En este caso se trata primero el subárbol izquierdo, después el derecho y por último el nodo actual. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda, nodo derecha, nodo raiz. En el árbol de la figura el recorrido en postorden sería: 2, 5, 11, 6, 7, 4, 9, 5 y 2.

Page 18: UNIDAD VI Matematicas Discretas

Recorrido en inorden

En este caso se trata primero el subárbol izquierdo, después el nodo actual y por último el subárbol derecho. En un ABB este recorrido daría los valores de clave ordenados de menor a mayor. Otra forma para entender el recorrido con este metodo seria seguir el orden: nodo izquierda,nodo raiz,nodo derecha. En el árbol de la figura el recorrido en inorden sería: 2, 7, 5, 6, 11, 2, 5, 4, 9.

6.5 Redes. (teorema de flujo máximo, teorema de flujo mínimo, pareos y redes de Petri)

Una Red de Transporte es una grafica dirigida, simple, con pesos y que debe cumplir las siguientes:

Poseer una fuente o vértice fijo que no tiene aristas de entrada.

Poseer un sumidero o vértice fijo que no tiene arista de salida

El peso Cij de la arista dirigida de i a j llamado capacidad de “ij” es un numero no negativo.

Ejemplo de una red que parte de un punto a que es un Muelle y llega a un punto z que es una refinería.

Page 19: UNIDAD VI Matematicas Discretas

Teorema de flujo máximo.

Siendo G una red de trasporte, un flujo máximo es un flujo con valor máximo. En general, habrá varias flujos con el mismo valor máximo. La idea es sencilla: comenzar con cierto flujo inicial e incrementar de forma iterativa hasta que no pueda mejorarse más. El flujo resultante será el máximo.Para aumentar el valor de un flujo dado, debemos determinar un camino de la fuente al sumidero e incrementar el flujo a lo largo de ese camino.

Teorema del flujo mínimo.

En lo que respecta a las redes, un corte es un conjunto de corte en el cual quedan

dos partes disjuntas del conjunto de vértices, V1 y V2 que, situados en la red, dejan la fuente en

una de ellas y al sumidero en la otra.

Se llama capacidad de un corte a la suma:

Capacidad (v,w) ; v Є V1 , w ЄV2

V1 es la parte que contiene a la fuente

V2 es la parte que contiene al sumidero

Sea F un flujo en G y sea (P, P) un corte en G. Entonces la capacidad de (p, p) es mayor o

igual que el valor de F; es decir:

i ЄP JЄP Cij i F ai

La notación i : Significa la suma sobre todos los vértices i

Demostración: observe j ЄP iЄP Cji = j ЄP iЄP F

ij

Pues cada lado de la ecuación es simplemente la suma de Fij sobre todas las de i, j Є P

Page 20: UNIDAD VI Matematicas Discretas

Ahora

i F ai

= j ЄP j Fji -j ЄP j

=j ЄP iЄP Fji +j ЄP iЄP Fji- =j ЄP iЄP Fji

=j ЄP iЄP Fji -j ЄP iЄP Fji- j ЄP iЄP Fji j ЄP iЄP Cji

El corte minimal nos da la minima capacidad del corte efectuado en el grafo.

Redes de Petri

Una red de Petri es un grafo orientado con dos tipos de nodos: lugares (representados mediante circunferencias) y transiciones (representadas por segmentos rectos verticales). Los lugares y las transiciones se unen mediante arcos o flechas.

Un arco une siempre lugares con transiciones y nunca dos lugares o dos transiciones.

Una transición puede ser destino de varios lugares y un lugar puede ser el destino de varias transiciones.

Una transición puede ser origen de varios lugares y un lugar puede ser origen de varias transiciones.

Los lugares pueden presentar marcas (una marca se representa mediante un punto en el interior del círculo).Cada lugar tiene asociada una acción o salida.

Los lugares que contiene marcas se consideran lugares activos.

Cuando un lugar está activo sus salidas están a uno.

Page 21: UNIDAD VI Matematicas Discretas

A las transiciones se les asocia eventos (funciones lógicas de las variables de entrada).

Una transición se dice que está sensibilizada cuando todos su lugares origen están marcados.

Cuando ocurre un evento asociado a una transición (la función lógica se hace uno), se dice que la transición está validada.

6.6 Aplicaciones de grafos y arboles

Aplicaciones de grafos

Gracias a la teoría de grafos se pueden resolver diversos problemas como por ejemplo la síntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para diferentes áreas por ejemplo, Dibujo computacional, en toda las áreas de Ingeniería.

Los grafos se utilizan también para modelar trayectos como el de una línea de autobús a través de las calles de una ciudad, en el que podemos obtener caminos óptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd.

Para la administración de proyectos, utilizamos técnicas como PERT en las que se modelan los mismos utilizando grafos y optimizando los tiempos para concretar los mismos.

La teoría de grafos también ha servido de inspiración para las ciencias sociales, en especial para desarrollar un concepto no metafórico de red social que sustituye los nodos por los actores sociales y verifica la posición, centralidad e importancia de cada actor dentro de la red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la estructura social puede representarse gráficamente. Por ejemplo, una red social puede representar la estructura de poder dentro de una sociedad al identificar los vínculos (aristas), su dirección e intensidad y da idea de la manera en que el poder se transmite y a quiénes.

Los grafos son importantes en el estudio de la biología y hábitat. El vértice representa un hábitat y las aristas (o "edges" en inglés) representa los senderos de los animales o las migraciónes. Con

Page 22: UNIDAD VI Matematicas Discretas

esta información, los científicos pueden entender cómo esto puede cambiar o afectar a las especies en su hábitat.

Aplicaciones de árboles.

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. Por ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta situación es bastante útil en el manejo de las bases de datos, para evitar un problema que se llama redundancia.

Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tiene elementos, se deben hacer comparaciones, claro, no es mucho problema si es un número pequeño, pero el problema se va complicando más a medida que aumenta.

Si usamos un árbol binario, el número de comparaciones se reduce bastante, veamos cómo.

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 son la información del nodo raíz y se crean los nuevos hijos con el siguiente criterio:

Si el elemento del arreglo es igual que la información del nodo raíz, entonces notificar duplicidad.

Si el elemento del arreglo es menor que la información del nodo raíz, entonces se crea un hijo izquierdo.

Si el elemento del arreglo es mayor que la información del nodo raíz, entonces se crea un hijo derecho.

Una vez que ya está creado el árbol, se pueden buscar los elementos repetidos. Si x el elemento buscado, se debe recorrer el árbol del siguiente modo:

Sea k la información del nodo actual p. Si entonces cambiar el nodo actual a right(p), en caso contrario, en caso de que informar una ocurrencia duplicada y en caso de

que cambiar el nodo actual a left(p).

Page 23: UNIDAD VI Matematicas Discretas

Para saber el contenido de todos los nodos en un árbol es necesario recorrer el árbol. Esto es debido a que solo tenemos conocimiento del contenido de la dirección de un nodo a la vez. Al recorrer el árbol es necesario tener la dirección de cada nodo, no necesariamente todos al mismo tiempo, de hecho normalmente se tiene la dirección de uno o dos nodos a la vez; de manera que cuando se tiene la dirección de un nodo, se dice que sevisita ese nodo.

Aunque hay un orden preestablecido (la enumeración de los nodos) no siempre es bueno recorrer el árbol en ese orden, porque el manejo de los apuntadores se vuelve más complejo. En su lugar se han adoptado tres criterios principales para recorrer un árbol binario, sin que de omita cualquier otro criterio diferente.

Los tres criterios principales para recorrer un árbol binario y visitar todos sus nodos son, recorrer el árbol en:

preorden:

Se ejecutan las operaciones:

1. Visitar la raíz2. recorrer el subárbol izquierdo en preorden3. recorrer el subárbol derecho en preorden

entreorden:Se ejecutan las operaciones:

Page 24: UNIDAD VI Matematicas Discretas

1. recorrer el subárbol izquierdo en entreorden2. Visitar la raíz3. recorrer el subárbol derecho en entreorden

postorden:Se ejecutan las operaciones:

1. recorrer el subárbol izquierdo en postorden2. recorrer el subárbol derecho en postorden3. Visitar la raíz

Al considerar el árbol binario que se muestra en la figura 28 usando cada uno de los tres criterios para recorrer el árbol se tienen las siguientes secuencias de nodos:

En preorden:

En entreorden:

En postorden:

Esto nos lleva a pensar en otra aplicación, el ordenamiento de los elementos de un arreglo.

Para ordenar los elementos de un arreglo en sentido ascendente, se debe construir un árbol similar al árbol binario de búsqueda, pero sin omitir las coincidencias.

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>