TEORÍA DE GRÁFICAS · 2012-09-06 · Curso Matemática Discreta II – Prof. Jorge Castro Monge,...

76
Curso Matemática Discreta II Prof. Jorge Castro Monge, M.Sc. Página 1 TEORÍA DE GRÁFICAS La teoría de gráficas se inicia con ideas geométricas muy simples y tiene muchas aplicaciones importantes. Una gráfica G consta de un conjunto finito V de objetos llamados vértices y un conjunto finito E de objetos llamados aristas y una función γ que asigna a cada arista un subconjunto {v, w}, donde v y w son vértices (que podrían ser iguales). Se escribe G = (V,E, γ) cuando se deba enfatizar los vértices de G. Si e es una aris- ta, y γ(e) = {v, w}, se dice que e es una arista entre v y w y que e está determinada por v y w. Los vértices v y w son los extremos de e. Si sólo existe una arista entre v y w, con frecuencia se identifica a e con el conjunto {v, w}. EJEMPLO. Sean V = {1, 2, 3, 4} y E = {e1, e2, e3, e4, e5}. Sea γ dada por γ(e1) = γ(e5) = {1, 2}, γ(e2) = {4, 3}, γ(e3) = {1, 3}, γ(e4) = {2, 4} Entonces G = (V, E, γ) es una gráfica. Cualquiera de las siguientes figuras representa la gráfica dada en el ejemplo anterior. El grado de un vértice es el número de aristas que tienen a ese vértice como extremo. Una gráfica puede contener a una arista de un vértice a sí mismo; tal arista es un bucle cerrado (o lazo). Un bucle cerrado con- tribuye en 2 unidades al grado de un vértice. EJEMPLO. En la gráfica 4, el vértice A tiene grado 2, el vértice B tiene grado 4 y el vértice D tiene grado 3. En la figura 5, el vértice a tiene grado 4, el vértice e tiene grado 0 y el vértice b tiene grado 2. Cada vértice de la figura 6 tiene grado 2.

Transcript of TEORÍA DE GRÁFICAS · 2012-09-06 · Curso Matemática Discreta II – Prof. Jorge Castro Monge,...

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 1

TEORÍA DE GRÁFICAS La teoría de gráficas se inicia con ideas geométricas muy simples y tiene muchas aplicaciones importantes. Una gráfica G consta de un conjunto finito V de objetos llamados vértices y un conjunto finito E de objetos llamados aristas y una función γ que asigna a cada arista un subconjunto {v, w}, donde v y w son vértices (que podrían ser iguales). Se escribe G = (V,E, γ) cuando se deba enfatizar los vértices de G. Si e es una aris-ta, y γ(e) = {v, w}, se dice que e es una arista entre v y w y que e está determinada por v y w. Los vértices v y w son los extremos de e. Si sólo existe una arista entre v y w, con frecuencia se identifica a e con el conjunto {v, w}.

EJEMPLO. Sean V = {1, 2, 3, 4} y E = {e1, e2, e3, e4, e5}. Sea γ dada por

γ(e1) = γ(e5) = {1, 2}, γ(e2) = {4, 3}, γ(e3) = {1, 3}, γ(e4) = {2, 4}

Entonces G = (V, E, γ) es una gráfica.

Cualquiera de las siguientes figuras representa la gráfica dada en el ejemplo anterior.

El grado de un vértice es el número de aristas que tienen a ese vértice como extremo. Una gráfica puede contener a una arista de un vértice a sí mismo; tal arista es un bucle cerrado (o lazo). Un bucle cerrado con-tribuye en 2 unidades al grado de un vértice.

EJEMPLO. En la gráfica 4, el vértice A tiene grado 2, el vértice B tiene grado 4 y el vértice D tiene grado 3.

En la figura 5, el vértice a tiene grado 4, el vértice e tiene grado 0 y el vértice b tiene grado 2.

Cada vértice de la figura 6 tiene grado 2.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 2

Un vértice de grado 0 es un vértice aislado. Dos vértices que determinan una arista son vértices adyacentes.

Definición: Una trayectoria (o camino) en una gráfica es una sucesión π: v1, v2, . . . ,vk de vértices, cada uno adyacente al siguiente, y una elección de una arista entre vi y vi+1, de modo que ninguna arista es elegida más de una vez. En términos geométricos, esto significa que es posible iniciar en v1 y viajar a través de las aristas hasta vk y nunca utilizar la misma arista dos veces.

Un circuito es una trayectoria que inicia y termina en el mismo vértice. En el tema anterior llamamos a esto un ciclo de trayectoria, sin embargo la palabra circuito es más común en teoría general de grafos. Una tra-yectoria v1, v2, . . . ,vk es simple si ningún vértice aparece más de una vez. De manera análoga un circuito v1, v2, . . . ,vk-1, vk es simple si los vértices v1, v2, . . . ,vk-1, vk son todos distintos.

EJEMPLO. Las trayectorias de la figura 4 incluyen a π1: D, E, B, C, π2: A, B, E, D, D y π3: A, B, A

Algunos ejemplos de trayectorias en la gráfica de la figura 5 son: π4: a, b, c, a y π5: d, c, a, a. La trayectoria π5 es un circuito.

En la figura 6, la sucesión 1, 2, 3, 2 no es una trayectoria, pues la única arista existente entre 2 y 3 tendría que recorrerse dos veces.

La trayectoria π6: c, a, b, c, d de la figura 5 no es simple.

Una gráfica es conexa si existe una trayectoria de cualquier vértice a otro de la gráfica. En caso contrario, la gráfica es disconexa. Si la gráfica es disconexa, las diversas partes conexas son las componentes de la gráfica.

EJEMPLO. La gráfica 4 es conexa. Las gráficas de las figuras 5 y 6 son disconexas. La gráfica de la figura 6 tiene dos componentes.

TRAYECTORIAS Y CIRCUITOS DE EULER Una trayectoria en una gráfica G es una trayectoria de Euler si incluye a cada una de las aristas sólo una vez. Un circuito de Euler es una trayectoria de Euler que es a la vez un circuito.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 3

EJEMPLO. Una trayectoria de Euler en la figura 7 es π: E, D, B, A, C, D

Un circuito de Euler en la figura 8 es π: 5, 3, 2, 1, 3, 4, 5

TEOREMA 1 Si una gráfica G tiene un vértice de grado impar, entonces no puede existir un circuito de Euler en G. Si G es una gráfica conexa y todos los vértices tiene grado par, entonces existe un circuito de Euler en G.

TEOREMA 2 Si una gráfica G tiene más de dos vértices de grado impar, entonces no puede existir una trayectoria de Euler en G.

Si G es conexa y tiene exactamente dos vértices de grado impar, entonces existe una trayectoria de Euler en G. Cualquier trayectoria de Euler debe comenzar en un vértice de grado impar y terminar en el otro.

EJEMPLO. ¿Cuáles de las gráficas de las figuras 9, 10 y 11 tienen un circuito de Euler, una trayectoria de Euler pero no un circuito de Euler, o ninguno de éstos?

En la figura 9, cada uno de los cuatro vértices tiene grado 3, de manera que no existe un circuito o trayecto-ria de Euler.

La gráfica de la figura 10 tiene exactamente dos vértices de grado impar. No existe un circuito pero si una trayectoria de Euler.

En la figura 11, todos los vértices tienen grado par; así, la gráfica debe tener un Circuito de Euler.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 4

DEFINICIÓN: Una arista {vi, vj} es un puente en una gráfica conexa de G si al eliminar {vi, vj} se crea una gráfica disconexa. Por ejemplo en la gráfica 4 {B, E} es un puente.

ALGORITMO DE FLEURY Sea G = (V, E, γ) una gráfica conexa con todos sus vértices de grado par.

Paso 1. Se elige un miembro v de V como vértice inicial para el circuito. Sea π: v el inicio de la trayectoria por construir.

Paso 2. Suponga que ya se ha construido π: v, u, . . ., w. Si en w sólo existe una arista {w, z}, se extiende π a π: v, u, . . ., w, z. Se elimina {w, z} de E y w de V. Si en w existen varias aristas, se elige una que no sea un puente {w, z}. Extienda π a π: v, u, . . ., w, z y se elimina {w, z} de E.

Paso 3. Repita el paso 2 hasta que no sobren aristas en E.

Fin del algoritmo.

EJEMPLO. Utilice el algoritmo de Fleury para construir un circuito de Euler para la gráfica siguiente:

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 5

Ruta corriente Arista siguiente π: A {A, B} π: A, B {B, C} π: A, B, C {C, A} π: A, B, C, A {A, D} π: A, B, C, A, D {D, C} π: A, B, C, A, D, C {C, E} π: A, B, C, A, D, C, E {E, G} π: A, B, C, A, D, C, E, G {G, F} π: A, B, C, A, D, C, E, G, F {F, E} π: A, B, C, A, D, C, E, G, F, E {E, H} π: A, B, C, A, D, C, E, G, F, E, H {H, G} π: A, B, C, A, D, C, E, G, F, E, H, G {G, A} π: A, B, C, A, D, C, E, G, F, E, H, G, A

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 6

EJERCICIOS Para cada una de las siguientes gráficas, indique si tiene un circuito de Euler, una trayectoria de Euler o nin-guno de éstos. Justifique su respuesta.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 7

TRAYECTORIAS Y CIRCUITOS DE HAMILTON Ahora se verá a la segunda categoría de problemas de gráficas, donde la tarea consiste en visitar cada vérti-ce sólo una vez, con la excepción del vértice inicial, si éste también debe ser el último vértice. Por ejemplo, tal trayectoria podría ser útil para alguien que deba proporcionar servicio a un conjunto de máquinas ex-pendedoras de manera regular. Se puede representar cada máquina expendedora mediante un vértice.

Una trayectoria hamiltoniana es aquella que contiene cada vértice sólo una vez. Un circuito hamiltoniano es aquel que contiene cada vértice sólo una vez, excepto el primer vértice, que también es el último. Este tipo de trayectoria recibe el nombre del matemático Sir William Hamilton, quien desarrolló y comercializó un juego que consistía en una gráfica de madera en forma de dodecaedro regular, con las instrucciones para encontrar lo que se llama circuito hamiltoniano. La figura (a) muestra una versión plana de este sólido, con un circuito hamiltoniano (uno de muchos) mostrado en la figura (b) mediante los vértices numerados en forma consecutiva.

EJEMPLO 1. Considere la gráfica de la figura a. La trayectoria a, b, c, d, e es una trayectoria hamiltoniana, pues contiene cada vértice sólo una vez. Sin embargo, no es difícil ver que no existe un circuito hamiltoniano para esta gráfica. Para la gráfica de la figura b, la trayectoria A, D, C, B, A (puede elegirse cualquier arista de B a A) es un circuito hamiltoniano. En las figuras c y d, no es posible tener una trayectoria hamiltoniana. (Verifique esta afirmación.)

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 8

EJEMPLO 2. Cualquier gráfica completa Kn tiene circuitos hamiltonianos. De hecho, si se parte de cualquier vértice, pue-de visitarse todos los demás en forma secuencial y en el orden deseado.

Pueden surgir preguntas sobre cuestiones análogas a las correspondientes a las trayectorias y circuitos de Euler acerca de las trayectorias y circuitos hamiltonianos. ¿Es posible determinar si existe una trayectoria o circuito de Hamilton? Si debe existir una trayectoria o circuito hamiltoniano ¿existe una manera eficiente de determinarlo?

Es claro que los bucles cerrados y las aristas múltiples no son muy útiles para determinar circuitos hamilto-nianos, ya que no puede utilizarse los bucles cerrados, y sólo puede utilizarse una arista entre cualesquiera dos vértices. Así, se supondrá que cualquier gráfica mencionada no tiene bucles cerrados ni aristas múlti-ples.

Si una gráfica G de n vértices tiene un circuito hamiltoniano, entonces G debe tener al menos n aristas.

Ahora, se establecerá algunas respuestas parciales, las cuales establecen que si una gráfica G tiene "suficien-tes" aristas, entonces puede determinarse un circuito hamiltoniano.

Sea G una gráfica conexa con n vértices, n> 2, sin bucles cerrados ni aristas múltiples. De nuevo, éstos son enunciados de existencia; no proporcionan métodos para construir un circuito hamiltoniano.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 9

TEOREMA 1. G tiene un circuito hamiltoniano si para cualesquiera dos vértices u y v de G que no sean adyacentes, el grado de u más el grado de v es mayor o igual que n.

Se omitirá la demostración de este resultado, pero mediante él puede demostrarse lo siguiente:

COROLARIO. G tiene un circuito hamiltoniano si cada vértice tiene grado mayor o igual que n/2.

TEOREMA 2.

Sea m el número de aristas de G. Entonces G tiene un circuito hamiltoniano si ≥ ( − 3 + 6). (Re-

cuerde que n es el número de vértices.)

EJERCICIOS:

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 10

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 11

ÁRBOLES El árbol es un tipo especial de relación de excepcional utilidad, con gran aplicación en las ciencias de la computación y que por lo general se representa mediante un dígrafo. Estas relaciones son esenciales para construir bases de datos y compiladores de lenguajes de computación, por nombrar solamente dos áreas importantes.

Sea A un conjunto y T una relación en A. T es un árbol si existe un vértice v0 en A con la propiedad de que existe una única trayectoria en T de v0 hacia cualquier otro vértice en A, pero no existe una trayectoria de v0 a v0.

El vértice v0 es único. Con frecuencia es llamado raíz del árbol T, siendo T un árbol con raíz. Se escribe (T, v0) para denotar un árbol T con raíz v0.

Si (T, v0) es un árbol con raíz sobre el conjunto A, un elemento v de A es un vértice en T.

TEOREMA 1. Sea (T, v0) un árbol con raíz. Entonces:

No existen ciclos en T.

V0 es la única raíz en T.

Cada vértice en T distinto de v0 tiene grado interno 1, y v0 tiene grado interno 0.

El teorema 1 resume las propiedades geométricas de un árbol. Con estas propiedades en mente, es posible analizar la apariencia del dígrafo de un árbol típico.

Primero se traza la raíz v0. Ninguna arista entra a v0, pero pueden salir varias, las cuales generalmente son trazadas hacia abajo. Los vértices terminales de las aristas que inician en v0 son los vértices de nivel 1, mien-tras que v0 está en el nivel 0. También se acostumbra decir que v0 es el padre de estos vértices de nivel 1, y los vértices del nivel 1 son los hijos de v0. Cada vértice en el nivel 1 no tiene otras aristas que entren el él, por la parte (c) del teorema 1, pero cada uno de esos vértices puede tener varias aristas que salgan de él. Se trazan las aristas que salen de un vértice de nivel 1 hacia abajo y terminan en diversos vértices, que existen en el nivel 2. En estos niveles también existe una relación padre – hijo ( y en cada pareja consecutiva de niveles). Los hijos de cada uno de los vértices son llamados hermanos.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 12

El proceso anterior continúa con tantos niveles como sean necesarios para completar el dígrafo. Si se ob-serva el dígrafo de arriba hacia abajo, se entiende por qué a estas relaciones se las llama árboles. El mayor nivel de un árbol, es la altura de éste. Los vértices del árbol que no tienen hijos son las hojas del árbol.

Los vértices de un árbol que se encuentran en cualquier nivel forman simplemente un conjunto de vértices en A. Sin embargo, por lo general, es útil suponer que los hijos de cada vértice del árbol están linealmente ordenados. Así si un vértice v tiene cuatro hijos, se supondrá que están ordenados, por lo que se hará refe-rencia a ellos como el primero, segundo, tercero y cuarto hijo de v. Siempre que se trace el dígrafo del ár-bol, se supondrá un orden en cada nivel, al disponer los hijos de izquierda a derecha. Un árbol de este tipo es un árbol ordenado.

EJEMPLO. Sean A = {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10} y T = {(v2, v3), (v2, v1), (v4, v5), (v4, v6), (v5, v8), (v6, v7), (v4, v2), (v7, v9), (v7, v10)}. Muestre que T es un árbol con raíz e identifíquela.

Solución:

Ninguna trayectoria inicia en lo vértices v1, v3, v8, v9 y v10. Por lo tanto estos vértices son las hojas del árbol. No existen trayectorias de los demás vértices a v4, por lo que se deben eliminar como posibles raíces. Así, si T es un árbol, su raíz es v4.

Se muestra a continuación la estructura de dicho árbol.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 13

Si n es un entero positivo, un árbol T es un n-árbol (árbol n-ario) si cada vértice tiene a lo más n hijos. Si todos los vértices de T distintos de las hojas tienen exactamente n hijos, T es un n-árbol completo. En parti-cular, con frecuencia se dice que un 2-árbol es un árbol binario, y un 2-árbol completo es un árbol binario completo.

TEOREMA 2. Si (T, v0) es un árbol con raíz y v ∈ T, entonces T(v) también es un árbol con raíz v. T(v) es el subárbol de T que comienza en v.

EJEMPLO. Considere el árbol T de la figura anterior. Este árbol tiene raíz v4. A continuación se muestran los subárbo-les T(v5), T(v2) y T(v6) de T.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 14

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 15

ÁRBOLES ETIQUETADOS Algunas veces es útil etiquetar los vértices o aristas de un dígrafo para indicar su uso para un propósito es-pecífico. Esto es particularmente cierto para muchos usos de los árboles en las ciencias de la computación.

EJEMPLO. CONSIDERE LA EXPRESIÓN ALGEBRAICA DADA A CONTINUACIÓN 3 − (2 ∙ ) +(( − 2) −(3 + ))

En esta expresión no es posible realizar la suma central hasta tanto no se hayan evaluado los argumentos de la izquierda y de la derecha. Es fácil ver que ese último cálculo constituye el operador central. La expresión algebraica anterior se puede representar gráficamente en un árbol binario etiquetado como se muestra a continuación.

EJEMPLO: Construya el árbol de la expresión algebraica dada.

3 ∙ (1 − ) ÷ ( 4 + 7 − ( + 2) ∙ 7 + ( ÷ ) )

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 16

El árbol binario posicional es de particular importancia. En el siguiente dígrafo, por razones obvias se eti-queta las posiciones de los hijos como izquierda y derecha, en vez de 1 y 2. Los árboles etiquetados pueden tener varios conjuntos de etiquetas. Por lo general se omite las etiquetas izquierda – derecha en un árbol binario posicional para enfatizar otras etiquetas útiles. Se dice que un árbol posicional también es un árbol ordenado. Al trazar los dígrafos de un árbol posicional, se supondrá que las posiciones de los n hijos para cada vértice son ordenados de forma simétrica bajo el vértice, y se coloca en la posición adecuada cada hijo realmente existente. Cuando no existen todos los hijos, entonces se indica las posiciones de los hijos me-diante la dirección de las aristas, como en la figura siguiente.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 17

REPRESENTACIÓN DE LOS ÁRBOLES BINARIOS POSICIONALES EN COMPUTADORA Para representar un árbol binario posicional como datos de computadora se necesita extender el concepto de lista enlazada al de una lista doblemente enlazada, donde cada celda contenga dos apuntadores y un elemento de datos. Se utilizará el siguiente símbolo gráfico

para representar estas nuevas celdas. El espacio central representa el almacenamiento de datos y los dos apuntadores, llamados apuntador izquierdo y apuntador derecho representados mediante puntos y flechas. Implementaremos la representación con tres arreglos: Left, que contiene los apuntadores dirigidos a los hijos de la izquierda; Right, los apuntadores a los hijos de la derecha y Data con la información o las etique-tas relacionadas con cada vértice. El valor 0, utilizado como apuntador, indica que el hijo correspondiente no existe.

EJEMPLO: Considere de nuevo el siguiente árbol binario.

La siguiente es la representación como una lista doblemente enlazada en forma simbólica.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 18

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 19

EJEMPLO. Considere el siguiente dígrafo.

La siguiente es la representación como una lista doblemente enlazada en forma simbólica.

Y la siguiente es la implementación en arreglos.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 20

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 21

Proporcione los arreglos LEFT, DATA, RIGHT que describan el árbol creado.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 22

BÚSQUEDA EN ÁRBOLES En muchas ocasiones es útil considerar cada vértice de un árbol T exactamente una vez en cierto orden es-pecífico. Cada vez que se encuentra cada vértice, tal vez se desee realizar alguna acción o cálculo adecuado para la aplicación representada por el árbol. La realización de algunas tareas según la etiqueta en cada vér-tice en un árbol corresponde a una visita del vértice. Este es un término utilizado por conveniencia, no es-pecífico, que permite escribir algoritmos sin detallar lo que constituye una visita en cada caso particular.

El proceso de visita de cada vértice de un árbol en cierto orden específico es una búsqueda en el árbol. Consideremos las búsquedas en árboles binarios posicionales, recuérdese que cada árbol binario posicional tiene dos hijos potenciales como vL (el hijo izquierdo) y vR (el hijo derecho), donde uno o ambos pueden estar ausentes. Si un árbol binario T no es posicional, siempre puede estar etiquetado de modo que se con-vierta en posicional.

Sea T un árbol binario posicional con raíz v. Entonces si existe vL, el subárbol T(vL) es e subárbol izquierdo de T y si existe vR, el subárbol T(vR) es el subárbol derecho de T. La especificación anterior permite especifi-car algoritmos de búsqueda de manera recursiva, natural y poderosa. Recuerde que los algoritmos recursi-vos son aquellos que se invocan a sí mismos. Describiremos a continuación un método de búsqueda llama-do búsqueda en preorden.

ALGORITMO PREORDEN Paso 1: Visite v.

Paso 2: Si existe vL, entonces aplique este algoritmo a (T(vL), vL).

Paso 3: Si existe vR, entonces aplique este algoritmo a (T(vR), vR).

Fin del algoritmo

EJEMPLO: Sea T el árbol binario posicional etiquetado cuyo dígrafo aparece a continuación

Suponga que, para cualquier vértice v de T, la visita de v imprime la etiqueta de v. Aplicando el algoritmo PREORDEN, descompondremos el árbol anterior en el siguiente conjunto de subárboles para obtener el resultado correspondiente.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 23

El resultado de la búsqueda completa en T imprime la cadena ABCDEFGIJKL.

EJEMPLO: Considere la siguiente expresión (a − b)x(c + (d ÷ e)). El siguiente es el dígrafo de dicha expresión.

Aplicando el algoritmo PREORDEN a este árbol, se obtiene la siguiente cadena:

x − ab + c÷ de

Esta es la forma PREFIJA o POLACA de la expresión algebraica dada.

La forma polaca de una expresión algebraica es interesante, ya que representa la expresión sin ambigüedad ni necesidad de paréntesis. Para evaluar una expresión en forma polaca, se procede como sigue. Muévase de izquierda a derecha hasta encontrar una cadena de la forma Fxy, donde F es un símbolo de operación binaria, x, y son números. Se evalúa xFy y se sustituye la respuesta en vez de la cadena Fxy. Se continuará con este procedimiento hasta que sólo quede un número.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 24

EJEMPLO: Considere la siguiente expresión (a − b)x(c + (d ÷ e)). Sean a = 6, b = 4, c = 5, d = 2 y e = 2.

Entonces se debe evaluar x − 64 + 5÷ 22. Esto se lleva a cabo de la siguiente manera:

x − 64 + 5 ÷ 22

x2 + 5 ÷ 22

x2 + 51

x26

12

ALGORITMO ENTREORDEN PASO 1. Busque en el subárbol izquierdo (T(vL), vL), si existe.

PASO 2. Visite la raíz v.

PASO 3. Busque en el subárbol derecho (T(vR), vR), si existe.

Fin del algoritmo.

ALGORITMO POSTORDEN PASO 1. Busque en el subárbol izquierdo (T(vL), vL), si existe.

PASO 2. Busque en el subárbol derecho (T(vR), vR), si existe.

PASO 3. Visite la raíz v.

Fin del algoritmo.

Como indica el nombre de los algoritmos, éstas son las búsquedas entreorden y postorden, respectivamen-te. Los nombres indican el momento en que se visita la raíz del sub(árbol) con respecto del momento en que se visita los subárboles izquierdo y derecho. De manera informal, en una búsqueda en PREORDEN, el orden es Raíz, Izquierdo, Derecho; para una búsqueda en ENTREORDEN, es Izquierdo, Raíz, Derecho; y para una búsqueda en POSTORDEN, es Izquierdo, Derecho y Raíz.

EJEMPLO: Sea T el árbol binario posicional etiquetado cuyo dígrafo aparece a continuación

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 25

Aplique el algoritmo ENTREORDEN Y POSTORDEN.

Algoritmo ENTREORDEN:

DCBFEGAIJHKL

Algoritmo POSTORDEN:

DCFGEBJILKHA

EJEMPLO: Considere la siguiente expresión (a − b)x(c + (d ÷ e)). El siguiente es el dígrafo de dicha expresión.

Aplicar el algoritmo ENTREORDEN Y postorden a este árbol.

Algoritmo ENTREORDEN:

a – b x c + d ÷ e

Observe que esta corresponda a la notación alge-braica comúnmente utilizada por nosotros. Se de-nomina entrefija.

Algoritmo POSTORDEN:

a b-c d e÷ + x

Esta es la forma postfija, polaca inversa o sufija de la expresión algebraica.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 26

EJEMPLO: Considere la siguiente expresión a b-c d e÷ + x . Sean a = 6, b = 4, c = 5, d = 2 y e = 2.

Evaluar dicha expresión:

ab − cde ÷+x

64 − 522 ÷+x

2522 ÷+x

251 + x

26x

12

BÚSQUEDA EN ÁRBOLES GENERALES

A continuación se mostrará que para realizar una búsqueda en cualquier árbol ordenado T se puede repre-sentar éste como un árbol posicional binario, el cual aunque diferente de T, captura toda la estructura de este y se puede utilizar para recuperar T.

Sean T un árbol ordenado y A el conjunto de todos los vértices de T. Se define un árbol posicional binario B(T) sobre el conjunto de vértices A, como sigue. Si v ∈ A, entonces el hijo izquierdo v devenB(T) es el primer hijo de v en T, si existe. El hijo derecho v devenB(T) es el siguiente hermano de v en T (en el orden dado de los hermanos de T), si es que este existe.

EJEMPLO: La figura muestra el dígrafo de un árbol etiquetado T. Se supone que el conjunto de hermanos está ordena-do de izquierda a derecha. Obtener el dígrafo de su correspondiente árbol posicional binario.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 27

Su correspondiente B(T) es:

EJEMPLO: La figura muestra el dígrafo de un árbol etiquetado T. Obtener el dígrafo de su correspondiente árbol posi-cional binario.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 28

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 29

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 30

ÁRBOLES NO DIRIGIDOS Un árbol no dirigido es un árbol con todas sus aristas bidireccionales. La gráfica de un árbol no dirigido T tendrá una línea sin flechas que une los vértices a y b, siempre que (a, b) y (b, a) pertenezcan a T. El conjun-to {a, b} donde (a, b) y (b, a) pertenecen a T, es una arista no dirigida de T.

EJEMPLO:

g

b

e

a

f

g

d

b

c

e f d a

g

c

a b e

(b) (c)

d

c

f

(a)

Los dígrafos anteriores muestran: (a) Árbol no dirigido T, (b) y (c) muestran los dígrafos de dos árboles ordi-narios T1 y T2, respectivamente que tienen a T como cerradura simétrica. Con ello se muestra que un árbol no dirigido corresponde, en general, a muchos árboles dirigidos.

Sea R una relación simétrica y sea p: v1, v2, . . ., vn una trayectoria en R, se dice que p es simple si no existen dos aristas de p correspondientes a la misma arista no dirigida. Si además v1 = vn de modo que p sea un ciclo, p es un ciclo simple.

EJEMPLO:

p: a, b, c, e, d es simple

p: f, e, d, c, d, a no es simple ya que (d,c) y (c,d) corresponden a la misma arista.

f, e, a, d, b, a, f es un ciclo simple

d, a, b, d es un ciclo simple

f, e, d, c, e, f no es un ciclo simple

Una relación simétrica R es acíclica si no contiene ciclos simples.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 31

TEOREMA 1. Sea R una relación simétrica en un conjunto A, entonces las siguientes proposiciones son equivalentes:

R es un árbol no dirigido

R es conexo y acíclico

TEOREMA 2. Sea R una relación simétrica en A. Entonces R es un árbol no dirigido sí y sólo sí cualquiera de las siguientes proposiciones es verdadera:

R es acíclica, y si se agrega cualquier arista no dirigida a R, la nueva relación no será acíclica.

R es conexa y si se elimina cualquier arista no dirigida de R, la nueva relación no será conexa.

TEOREMA 3. Un árbol con n vértices tiene n – 1 aristas.

ÁRBOLES DE EXPANSIÓN DE RELACIONES CONEXAS Si R es una relación simétrica conexa sobre un conjunto A, un árbol T en A es un árbol de expansión para R si T es un árbol con exactamente los mismos vértices que R y que se puede obtener de R eliminando algunas aristas de R.

EJEMPLO: Relación simétrica R y algunos árboles de expansión.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 32

f es un árbol de expansión no dirigido.

Se proporciona un algoritmo para determinar un ÁRBOL DE EXPANSIÓN para una relación simétrica R cone-xa en el conjunto A = { v1, v2, . . ., vn}. El método es un caso especial llamado ALGORITMO DE PRIMM.

ALGORITMO DE PRIMM

PASO 1: Se elige V1 de R, y se ordena la matriz de R de modo que el primer renglón corresponda a V1.

PASO 2: Se elige un vértice V2 de R, t.q. (V1, V2) ∈ R, se une V1 con V2 en un nuevo vértice V que represen-ta {V1, V2} y se reemplaza V1 por V . Se calcula la matriz de la relación resultante de R’. El vértice V es un vértice unido.

PASO 3: Se repiten los pasos 1 y 2 en R’ y en todas las relaciones subsecuentes hasta obtener una relación con un único vértice. En cada paso se mantiene un registro del conjunto de vértices originales representa-dos por cada vértice unido.

PASO 4: Se construye el árbol de expansión, de la siguiente manera. En cada etapa al unir los vértices a y b, se elige una arista en R de uno de los vértices originales representados por a hacia uno de los vértices origi-nales representados por b.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 33

EJEMPLO. Aplicar el algoritmo de Primm a la relación simétrica de la siguiente gráfica.

Matriz Vértices originales represen-tados por los vértices unidos

Nuevo vértice por unir (con el primer renglón)

a b c d a 0 0 1 1 b 0 0 1 1 c 1 1 0 0 d 1 1 0 0

----------------

c

a’ b d

a’ 0 1 1 b 1 0 1 d 1 1 0

a ⟷ {a, c} b

a” d a” 0 1 d 1 0

a" ⟷ {a, c, b} d

a’’’ a’’’ 0

a ⟷ {a, c, d, b} -----------

El primer vértice elegido es a, y se elige c como el vértice por unir con a, ya que existe un 1 en el vértice c en el renglón 1. También se elige la arista (a, c) de la gráfica original. En la segunda etapa, existe un 1 en el vértice b en el renglón 1, por lo que se une b con el vértice a’. Se elige una arista en la relación original R a partir de un vértice de {a, c} a b, por decir (c, b). En la terce-ra etapa, se debe unir d con el vértice a’’. De nuevo se necesita una arista en R de un vértice de {a, b, c} a d, por decir (a, d). Las aristas seleccionadas (a, c), (c, b) y (a, d) forman el árbol de expansión para R. Observe que el primer vértice elegido es la raíz del árbol.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 34

EJERCICIOS En los ejercicios 1 al 5 utilice el algoritmo de Prim para construir un árbol de expansión para la gráfica cone-xa dada. Utilice el vértice indicado como la raíz del árbol y trace el dígrafo del árbol de expansión obtenido.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 35

ÁRBOLES DE EXPANSIÓN MÍNIMA Una gráfica con pesos es una gráfica donde cada arista está etiquetada con su valor numérico que se denota su peso. El peso de una arista (vi, vj) es la distancia entre los vértices vi y vj. Un vértice u es un vecino más cercano del vértice v si u y v son adyacentes y ningún otro vértice queda unido con v mediante una arista de menor peso que (u, v). Un vértice puede tener más de un vecino cercano.

EJEMPLO: Una compañía de comunicaciones investiga el costo de actualización de las conexiones entre sus estaciones de transmisión. La gráfica con pesos de la figura muestra las estaciones y el costo en millones de dólares para la actualización de cada conexión.

En relación con la gráfica, sea V = {C, E, J}. Entonces el vértice D es un vecino más cercano de V, ya que (D, E) tiene peso 2.2 y ningún otro vértice adyacente o algún miembro vi de V(C, E o J) se une a estos vértices me-diante una arista de menor peso.

En las aplicaciones de las gráficas con pesos, con frecuencia se necesita determinar un árbol de expansión no dirigido para el cual el peso total de las aristas en el árbol sea el menor posible. Este árbol se conoce como árbol de expansión mínima. El algoritmo de Primm se puede adaptar para producir un árbol de expansión mínima para una gráfica con pesos. A continuación se enuncia dicho algoritmo como si fuera aplicado a una relación simétrica conexa, dada por su gráfica de pesos no dirigida.

ALGORITMO DE PRIMM Sea R una relación simétrica, conexa con n vértices.

PASO 1: Se elige un vértice V1 de R. Sea V = {V1} y E = { }

PASO 2: Se elige uno de los vecinos más cercanos a Vi de V, que sea adyacente a Vj, Vj ∈ V y tal que la arista (Vi, Vj) no forme un ciclo con miembros de E. Se agrega Vi a V y (Vi, Vj) a E.

PASO 3: Se repite el paso 2 hasta que |E| = n− 1. Entonces V contiene los n vértices de R y E contiene las aristas de un árbol de expansión mínima para R.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 36

EJEMPLO: Un pequeño pueblo planea pavimentar algunas de las veredas de manera que sirvan para transitar y tam-bién para andar en bicicleta. Como primera etapa, el pueblo quiere unir todas las áreas recreativas con rutas de bicicleta, de la manera más barata posible. Si los costos de construcción son iguales en todas las partes del sistema, utilice el algoritmo de Primm para determinar un plan de pavimentación.

Si se elige A como primer vértice, el vecino más cercano es C, así (A, C) es la primera arista elegida. Con res-pecto al conjunto de vértices {A, C}, B es el vecino más cercano y se puede elegir (A, B) o (B, C) como arista siguiente. De forma arbitraria elegmos (B, C). B es un vecino cercano para {A, B, C} pero (A, B) formaría un ciclo por lo que se debe pasar al siguiente vecino más cercano y elegir (C, E) o (C, F) y así sucesivamente. Las siguientes son dos posibles soluciones

Ejemplo: Determinar el árbol de expansión mínima para la red comunicaciones del grafo.

La siguiente es una solución iniciando en A con un costo total de $20,8 millones.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 37

Si una relación simétrica conexa R tiene n vértices, entonces el algoritmo de Primm tiene un tiempo de eje-cución O(n2). Si R tiene relativamente pocas aristas, podría ser más eficiente utilizar otro algoritmo. El algo-ritmo de Kruskal es otro ejemplo de algoritmo ambicioso, con el que se obtiene una solución óptima.

ALGORITMO DE KRUSKAL Sea R una relación simétrica, conexa con n vértices y sea S = {e1, e2, ….., en} el conjunto de todas las aristas con pesos de R.

PASO 1: Se elige un arista e1 en S de peso mínimo. Sea E = {e1}. Se reemplaza S por S – {e1}.

PASO 2: Se selecciona una arista ei de menor peso que no forme un ciclo con los miembros de E. Se reem-plaza E con E ∪ {e }ySconS − {e }.

PASO 3: Se repite el paso 2 hasta que |E| = n − 1

FIN DEL ALGORITMO

Como R tiene n vértices, las n – 1 aristas en E formarán un árbol de expansión. El tiempo de ejecución del algoritmo de Kruskall es O(k log(k)), donde k es el número de aristas de R.

EJEMPLO: La figura proporciona un árbol de expansión mínima generado mediante el algoritmo de Kruskall para el ejemplo de las rutas de bicicleta. Una secuencia de selecciones de aristas es (D, E), (D, H), (A, C), (A, B), (E, G), (E, F) y (C, E) para un peso total de 21.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 38

EJEMPLO: Utilice el algoritmo de Kruskall y determine un árbol de expansión mínima para la siguiente figura.

EJERCICIOS

En los ejercicios 1 al 6, utilice el algoritmo de Prim y determine un árbol de expansión mínima, para la gráfica conexa indicada. Utilice el valor especificado como vértice inicial.

1. Sea G la gráfica de la figura 1. Comience en F.

2. Sea G la gráfica de la figura 2. Comience en A.

3. Sea G la gráfica de la figura 3. Comience en G.

4. Sea G la gráfica de la figura 4. Comience en E.

6. Sea G la gráfica de la figura 5. Comience en M.

En los ejercicios 7 al 9, utilice el algoritmo de Kruskal y determine un árbol de expansión mínima para la gráfica indicada.

7. Sea G la gráfica de la figura 2.

8. Sea G la gráfica de la figura 4.

9. Sea G la gráfica de la figura 5.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 39

5. Sea G la gráfica de la figura 5. Comience en K.

FIG. 1

FIG. 2

FIG. 3

FIG. 5

FIG. 4

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 40

ÁLGEBRA BOOLEANA Las tablas que enumeran los valores de una función f para todos los elementos de Bn, como la que se mues-tra en la figura (a), con frecuencia son llamadas tablas de verdad para f. Esto se debe a que son similares a las tablas empleadas en lógica. Suponga que los xk representan proposiciones, y f(x1, x2,..., xn) representa un enunciado compuesto construido a partir de los xk. Si piensa que el valor 0 para un enunciado significa que el enunciado es falso, y que 1 significa que el enunciado es verdadero, entonces las tablas, como la de la figura (a), muestran la forma en que la verdad o falsedad de f(x1, x2,..., xn) depende de la verdad o falsedad de los enunciados xk que lo componen. Así, tales tablas son llamadas, con frecuencia, tablas de verdad, incluso cuando surgen en áreas distintas de la lógica, como en las álgebras booleanas.

La razón de la importancia de tales funciones es que, como se muestra de manera esquemática en la figura (b), pueden ser utilizadas para representar los requisitos de salida de un circuito para los posibles valores de entrada. Así, cada x, representa un circuito de entrada capaz de transportar dos voltajes indicadores (un voltaje para 0 y un voltaje distinto para 1). La función f representa la respuesta de salida deseada en todos los casos. Tales requisitos ocurren en la etapa de diseño de los circuitos computacionales combinatorios y secuenciales.

Observe con cuidado que la especificación de una función f:BnàB sólo enumera los requisitos del circuito. No indica cómo cumplir estos requisitos. Una forma importante de producir funciones de Bn a B es median-te el uso de polinomios booleanos, los cuales son considerados a continuación.

POLINOMIOS BOOLEANOS Sea x1, x2,... ,xn un conjunto de n símbolos o variables. Un polinomio booleano p(x1, x2,... ,xn) en las variables xk se define de manera recursiva como sigue:

x1,x2,... ,xn son todos polinomios booleanos.

Los símbolos 0 y 1 son polinomios booleanos.

Si p(x1, x2, …, xn) y q(x1, x2, …, xn) son dos polinomios booleanos, entonces también lo son

x1 x2 x3 f(x1, x2, x3) 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 41

( ) ( )

( ) ( )

1 2 n 1 2 n

1 2 n 1 2 n

p x , x , , x q x , x , , x p x , x , , x q x , x , , x

y¼ ¼

¼ + ¼

o

Si ( 1, 2, … , )es un polinomio booleano, también lo es ( ( 1, 2, … , ))

Por tradición (0), se denota 0, (1)se denota 1 y ( )se denota .

No existen polinomios booleanos en las variables xk distintos de los que pueden ser obtenidos aplicando las reglas 1, 2, 3 y 4.

Los polinomios booleanos también reciben el nombre de expresiones booleanas.

Compuertas Lógicas. Las compuertas lógicas son dispositivos que operan con aquellos estados lógicos men-cionados anteriormente y funcionan del siguiente modo, se ingresan los datos a un dispositivo y este “res-ponde” mediante una operación ( o serie de operaciones) con un resultado.

0 y 1 operación lógica 0 ó 1

Cada una de las compuertas lógicas se las representa mediante un Símbolo, y la operación que realiza (Ope-ración lógica) se corresponde con una operación lógica y una tabla, llamada Tabla de Verdad.

COMPUERTA NOT. Invierte el dato de entrada, por ejemplo; si la entrada es 1 (nivel alto) se obtiene en la salida un 0 (o nivel bajo), y viceversa.

Esta compuerta dispone de una sola entrada. Su operación lógica es S igual a A invertida.

S A=

El símbolo genérico para obtener una entrada o salida invertida o negada, es agregarle un círculo vacío al cable de salida o entrada.

A S 0 1 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 42

COMPUERTA AND. Una compuerta AND tiene dos datos de entrada como mínimo y su operación lógica es un producto entre ambas, no es un producto aritmético, aunque en este caso coincidan. La salida (resultado) es siempre una (es decir un único valor 0 ó 1).

( )s a b= ×

Si la compuerta AND tuviera n datos de entrada (ejemplo 4) para obtener un 1 como resultado todos los datos de entrada debieran ser igual a 1

( )s a b c d= × × ×

COMPUERTA OR. Al igual que la anterior posee dos entradas como mínimo y la operación lógica, es la suma entre ambas. Aquí es bueno detenerse porque al lector cuando vea la tabla de verdad podrá observar que 1 + 1= 1. El tema es que se trata de una compuerta O Inclusiva. Es decir, basta que uno de los datos de entrada sea 1 para que su salida sea también 1*

Vemos la siguiente tabla de verdad.

( )s a b= +

Si la compuerta OR tuviera n datos de entrada (ejemplo 4) para obtener un 1 como resultado alguna de las de entrada debe ser igual a 1. Esto es:

a b s 0 0 0 0 1 0 1 0 0 1 1 1

a b s 0 0 0 0 1 1 1 0 1 1 1 1

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 43

( )s a b c d= + + +

En algunos textos o compendios de Álgebra Booleana, se presentan otros conectores o compuertas lógicas, las que se omiten ya que se pueden construir a partir de las tres anteriores.

EJEMPLO: Sea ( , , ) = ( ∙ ) + ( ∙ ̅). Construir su tabla de verdad y el circuito correspondiente.

A B C ( )A B× C ( )B C×

( , , )P A B C

0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 44

EJEMPLO: Dado el siguiente circuito, obtener la función de salida.

Solución:

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 45

EJERCICIOS: 1. Considere el polinomio booleano ( , , ) = ∙ ( + ̅). Construir su tabla de verdad y el circuito

correspondiente. 2. Considere el polinomio booleano ( , , ) = ( + ) ∙ ( + ̅). Construir su tabla de verdad y el

circuito correspondiente. 3. Considere el polinomio booleano ( , ) = ( ∙ ) + ( ⋅ ( ̅ + )) Construir su tabla de verdad y

el circuito correspondiente. 4. Considere el polinomio booleano ( , , ) = ( ∙ ) + ( ̅ ⋅ ( ⋅ ̅)). Construir su tabla de verdad y

el circuito correspondiente. 5. Construir los circuitos a partir de las siguientes expresiones booleanas.

( ) ( )x y x z+o o

( ) ( ) x y x z+ +o

x y z+ o

( ) ( ) ( )x y y z x y+ + +o o

6. Obtener la función de salida simplificada y la tabla de verdad, de cada uno de los siguientes circui-tos.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 46

MAPAS DE KARNAUGH INTRODUCCIÓN La herramienta fundamental para la simplificación de funciones booleanas es y seguirá siendo el álgebra de Boole; sin embargo, como ya lo ha mostrado la experiencia, el álgebra de Boole tiene las siguientes desventajas:

No es un método sistemático (no hay un algoritmo paso a paso a seguir).

No es fácil saber cuándo la expresión ya está lo más reducida posible.

Es fácil cometer errores y es difícil revisar el procedimiento.

Por ello, es importante contar con un método como el que se presentará aquí, el cual es un méto-do sistemático y además gráfico, por lo cual es más sencillo y poderoso para la simplificación de funciones booleanas.

Sin embargo, previamente a la presentación del método se requieren algunas definiciones que se usarán de aquí en adelante.

FORMAS CANÓNICAS Término Producto.- Se llama término producto una expresión booleana que solamente incluye operaciones AND entre sus variables (afirmadas o negadas)

Ejemplos de términos producto:

AB', ABC', BC, A'BCD', B, etc.

Forma SP.- Una función booleana se dice que está en la forma de suma de productos (SOP) si está formada exclusivamente por la suma (OR) de términos producto.

Ejemplos de funciones en forma SOP son:

( )1

2

, , , ' ' ' ' '( , , ) ' '

f A B C D AB C B D A CDf X Y Z XZ YZ XYZ

= + +

= + +

Mintérmino- Es un término producto que contiene todas las variables de la función.

Ejemplos de mintérminos para una función de 4 variables A, B, C, D:

ABCD, AB’CD’, A’BCD, etc.

Forma Canónica SOP.- Si los términos producto de una función booleana en la forma SOP son to-dos mintérminos, se dice que está en la forma canónica SOP.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 47

Ejemplos de funciones en forma canónica SOP son:

3

4

( , , )

( , , , , )

f A B C ABC ABC ABC ABC

f A B C D E ABCDE ABCDE ABCDE

= + + +

= + +

Término Suma.- Se llama término suma a una expresión booleana que solamente incluye opera-ciones OR entre sus variables (afirmadas o negadas)

Ejemplos de términos suma:

', ', , ' 'A B A B C B C A B C D+ + + + + + +

Forma POS.- Una función booleana se dice que está en la forma de producto de sumas (POS) si está formada exclusivamente por el producto (AND) de términos suma.

Ejemplos de funciones en forma POS son:

5

6

( , , , ) ( ' )( ' ')( ' ')

( , , ) ( )( )( )

f A B C D A B C B D A C D

f X Y Z X Z Y Z X Y Z

= + + + + +

= + + + +

Maxtérminos.- Son términos suma que contienen todas las variables de la función.

Ejemplos de maxtérminos para una función de 4 variables A, B, C, D son:

, ' ', 'A B C D A B C D A B C D+ + + + + + + + +

Forma Canónica POS.- Si los términos suma de una función booleana en la forma POS son todos maxtérminos, se dice que está en la forma canónica POS.

Ejemplos de funciones en forma canónica POS son:

7

8

( , , ) ( )( )( )( , , , , ) ( ' ')( ' ' )( ' )

f A B C A B C A B C A B Cf A B C D E A B C D A B C D E A B C D E

= + + + + + += = + + + + + + + + + + +

Notación

Una manera de simplificar la escritura de las funciones en forma canónica consiste en representar sus términos por números binarios, en base a la siguiente convención

Mintérmino Maxtérmino Variable afirmada 1 0 Variable negada 0 1

Por ejemplo, usando esta notación la función f3(A,B,C) puede escribirse como

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 48

3

2 6 3 7

( , , ) ' ' '010 110 011 111

f A B C A BC ABC A BC ABC

m m m m

= + + += + + += + + +

O en forma más compacta: 3( , , ) (2,3,6,7)f A B C m= å

A la representación anterior se le llama notación en Lista de mintérminos.

En forma similar, la función f7(A,B,C) puede escribirse como

7

5 1 4 0

( , , ) ( ' ')( ')( ' )( ) (101) (001) (100) (000)

f A B C A B C A B C A B C A B C

M M M M

= + + + + + + + +==

O en forma más compacta: 7 ( , , ) (0,1,4,5)f A B C M= Õ

A la representación anterior se le llama notación en Lista de maxtérminos.

Observación: El orden de las variables en la notación anterior debe coincidir con el orden en que están especificadas, es decir, f(A,B,C) ≠ f(B,C,A) ≠ f(A,C,B), etc.

PLANTEAMIENTO DE UN CIRCUITO LÓGICO A partir de los conceptos y definiciones anteriores ya estamos en condiciones de plantear algunos diseños sencillos de circuitos lógicos. Podemos ordenar el procedimiento para esto de acuerdo a los siguientes pasos:

- Planteamiento de la función que debe hacer el circuito en una tabla de verdad.

- Obtención de la función en lista de mintérminos o de maxtérminos.

- Simplificación de la función lógica

- Implementación mediante compuertas lógicas de la función simplificada

Ejemplo:

Un jurado está formado por tres jueces A, B, C, cada juez emite su voto a favor oprimiendo un botón enfrente de él. Se desea construir un circuito que encienda una luz que indique si la mayor parte del jurado votó a favor y no la encienda en cualquier otro caso.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 49

L(A,B,C)=AB+AC+BC

EnlasiguientefigurasemuestralaimplementaciónusandopuertasANDyOR

Tabla de verdad

Jueces A B C

Luz L

0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1

La función que realiza lo deseado es

L(A,B,C) = ∑ m(3,5,6,7) Usando álgebra booleana podemos simplificar la función como

Como habrá podido advertirse, en el procedimiento anterior, los únicos paso que no han sido completamente sistematizados son el 1 y el 3 (la simplificación de la función). A continuación se presenta un método sistemático para realizar este paso.

MINIMIZACION DE FUNCIONES BOOLEANAS

Como ya se ha visto, la simplificación de funciones mediante el álgebra booleana puede ser una tarea difícil, ya que en el álgebra booleana no existe un procedimiento claro a seguir, uno debe buscar el camino para la simplificación en base a la intuición y la experiencia. Para realizar la sim-plificación de funciones eficientemente, presentaremos un método, llamado Mapas de Karnaugh,

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 50

el cual es un método gráfico que proporciona una técnica estándar y sistemática en la reducción manual de funciones booleanas.

MAPAS DE KARNAUGH

Los Mapas de Karnaugh (MK) no son más que una extensión de los conceptos de tablas de verdad, diagramas de Venn y mintérminos. A continuación se ilustrará la manera en que estos tres concep-tos se entrelazan para obtener lo que llamaremos un Mapa de Karnaugh. Para ello, consideremos el Diagrama de Venn de dos conjuntos A y B y localicemos en el los subconjuntos o regiones co-rrespondientes a los cuatro mintérminos A.B, AB, AByAB, es decir, los mintérminos m0, m1, m2 y m3.

Como puede verse, Todo el diagrama de Venn se puede particionar en estas cuatro regiones inde-pendientes (no tienen puntos en común) y cada región está identificada por un mintérmino. Por otro lado, nada nos obliga a dibujar los conjuntos A y B redondos y el conjunto universo cuadrado.

SIMPLIFICACIÓN DE CIRCUITOS LÓGICOS: El mapa es un diagrama hecho de cuadrados, en que cada cuadrado representa un miniterm. Los cuadrados a los miniterm que producen 1 para la función se marcan con un "1" y los restantes con "0" o se dejan va-cíos. Para reconocer varios patrones y combinar cuadrados marcados por 1 en el mapa, es posible derivar las expresiones algebraicas alternas para la función, a partir de las cuales se puede seleccionar la más conve-niente.

Los mapas para las funciones de dos, tres y cuatro variables se muestran en las siguientes figuras.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 51

El número de cuadrados en un mapa de "n" variables es 2n minitern y son listados por un número decimal equivalente para fácil referencia. Los números de miniterms son asignados en un arreglo ordenado de tal manera que los cuadrados adyacentes representen los miniterms que difieren solamente en una variable. Los nombres de las variables son listados a través de ambos lados de la línea diagonal en la esquina del ma-pa. Los 1 y 0 marcados a lo largo de cada fila y de cada columna designan el valor de las variables. Cada va-riable debajo de los paréntesis contiene la mitad de los cuadrados en el mapa en donde aquella variable aparece sin comillas (no complementada). La variable aparece con una comilla (complementada) en la mitad de los cuadrados. Toda la información que aparece en los mapas de la figura, no siempre es necesaria, en ésta oportunidad se muestra solamente a modo explicativo.

El miniterm representado por un cuadrado es determinado de la asignación binaria de las variables a lo largo de los bordes izquierdo y superior del mapa.

A continuación se muestran algunos ejemplos de representación en mapa de Karnaugh de distintas funcio-nes a partir de su tabla de verdad, éste mapa representará los valores a minimizar cuando la función arroje un valor igual a 1.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 52

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 53

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 54

METODOLOGÍA DE REDUCCIÓN Vamos a indicar cada uno de los pasos para obtener la expresión SOP (mínima suma de productos). Para ello vamos a ilustrarlo con el ejemplo:

F(x, y, z) = x’ y’ z’ + x’ y’ z + x’ y z’+ x y’ z’+ x y z’

Los pasos a seguir para conseguir reducir esta expresión son:

1. Convertir la expresión a una suma de productos si es necesario. Esto se puede realizar de varias maneras:

Algebraicamente.

Construyendo una tabla de verdad, trasladando los valores al mapa de Karnaugh. Esta es la forma que va-mos a utilizar.

2. Cubrir todos los unos del mapa mediante rectángulos de 2N elementos, donde N = 0 ... número de varia-bles. Ninguno de esos rectángulos debe contener ningún cero (tal y como indicábamos en el apartado ante-rior).

Para minimizar el número de términos resultantes se hará el mínimo número posible de rectángulos que cubran todos los unos.

Para minimizar el número de variables se hará cada rectángulo tan grande como sea posible.

Véase que en este caso se han unido las celdas que contienen valor 1 para formar un único rectángulo, en cada caso.

X Y Z Resultado

0 0 0 1

0 0 1 1

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

1 1 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 55

3. Encontrar la MSP (suma de productos minimal). Atención porque podemos encontrarnos con que puede haber más de una MSP.

Cada rectángulo pertenece a un término producto.

Cada término se define encontrando las variables que hay en común en tal rectángulo.

En nuestro ejemplo tenemos F(X, Y, Z) = Z’ + X’Y’ nótese que las variables resultado son las que tienen un valor común en cada rectángulo.

COLORACIÓN Y REPRESENTACIÓN DE CADA CELDA EN UN MAPA DE KARNAUGH

DOS VARIABLES

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 56

TRES VARIABLES

CUATRO VARIABLES

RECTÁNGULOS Y PRODUCTOS. Cada rectángulo representa un término. El tamaño del rectángulo y el del término resultante son inversa-mente, es decir que, cuanto más largo sea el rectángulo menor será el tamaño del término final.

En general, si tenemos una función con n variables :

Un rectángulo que ocupa una celda equivale a un término con n variables.

Un rectángulo que ocupa dos celdas equivale a un término con n-1 variables.

Un rectángulo que ocupa 2n celdas equivale al término de valor 1.

Por lo tanto, para encontrar el MSP se debe:

Minimizar el número de rectángulos que se hacen en el mapa de Karnaugh, para minimizar el número de términos resultantes.

Maximizar el tamaño de cada rectángulo, para minimizar el número de variables de cada término resultante.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 57

AGRUPACIÓN DE RECTÁNGULOS. Cuando tenemos distintas posibilidades de agrupar rectángulos hay que seguir ciertos criterios:

Localiza todos los rectángulos más grandes posibles, agrupando todos los unos. Estos se llamarán implican-tes primos.

Si alguno de los rectángulos anteriores contiene algún uno que no aparece en ningún otro rectángulo enton-ces es un implicante primo esencial. Éstos han de aparecer en el resultado final de manera obligatoria.

El resto de implicantes primos se podrán combinar para obtener distintas soluciones.

Véase este ejemplo que ilustra lo que les planteamos. Aquí los implicantes primos son cada uno de los dife-rentes rectángulos obtenidos. Los primos implicantes esenciales son el rectángulo rojo y el verde, por con-tener unos que no son cubiertos por otros rectángulos. Así todas las posibles soluciones han de contener estos dos implicantes.

Solución: F( A, B, C, D ) = A’C’ + ACD’ + BCD

EL PROCEDIMIENTO DE DISEÑO Aunque en principio, al abordar el problema de diseño de un circuito podemos usar nuestra expe-riencia, intuición, inventiva y sentido común, todos estos elementos no nos garantizan una solu-ción óptima. Sin pretender coartar la creatividad e imaginación del estudiante, se propone el si-guiente Procedimiento de Diseño de Circuitos Lógicos:

Primer paso.- Identificar en el enunciado del problema las variables involucradas en el diseño, asignarles un símbolo y representarlas en un Diagrama de Bloques, el cual es un bloque descono-cido interiormente aún, pero su exterior debe estar bien especificado, es decir, debe poseer un conjunto de entradas (variables independientes) y salidas (variables dependientes o funciones a diseñar).

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 58

Segundo paso.- Interpretar en el enunciado las relaciones de dependencia lógica entre entradas y salidas y representarlas en una Tabla de Verdad. Este paso debe realizarse cuidadosamente, dado la ambigüedad propia del lenguaje que puede llevar a relaciones lógicas equivocadas.

En este paso no debe olvidarse la relación directa de los conectivos gramaticales Y, O con las ope-raciones AND, OR respectivamente, así como la negación gramatical con el complemento lógico (NOT). Sin embargo, hay que ser cuidadoso de las interpretaciones gramaticales de O inclusivo (OR) y O exclusivo (EXOR). Esto ciertamente será más sencillo si el enunciado lo elaboramos noso-tros mismos a partir de un problema real, pues nosotros sabremos exactamente lo que queremos decir, Sin embargo, en la mayoría de los casos abordados por un estudiante, los enunciados de los problemas los ha elaborado otra persona (el autor de un libro, o el profesor de la materia).

Tercer paso.- Obtener de la tabla de verdad los Mapas de Karnaugh, un mapa por cada variable de salida

Cuarto Paso.- Obtener las expresiones lógicas mínimas para cada variable de salida usando los mapas del paso anterior.

Quinto paso.- Dibujar la implementación con puertas lógicas procurando usar el mínimo de circui-tos integrados.

En este paso hay que tener presente que una expresión lógica mínima NO garantiza una imple-mentación mínima en términos de circuitos integrados. Para ello, se puede recurrir al uso de puer-tas lógicas de un sólo tipo , ya que esta estrategia permite aprovechar todas las puertas lógicas de cada circuito integrado utilizado. Las puertas que permiten ser utilizadas de esta manera son las puertas NAND o NOR. Las primeras son adecuadas para formas SP y las segundas para formas PS.

A continuación estos pasos se ilustrarán con un ejemplo.

EJEMPLO.-

Diseñar un circuito para controlar el encendido y apagado de la lámpara de un jardín doméstico, la cual deberá encender siempre que sea de noche, o la iluminación ambiental sea muy baja, a me-nos que se desee ahorrar energía.

El indicador de horario nocturno es una señal (N) controlada por un reloj (N = 1 indica que es de noche), El indicador de iluminación ambiental es una señal L controlada por una fotocelda (L=1 indica que aún hay luz ambiental) y el usuario utiliza un par de switches A,B para indicar si desea ahorrar energía, de manera que si ambos están desactivados (AB = 00) no se ahorrará energía, si sólo uno de los dos se activa bloqueará el encendido debido a L y, finalmente si ambos están acti-vados la luz del jardín no podrá encenderse.

Solución.- Procedemos de acuerdo al procedimiento planteado, paso a paso:

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 59

Diagrama de bloques

Mapa de Karnaugh para:

F(A,B,N,L)= ∑m(0,2,3,6,7,10,11)

Función simplificada.- De acuerdo con el M.K. anterior, obtenemos F= A’B’L’ + A’N + B’N

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 60

EJERCICIOS: I Parte: En los ejercicios 1 al 6, escriba el polinomio booleano que da origen a cada tabla, construya el mapa de Karnaugh y determinar la expresión booleana simplificada para la función f, LUEGO DIBUJE EL CORRES-PONIENTE CIRCUITO.

1.

x y f(x,y) 0 0 1 0 1 0 1 0 0 1 1 1

2. x y f(x,y) 0 0 1 0 1 0 1 0 1 1 1 0

3.

x y z f(x,y,z) 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0

4. x y z f(x,y,z) 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0

5. x y z w f(x,y,z,w) 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1

6. x y z w f(x,y,z,w) 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 61

II Parte: Para los siguientes mapas de Karnaugh, escriba la expresión booleana simplificada en cada caso.

1.

2.

3.

4.

5.

6.

7.

8.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 62

MODELADO Y REDES DE PETRI Las Redes de Petri son una teoría matemática postulada por el alemán Carl Adam Petri que proporciona una herramienta gráfica y matemática de modelado para la descripción formal de sistemas cuya dinámica se caracteriza por la concurrencia, sincronización, exclusión mutua y conflictos, las cuales son características típicas de sistemas distribuidos. Al disminuir el precio del hardware de computadora, y de los procesadores en particular, existe un creciente interés en el procesamiento concurrente, para lograr mayor velocidad y eficiencia.

Las redes de Petri como herramienta para especificar sistemas de tiempo real, reconocen un antecedente en las máquinas de estado, una de las primeras técnicas para modelar arquitecturas de sistemas de cómputo, basada en la descripción de un sistema mediante los conceptos de estado y transición.

Esta técnica de especificación se basa en establecer una completa relación entre el comportamiento de entrada/salida de una máquina y la variación de sus estados internos, dando una idea de la ocurrencia de las transiciones en respuesta a cada una de las posibles entradas.

Estos estados son representados mediante círculos. Un arco desde el estado si al estado sj etiquetado a/b

significa que en el estado si con una entrada a la máquina cambiará al estado sj obteniendo b como salida.

Un alfabeto de entrada define las entradas desde el mundo externo, mientras un alfabeto de salida define las salidas de la máquina al mundo externo.

La salida de esta máquina depende tanto de la entrada actual como del estado actual. Un caso especial de la especificación de la salida es que ésta puede depender sólo del estado actual. De esta manera, el estado está asociado con un símbolo de salida particular, aunque varios estados podrían mapearse sobre la misma salida.

Los sistemas de computadora son con frecuencia muy complejos, largos, y con varias componentes que interactúan. A pesar de la diversidad de sistemas que queremos modelar se pueden señalar varios puntos en común. Una idea fundamental es que los sistemas están compuestos de módulos o componentes separadas, e interactuantes. Cada componente puede ser en sí misma un sistema, pero su comportamiento puede ser descripto en forma independiente de los otros módulos del sistema, excepto por interacciones bien defini-das con las otras componentes. Cada componente tiene su propio estado. El estado es una abstracción de la información relevante necesaria para describir sus (futuras) acciones.

Por otra parte, los sistemas a menudo exhiben situaciones de concurrencia o paralelismo. Las actividades de una componente de un sistema pueden ocurrir simultáneamente con las de otros módulos. Dado que las componentes de los sistemas interactúan, es necesario que haya sincronización. Esto puede resultar en que una componente esté esperando a otra. El temporizado de acciones de distintos módulos puede ser muy complejo y las interacciones resultantes entre las componentes pueden ser difíciles de describir.

La gran limitación de las máquinas de estado se presenta cuando se intentan modelar sistemas con acciones simultáneas. Si bien podrían representarse cada una de estas acciones simultáneas como máquinas de esta-do y luego intentar unirlas, esta unión no es simple. Se genera un aumento importante en el número de estados lo que dificulta el manejo y la claridad del diagrama de estados resultante.

La representación de la concurrencia y la sincronización presentes en un sistema es más natural utilizando Redes de Petri en lugar de una máquina de estado, debido a que las mismas poseen un paralelismo inheren-

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 63

te.

CARACTERÍSTICAS BÁSICAS DE UNA RED DE PETRI La teoría de Redes de Petri puede ser aplicada a diversas áreas, y sus fundamentos se están convirtiendo en un tema casi "obligatorio" para los científicos en computación, analistas de sistemas e ingenieros.

Los conceptos básicos de la teoría de Redes de Petri pueden ser entendidos con una mínima base de cono-cimientos. Sin embargo, las Redes de Petri abarcan muchos aspectos de la ciencia de computación y las matemáticas. Una apreciación y entendimiento completo de la teoría de Redes de Petri requiere una buena base en el estudio de lenguajes formales y autómatas, sistemas operativos, arquitectura de computadoras y álgebra lineal.

Las Redes de Petri son una herramienta útil para el estudio de sistemas. La teoría permite que un sistema sea modelado por una Red de Petri, una representación matemática del sistema. El análisis de la Red puede revelar importante información acerca de la estructura y el comportamiento dinámico del sistema modela-do, la que puede ser usada para evaluarlo y sugerir mejoras o cambios.

Definición. Una red de Petri es una gráfica dirigida que está formada por lugares y transiciones, unidos alter-nativamente por arcos dirigidos. Un lugar puede o no contener marcas. El conjunto de marcas asociadas a cada uno de los lugares en un momento dado, constituye un marcado de la red. Para la descripción funcio-nal de sistemas concurrentes los marcados representan estados y las transiciones sucesos, que dependen del cumplimiento de determinadas condiciones.

DEFINICIONES

ESTRUCTURA DE UNA RED DE PETRI Una Red de Petri consta de cuatro partes: un conjunto de lugaress P, un conjunto de transiciones T, una función de entrada I, y una función de salida O. Las funciones de entrada y de salida relacionan transiciones y lugares. La función de entrada I es un mapeado desde una transición tj a una colección de lugares I(tj),

conocida como los sitios de entrada de la transición. La función de salida O mapea una transición tj en una

colección de sitios O(tj), conocida como los sitios de salida de la transición.

DEFINICIÓN: Una estructura de Red de Petri, C, es una 4-upla, C = (P,T,I,O). P = {p1, p2 ,...., pn} es un conjunto

finito de lugares o plazas, n >= 0. T = {t1, t2, ...., tm} es un conjunto finito de transiciones, m >= 0. El conjunto

de lugares y el conjunto de transiciones son disjuntos. I: T --> P es la función de entrada, un mapeado de transiciones en bolsas de sitios. O: T --> P es la función de salida, un mapeado de transiciones en bolsas de sitios.

Representación. Toda herramienta de modelado tiene una o más formas de ser representada. En el caso de las redes de Petri, podemos encontrar una representación gráfica y otra matricial.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 64

p1 t1 p2

arco

lugar transiciónmarca

REPRESENTACIÓN GRÁFICA Una red de Petri puede asociarse con un grafo dirigido con dos clases disjuntas de nodos, los lugares y las transiciones.

Un círculo representa un lugar, una barra representa una transición y un arco dirigido conecta lugares y transiciones.

Algunos arcos van desde un lugar a una transición y otros desde una transición a un lugar. Un arco dirigido desde un lugar p a una transición t define p como un lugar de entrada para t. Un lugar de salida se indica con un arco desde la transición al lugar.

Los arcos se etiquetan con sus pesos (enteros positivos). Si una de esas etiquetas se omite, significa que el arco tiene peso uno.

Las marcas se representan como puntos negros en los lugares. Los lugares que contienen marcas se consi-deran lugares activos.

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 sus lugares origen están marcados.

Cuando ocurre un evento asociado a una transición, se dice que la transición está validada.

Una Red de Petri es un multígrafo, dado que permite arcos múl-tiples desde un nodo del grafo a otro. Además, dado que los arcos son dirigidos, es un multígrafo dirigido. Dado que los nodos del grafo pueden ser particionados en dos conjuntos (sitios y transiciones), tal que cada arco está dirigido de un elemento de un conjunto a un elemento del otro conjunto, es un multígrafo dirigido bipartito.

El hecho de que las dos representaciones sean equivalentes significa que dada cualquiera de ellas, es posible encontrar la otra y además es única.

MarcasdelasRedesdePetri:Una marca µ es una asignación de tokens (puntos negros) a los sitios de una Red de Petri. El número y posición de los tokens puede cambiar durante la ejecución de una Red de Petri.

DEFINICIÓN: Una marca µ de una Red de Petri C = (P,T,I,O) es una función que va desde el conjunto de sitios P

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 65

a los enteros no negativos N.

La marca µ también puede definirse como un n-vector, µ = (µ1,µ2, ....,µn), donde n = |P| y cada µi N, i =

1,...,n. El vector µ da para cada sitio pi en una Red de Petri el número de tokens en ese sitio. El número de

tokens en el sitio pi es µi, i = 1,...,n. Las definiciones de marca como función y como vector están relaciona-

das por µ(pi) = µi.

Una Red de Petri marcada M = (C,µ) es una estructura de Red de Petri C = (P,T,I,O) y una marca µ.

En un grafo de Red de Petri, los tokens se representan por puntos dentro de los círculos que representan los sitios. En la figura puede verse una Red de Petri marcada.

Dado que el número de tokens que puede ser asignado a un sitio de una Red de Petri es ilimitado, hay una

infinidad de marcas para una Red de Petri. El conjunto de todas las marcas para una Red de Petri con n sitios

es el conjunto de los n-vectores, Nn. Este conjunto, aunque infinito, es numerable.

Ejemplo: Evolución del marcado en una Red de Petri

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 66

REPRESENTACIÓN MATRICIAL Una transición tiene un determinado número de lugares de entrada (o precondiciones) y de lugares de sali-da (o postcondiciones). Cada uno de estos se puede representar por una matriz binaria de dos dimensiones, donde las columnas representan los lugares, las filas las transiciones y las celdas la conexión entre ambas. Las matrices reciben los nombres de “Matriz de incidencia previa” y “Matriz de incidencia posterior” respec-tivamente.

Entre las técnicas de análisis más usadas se encuentran las ecuaciones matriciales, donde se definen dos

matrices C- y C+ para representar las funciones de entrada y salida. Cada matriz tiene m filas (una por cada transición) y n columnas (una por cada lugar).

Se definen:

C-[j,i] = #(pi, I(tj)) (Matriz de incidencia previa)

D+[j,i] = #(pi, O(tj)) (Matriz de incidencia posterior)

La forma matricial de definición de una Red de Petri (P, T, C-, C+) es equivalente a la forma estándar pero permite que las definiciones sean reexpresadas en términos de vectores y matrices.

Matriz de incidencia de N: C = C+ − C−.

EJEMPLO:

Dada la Red Petri R1 = (P, T, F, W, M0), donde:

P = {p1, p2, p3, p4}, T = {t1, t2, t3 }, Mo=(5, 0, 0, 0)

C- = Pre(pi, tj) = 1 0 0 0

C+ = Post(pi, tj) = 0 1 0 0

0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 67

Ejemplo: Red de Petri con 5 plazas y 5 transiciones

Al modelar una situación, los lugares representan condiciones, las transiciones representan eventos, y la presencia de al menos un elemento en un lugar (condición) indica que tal condición se cumple.

Una transición t ∈ T está sensibilizada (habilitada) para un marcado M dado, sii ∀p ∈ •t se verifica M(p) ≥ Pre(p, t). El grado de habilitación de una transición indica el máximo número que la transición puede ser disparada concurrentemente.

Regladeevolucióndelmarcado: Si t está habilitada para un marcado M entonces t puede dispararse. En la operación se alcanza un nuevo marcado M0, y se denota por M[t] > M0, el cual resulta de quitar Pre(p, t) marcas de cada lugar p ∈ •t y añadir Post(t, p) marcas a cada lugar p ∈ t•.

El cambio en el marcado está dado por la ecuación:

M0(p) = M(p) − Pre(p, t) + Post(t, p), ∀p ∈ P

Cada disparo de una transición modifica la distribución de las marcas, y por ello produce un nuevo marcado en la red.

Siguiendo con el ejemplo 1, al disparar la transición t1, obtene-mos:

M0 - Pre(P,T) + Pos(T,P) = MF

1 0 0 0 +

0 1 0 0

5 0 0 0 - 0 1 0 0 0 0 0 1 = 4 1 0 0

0 1 0 0 0 0 1 0

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 68

ESTRUCTURAS BÁSICAS

Selección: Selecciona el proceso a ejecutar

SELECCIÓN

Atribución: Ejecución independiente de un proceso por dos procesos distintos

ATRIBUCIÓN

Distribución: Ejecución de procesos paralelos o concurrentes

DISTRIBUCIÓN

Conjunción: Sincronización de procesos en paralelo

CONJUNCIÓN

Ejecución Secuencial: La transición t2 puede ser disparada solamente si antes disparado t1.

EJECUCIÓN SECUENCIAL

Sincronización: La transición t1 estará habilitada para ser disparada si todos los nodos de entrada de la transición t1 poseen al menos una marca en cada uno de ellos.

SINCRONIZACIÓN

Concurrencia: Las transiciones t2 y t3 son concurren-tes. Con esta propiedad, las RdP es capaz de modelar sistemas de control distribuido con múltiples procesos ejecutándose concurrentemente.

p1 p2 p3t1 t2

p1

p2

t1 p3

p1

p2

t1 p3

=>

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 69

Conflictos: Tanto la transición t1 como t2 están listas para ser disparadas, pero el disparo de alguna de ellas produce que la otra transición quede inhabilitada para ser disparada.

Definición: En una red de Petri, si una arista va del lugar p a la transición t, decimos que p es un lugar de entrada para la transición t. Un lugar de salida se define de manera análoga. Si cada lugar de entrada de una transición t tiene al menos un elemento, decimos que t está activada. La descarga de una transición elimina un elemento de cada lugar de entrada y agrega un elemento a cada lugar de salida.

Definición: Si una serie de descargas, transforma un marcado M en un marcado M’, decimos que M’ es al-canzable desde M.

Entre las propiedades más importantes estudiadas en la teoría de redes de Petri están la supervivencia y la seguridad. La supervivencia se refiere a la ausencia de estancamientos y la seguridad se relaciona con la capacidad limitada de la memoria.

Definición: Un marcado M de una red de Petri está vivo si, partiendo de M, si importar la serie de descargas realizadas, es posible descargar cualquier transición dada mediante alguna secuencia de descargas adiciona-les. Si un marcado está vivo, sin importar la serie de descarga de transiciones, P nunca se estancará.

Definición: Un marcado M para una red de Petri está acotado si existe algún entero positivo n con la propie-dad de que, en cualquier secuencia de descarga, ningún lugar recibe más de n elementos. Si un marcado M está acotado y en cualquier secuencia de descarga ningún lugar recibe más de un elemento, decimos que M es un marcado seguro.

Si cada lugar representa un registro capaz de guardar una palabra de computadora y si un marcado inicial es seguro, tenemos garantizado que no se excederá la capacidad de memoria de los registros.

PROPIEDADES En las RdP podemos encontrar propiedades estructurales, que dependen de la estructura topológica de las RdP, independientes del marcado inicial y, las propiedades de comportamiento que sí dependen del marca-do inicial.

PROPIEDADES ESTRUCTURALES

RDP PURA Una RdP N es una red pura si no existe ninguna transición que tenga un lugar que sea al mismo tiempo de entrada y salida de la transición:

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 70

∀tj ∈ T , ∀pi ∈ P, Pre(pi, tj) Post(tj , pi) = 0

RED DE PETRI ACOTADA ESTRUCTURALMENTE Una red de Petri está acotada estructuralmente si está acotada para cualquier marcado inicial finito.

Un lugar p en una red de Petri se dice no acotado estructuralmente si existe un marcado M y una secuencia de disparo σ desde M tal que p no esté acotado.

RED DE PETRI ESTRUCTURALMENTE VIVA Una red de Petri está estructuralmente viva si existe algún marcado inicial para el que está viva.

RED DE PETRI COMPLETAMENTE CONTROLABLE Una red de Petri se dice completamente controlable si cualquier marcado es alcanzable desde cualquier otro marcado.

RED DE PETRI ESTRUCTURALMENTE CONSERVATIVA Una red de Petri es estructuralmente conservativa si, para cualquier marcado inicial M0 y un marcado

PROPIEDADES DE COMPORTAMIENTO

VIVACIDAD Una transición t está viva para un marcado inicial dado M0, sii existe una secuencia de disparos a partir de un marcado M sucesor de M0 que comprenda a t :

∀M ∈ M(R, M0) ∃σ : M σ→M0 tal que t ⊂ σ.

Una RdP marcada está viva para M0 sii todas sus transiciones son vivas para M0.

Se puede decir que la propiedad de vivacidad significa la ausencia en el conjunto de alcanzabilidad de un marcado en el que la red se bloquee totalmente (deadlock), ya que, para que esté viva, todas sus transicio-nes deben ser disparables desde cualquier marcado alcanzable.

Se dice que una RdP marcada está parcialmente viva para M0 si, tomando como punto de partida cualquier marcado alcanzable a partir de M0, existe al menos una transición disparable y otra transición no viva. Toda RdP marcada parcialmente viva tiene la posibilidad de evolución global, independientemente de que existan transiciones que no puedan ser disparadas.

EJEMPLO: UNA RED DE PETRI NO VIVA. Para la secuencia de disparos t1, t2, t1, t2, no hay bloqueo. Si ahora se disparan las transiciones t1, t3, t4, ya no se puede disparar ninguna transición más, la red queda “bloqueada”.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 71

CICLICIDAD Se dice que una RdP posee un comportamiento globalmente cíclico para M0 si existe una secuencia de dispa-ros que permite alcanzar el marcado inicial M0 a partir de cualquier marcado M alcanzable a partir de M0: ∀M ∈ M(R, M0), ∃σ tal que M σ→M0.

La ciclicidad o reversibilidad de una RdP marcada garantiza que no existen subconjuntos finales de estados (marcados). Un subconjunto final de estados (marcados) contiene estados (marcados) mutuamente alcan-zables entre sí y tales que el estado inicial (marcado inicial) no es alcanzable a partir de ninguno de ellos.

EJEMPLO DE UNA RED NO REVERSIBLE Esta RdP es pseudoviva, además no tiene la propiedad de reversibilidad ya que el marcado inicial no se puede obtener jamás.

ACOTAMIENTO El significado de esta propiedad es el de asegurar que el sistema que una red representa posee un número finito de estados (si suponemos que cada lugar de la red representa a una variable de estado del sistema y su marcado el valor de dicha variable). Luego la propiedad de acotamiento determina la finitud del número de estados del sistema representado por una RdP.

Un lugar p es k-acotado para M0 sii existe un número entero k tal que M(p) ≤ k para cualquier marcado M ∈ M(R, M0). Se denomina cota del lugar p al menor entero k que verifica la desigualdad anterior.

Una RdP marcada es k-acotada para M0 sii todos sus lugares son k-acotados para M0:

∀p ∈ P y ∀M ∈ M(R, M0), M (p) ≤ k.

Merece una consideración especial la 1-acotación. Si una RdP es 1-acotada para M0, su marcado es binario (un lugar está o no está marcado) y se dirá que la RdP es binaria para M0. Una red segura, es una RdP 1-acotada. Una RdP es estructuralmente acotada si es acotada para cual-quier marcado inicial y finito.

Se dice que la red está k-acotada si para todo marcado alcanzable tene-mos que ningún lugar tiene un número de marcas mayor que k. Las redes

RED DE PETRI NO ACOTADA

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 72

1-acotadas son conocidas como binarias.

Si la red diseñada generar más marcas que las que su acotación permite el modelado será erróneo..

ALCANZABILIDAD La alcanzabilidad es una base fundamental para estudiar las propiedades dinámicas de cualquier sistema. Al dispararse una transi-ción habilitada, esta cambiará la distribu-ción de las señales (marcado). De esta forma, de una secuencia de disparos resul-tará una secuencia de marcados, luego un marcado Mn es alcanzable a partir de M0, si existe una secuencia de disparos que a partir de M0 nos lleve a Mn. Una secuencia de disparos la denotaremos por σ = t1, t2, ....., tn . en este caso Mn es alcanzable desde M0, sii ∃σ t.q. M0 [σi Mn.

LA EXCLUSIÓN MUTUA Cuando varios procesos comparten algún recurso del sistema tal que cuando uno de ellos lo está usando los demás no pueden hacerlo, debe implementarse un mecanismo de espera cuando el recurso compartido está siendo usado. La manera de hacerlo es utilizar un sitio para representar la condición "el recurso compartido está libre". En la figura se muestra la solución:

Este sitio actúa como un "semáforo", sincronizando el acceso de los procesos al recurso compartido. El esquema es válido cualquiera sea el número de procesos que com-partan el recurso. El primero que lo tome, quita la marca del lugar representativo del recurso disponible y entonces cualquiera que lo requiera deberá esperar. En este esque-ma no hay prioridades asignadas a los procesos que compi-ten simultáneamente por el uso del recurso.

EL PROBLEMA DEL PRODUCTOR Y EL CONSUMIDOR Aquí también existe un recurso compartido pero no para ser usado por los procesos sino como mecanismo de comunica-ción entre ellos. Entre un proceso que produce y otro que consume lo producido se puede instalar un depósito inter-medio (buffer) con el fin de "amortiguar" las diferencias oca-cionales de velocidad. Disponiendo un sitio para indicar la condición "depósito con producto", el proceso productor depositará un token cada vez que tengar un nuevo producto y el proceso consumidor comenzará su tarea cada vez que estando listo para ello, haya por lo menos un token en el

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 73

depósito (figura de la derecha).

La limitación de este esquema es que no es capaz de representar un buffer de capacidad finita, pudiendo crecer el número de productos en el depósito sin límite en el caso de detención del proceso consumidor. En la figura siguiente se muestra la solución cuando se quiere acotar la cantidad de productos intermedios. Se mues-tra también un sistema compuesto por un productor y un consumidor operando en forma asincrónica, comu-nicándose mediante un buffer con capacidad para tres productos. El sitio "buffers llenos" representa la exis-tencia de productos disponibles y el sitio "buffers vacíos" la cantidad de lugares disponibles en el depósito. Siempre se da que la suma de las marcas de ambos sitios dan la capacidad total del depósito.

EL PROBLEMA DE LA LECTURA Y LA ESCRITURA. Esta situación se presenta en sistemas en el que un cierto número de tareas pueden realizar lecturas y/o escrituras sobre un área de memoria compartida en forma simultánea. A fin de asegurar la consistencia de la información la ejecución de una escritura es excluyente, en tanto que se admitirá la ejecución concurrente de dos o más lecturas. En la figura se muestra una solución cuando el número de lectores es conocido e igual a "n" (observar la utilización de un semáfo-ro con marca "m" y dos arcos también con capacidad igual a "m").

AMBIENTES PARA LA ESPECIFICACIÓN Y VERIFICACIÓN CON REDES DE PETRI Como ya hemos señalado, además de contar con técnicas que permitan especificar sistemas es importante que luego de realizar la especificación se realice una validación o una verificación del modelo desarrollado.

Con un modelo de Redes de Petri podemos realizar una verificación del sistema propuesto, ya que mediante la ejecución de la red es posible obtener una simulación del comportamiento del sistema.

Es conveniente notar que generalmente logramos una verificación de la arquitectura propuesta, ya que una validación implica la utilización de un lenguaje más formal (aunque utilizando técnicas de análisis y la visión matemática de Redes de Petri podemos tener una "prueba" más cercana a una validación).

En este punto, es importante destacar la necesidad de desarrollar ambientes para especificar y verificar sistemas usando Redes de Petri, dado que cuando el modelo crece se torna inadecuado realizar manual-mente la ejecución de la Red. Por esto, el objetivo es obtener herramientas de software que permitan la ejecución automática de una especificación.

En el caso de las Redes de Petri, estas herramientas pueden orientarse hacia una definición gráfica, una definición estructural, o una combinación de ambas.

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 74

A=1

B=2

C=3

A=A+1

C=B+C

B=A+C

Los ambientes gráficos poseen la ventaja de permitir una rápida visión global del sistema que se especifica, aunque con frecuencia el hecho de tener que realizar una definición interactiva se torna un tanto tedioso. Además, si la red especificada es de un tamaño considerable el gráfico puede no ser todo lo claro que uno desea.

Cuando se opta por una definición orientada a la estructura podemos obtener un intérprete. En este caso, aunque se pierden las bondades de la especificación gráfica, el hecho de definir la red a modo de "seudocó-digo" nos acerca a la derivación del código del sistema en lenguajes como ADA o Modula.

De todas maneras, cualquiera sea la opción elegida, el ambiente que se desarrolle debe proveer facilidades para especificar, ejecutar automáticamente, y verificar los sistemas.

Ejemplo:

Modelar el programa de computadora dado

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 75

EJEMPLO: Modelar el flujo de datos que calcula la expresión = ( )

( )

a

a

b

bresta

suma a+b

a-bIf(a-b)≠ 0

If(a-b)= 0 Indefinido

divide

C u r s o M a t e m á t i c a D i s c r e t a I I – P r o f . J o r g e C a s t r o M o n g e , M . S c . Página 76

EJERCICIOS En los ejercicios 1 al 4, modele cada programa mediante una red de Petri. Proporcione el marcado que re-presente la situación inicial del programa.

1. A=1 B=2 C=A+B C=C+1

2. A=2

B= A+A C= 3 D=A+A C= A+B+C

3. A=1

S=0 S = S+A (10) A= A+1 IR A 10

4. Modelar el flujo de datos para calcular si una ecuación de la forma 2ax bx c+ + tiene 1 solución,

dos soluciones o ninguna solución. Utilice el concepto dado por = ±

5. Construya una red de Petri para especificar el funcionamiento de una máquina expendedora de be-

bidas. La misma tiene un depósito de bebidas con una cierta carga inicial, y un depósito de mone-das el cual inicialmente se encuentra vacío. Cuando se le ingresa una moneda y hay bebidas, la má-quina entrega una bebida y almacena la moneda en el depósito correspondiente. ¿Cómo modelaría la situación de que cuando no hay más bebidas la máquina retorne la moneda?

6. Existen pequeñas diferencias entre los sistemas de luces de tránsito en diferentes países. Por ejem-plo, el sistema de luces alemán tiene una fase extra en su ciclo. Las luces no cambian repentina-mente de rojo a verde sino que antes de pasar al verde enciende la luz verde junto con la luz amari-lla. Construya una red de Petri que se comporte como el sistema de luces de tránsito alemán. Ase-gúrese que la red no permita transiciones que no son posibles.