46
Programación en tiempo real | 1 Unidad 5 maquinas de turing Definiciones Básicas maquinas de Turing En contra de lo que pudiera parecer, la ciencia de la computación y las teorías sobre computabilidad no pertenecen a la disciplina que hoy conocemos como "Informática", sino a las matemáticas, que son, con mucho, anteriores a aquella. En matemáticas se considera que un método o procedimiento es efectivo para obtener un resultado cuando se cumple que: El procedimiento puede ser expresado mediante un algoritmo (un número finito de instrucciones concretas, en el que cada instrucción puede ser expresada por un número finito de símbolos. El procedimiento puede ser seguido sin error para conseguir el resultado en un número finito de pasos. El procedimiento puede ser (al menos teóricamente) seguido por un humano sin más ayuda que un papel y lápiz. El procedimiento no exige ninguna habilidad o inteligencia especial por parte de la persona que lo ejecuta. En lenguaje coloquial diríamos que "hasta un tonto podría hacerlo". La idea es

Unidad 5 maquinas de turing

  • Upload
    lokit0

  • View
    698

  • Download
    8

Embed Size (px)

Citation preview

Page 1: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 1

Unidad 5 maquinas de turing

Definiciones Básicas maquinas de Turing

En contra de lo que pudiera parecer, la ciencia de la computación y las teorías sobre computabilidad no pertenecen a la disciplina que hoy conocemos como "Informática", sino a las matemáticas, que son, con mucho, anteriores a aquella.

En matemáticas se considera que un método o procedimiento es efectivo para obtener un resultado cuando se cumple que:

El procedimiento puede ser expresado mediante un algoritmo (un número finito de instrucciones concretas, en el que cada instrucción puede ser expresada por un número finito de símbolos.

El procedimiento puede ser seguido sin error para conseguir el resultado en un número finito de pasos.

El procedimiento puede ser (al menos teóricamente) seguido por un humano sin más ayuda que un papel y lápiz.

El procedimiento no exige ninguna habilidad o inteligencia especial por parte de la persona que lo ejecuta. En lenguaje coloquial diríamos que "hasta un tonto podría hacerlo". La idea es que solo haya que seguir ciertas reglas de forma mecánica. Por esta razón cuando se cumplen estas condiciones se dice que el procedimiento es efectivo o "mecánico".

Para dar una definición matemáticamente precisa de lo que es un algoritmo, Turing ideó un dispositivo imaginario al que denominó Máquina de computación lógica LCM ("Logical Computing Machine"), pero que ha recibido en su honor el nombre de máquina de Turing. Aunque su propuesta es anterior a la aparición de los computadores digitales (1936 "On computable numbers, with an application to the Entscheidungproblem"), actualmente es el objeto central de estudio de los teóricos de la computación. Precisamente la definición moderna de lo que es "Computable" se basa en este concepto, y del mismo modo que cuando se habla de inteligencia artificial es inevitable referirse al Test de Turing, cuando se habla de algoritmos y computación es casi inevitable encontrar alguna referencia a la máquina de Turing . Lo que confiere al dispositivo su extraordinaria importancia es que es capaz de

Page 2: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 2

resolver cualquier problema matemático a condición de que haya sido reducido a un algoritmo.

Una máquina de Turing es un autómata que se mueve sobre una secuencia linea de datos. En cada instante la máquina puede leer un solo dato de la secuencia (generalmente un carácter) y realiza ciertas acciones en base a una tabla que tiene en cuenta su "estado" actual (interno) y el último dato leído. Entre las acciones está la posibilidad de escribir nuevos datos en la secuencia; recorrer la secuencia en ambos sentidos y cambiar de "estado" dentro de un conjunto finito de estados posibles.

Definición formal

Una máquina de Turing con una sola cinta puede ser definida como una 7-tupla , donde:

es un conjunto finito de estados. es un conjunto finito de símbolos distinto del espacio en blanco, denominado

alfabeto de máquina o de entrada. es un conjunto finito de símbolos de cinta, denominado alfabeto de cinta. (

) es el estado inicial. es un símbolo denominado blanco, y es el único símbolo que se puede

repetir un número infinito de veces. es el conjunto de estados finales de aceptación.

es una función parcial denominada función de transición, donde es un movimiento a la izquierda y es el movimiento a la derecha.

Existen en la literatura un abundante número de definiciones alternativas, pero todas ellas tienen el mismo poder computacional, por ejemplo se puede añadir el símbolo como símbolo de "no movimiento" en un paso de cómputo.

Funcionamiento

La máquina de Turing consta de un cabezal lector/escritor y una cinta infinita en la que el cabezal lee el contenido, borra el contenido anterior y escribe un nuevo valor. Las operaciones que se pueden realizar en esta máquina se limitan a:

Page 3: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 3

avanzar el cabezal lector/escritor hacia la derecha.

Visualización de una Maquina de Turing, en la que se ve el cabezal y la cinta que se lee avanza el cabezal lector/escritor hacia la izquierda.

El cómputo es determinado a partir de una tabla de estados de la forma:

(Estado, valor) (Nuevo estado, nuevo valor, dirección)

Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito en la cinta.

La memoria será la cinta la cual se divide en espacios de trabajo denominados celdas, donde se pueden escribir y leer símbolos. Inicialmente todas las celdas contienen un símbolo especial denominado “blanco”. Las instrucciones que determinan el funcionamiento de la máquina tienen la forma, “si estamos en el estado x leyendo la posición y, donde hay escrito el símbolo z, entonces este símbolo debe ser reemplazado por este otro símbolo, y pasar a leer la celda siguiente, bien a la izquierda o bien a la derecha”. La máquina de Turing puede considerarse como un autómata capaz de reconocer lenguajes formales. En ese sentido es capaz de reconocer los lenguajes recursivamente enumerables, de acuerdo a la jerarquía de Chomsky. Su potencia es, por tanto, superior a otros tipos de autómatas, como el autómata finito, o el autómata con pila, o igual a otros modelos con la misma potencia computacional.

Representación como diagrama de estados.

Las maquinas de Turing se pueden representar mediante grafos particulares, también llamados diagramas de estados finitos, de la siguiente manera:

Page 4: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 4

Esta Máquina de Turing está definido sobre el alfabeto Σ={a,b,c}, posee el conjunto de estados Q={qo,q1,q2,q3,q4,q5,q6}, con las transiciones que se pueden ver. Su estado inicial es q1 y el estado final es q2, el lenguaje de salida

={X,Y,Z,B} siendo B el símbolo denominado Blanco . Esta Máquina reconoce la expresión regular de la forma {a^n b^n c^n,n>=0} .

Los estados se representan como vértices, etiquetados con su nombre en el interior.

Una transición desde un estado a otro, se representa mediante una arista dirigida que une a estos vértices, y esta rotulada por símbolo que lee el cabezal/símbolo que escribirá el cabezal, movimiento del cabezal .

El estado inicial se caracteriza por tener una arista que llega a él, proveniente de ningún otro vértice.

El o los estados finales se representan mediante vértices que están encerrados a su vez por otra circunferencia.

Maquinas de Turing

En realidad la máquina de Turing es más una abstracción matemática que un dispositivo físico o mecánico. El hecho que se le denomine "máquina" se debe a que su funcionamiento puede ser descrito en términos de operaciones individuales muy sencillas que sugieren una implementación real muy simple, lo que ha motivado que existan muchas versiones prácticas del mismo.

Existen diversas "variedades" de una máquina de Turing, pero la más simple puede ser descrita diciendo que es cualquier dispositivo que cumple las siguientes condiciones:

Page 5: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 5

Tiene una cinta sobre la que puede desplazarse a izquierda y derecha un cabezal de lectura/escritura. La cinta contiene una serie de celdas, y en cada una de ellas puede escribirse un símbolo de un conjunto finito; este conjunto de símbolos se denomina el alfabeto de la máquina . En principio todas las celdas que no se hayan escrito antes contienen un carácter especial nulo o vacío (que se representa por 0 o #). La cinta puede contener tantas celdas a derecha e izquierda del cabezal como sean necesarias para el funcionamiento de la máquina.

El cabezal puede moverse a derecha (R) a izquierda (L) de su posición actual, así como leer el contenido de una celda o escribir en ella cualquier carácter de su alfabeto.

Existe un registro de estado que almacena el estado de la máquina. El número de estados posibles es finito, y no se exige ningún estado especial con el que sea iniciada la máquina.

Existe una tabla de acción , que contiene las instrucciones de lo que hará el autómata. Estas instrucciones representan en cierta forma el "programa" de la máquina. Las ejecución de cada instrucción de la tabla de acción incluye cuatro pasos:

o Leer un carácter en la posición actual. o Escribir un nuevo símbolo en esta posición (puede ser el mismo que

había). El símbolo a escribir es alguno del alfabeto de la máquina, y depende del carácter leído y del estado actual.

o Desplazar el cabezal una celda a derecha o izquierda (R/L); en algunos modelos el desplazamiento puede ser nulo (detener H).

o Decidir cual será el nuevo estado en función del carácter que se acaba de leer y del estado actual. Si la tabla de acción no contiene ninguna correspondencia con el estado actual y el símbolo leído, entonces la máquina detiene su funcionamiento.

En los modelos didácticos computarizados la tabla suele definirse mediante una matriz de cinco columnas que contiene:

Estado/Carácter-leído/Carácter-a-escribir/Movimiento/Nuevo-estado

Page 6: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 6

En el recuadro se incluye una muestra de una de estas tablas. Representa el comportamiento de una máquina de turing que es capaz de sumar 1 a cualquier número unario. El alfabeto solo tiene dos símbolos: Vacío (0) y valor (1). La máquina puede adoptar tres estados diferentes numerados del 0 al 2 (es costumbre señalar el estado inicial con 0). El movimiento H ("Halt") significa no desplazar el cabezal. En este caso la máquina se detiene (o entra en un bucle sin fin).

También es posible representar la tabla de acción mediante un grafo. Los diferentes estados internos se representan por círculos. Los cambios de estado con flechas a las que se añade una leyenda. Generalmente se utiliza una flecha para señalar el estado inicial. En la figura 1 se muestra el grafo correspondiente a la tabla.

Es notable que el diseño de Turing contiene de forma implícita la idea de que el autómata puede alterar su propio programa, pero el punto más significativo de su filosofía de funcionamiento es que se comporta como la mente, en el sentido que la configuración interna de la máquina establece el entorno en el que se toman las decisiones, de forma que la acción depende de dos factores: el estado interno y la información externa que puede "ver" a través de su cabezal . La consecuencia es que es imposible predecir su comportamiento de la simple inspección de su tabla de acción, ya que el comportamiento depende también de la entrada recibida.

El hecho que el número de estados posibles y su alfabeto sea finitos, califica a estos autómatas como máquinas de estados finitos FSM ("Finite State Machine").

Algunos teóricos sostienen que la genuina máquina de Turing solo utiliza un alfabeto unario, mientras que una máquina de estados finitos es más general y puede utilizar un alfabeto con más símbolos.

+---+---++---+---+---+| S | R || W | M | N |+---+---++---+---+---+| 0 | 0 || 0 | R | 0 || 0 | 1 || 1 | R | 1 || 1 | 0 || 1 | R | 2 || 1 | 1 || 1 | R | 1 || 2 | 0 || 0 | H | 2 || 2 | 1 || 0 | H | 2 |+---+---++---+---+---+

S = Estado actualR = Carácter leídoW = Carácter escritoM = Dirección del movimientoN = Nuevo estado

Page 7: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 7

Es significativo que la cinta puede extenderse indefinidamente a derecha e izquierda, lo que hace que en la práctica sea imposible construir un modelo real de lo que se denomina un sistema de Turing completo. Es también destacable que la máquina da a la cinta tres utilizaciones distintas:

Como elemento de almacenamiento de los datos de entrada (de capacidad potencialmente ilimitada)

Como elemento de salida (de cualquier cantidad de datos) Como almacenamiento de información intermedia durante el proceso (puede

ser de cualquier tamaño).

Aunque tanto el alfabeto utilizado como el número de estados son finitos, lo que confiere su potencia a la máquina de Turing (además de su diseño genial) es su almacenamiento ilimitado. Turing probó que este autómata es también un computador universal. Es decir, que puede emular el comportamiento de cualquier dispositivo cuyo comportamiento pueda ser expresado simbólicamente mediante un algoritmo.

Construcción de maquinas de Turing

Una vez definida la máquina de Turing y sus variaciones, puede estudiarse que problemas pueden resolverse mediante una máquina de Turing podemos considerar máquinas de Turing como subrutinas para la construcción de otras máquinas más complejas.Podemos considerar máquinas simples:

Repertorio de máquinas básicas Máquinas generadoras de un lenguaje Máquinas que aceptan lenguajes recursivos (paran para toda entrada) Máquinas que aceptan lenguajes r.e. (paran para toda palabra que pertenece

al lenguaje) Máquinas que computan alguna función o transducción.

Podemos representar estas máquinas como cajas negras, pudiendo utilizar el resultado que devuelven como entrada o señal de activación de otras máquinas.

Page 8: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 8

Combinación de máquinas sencillas, que comparten la misma cinta, forma máquinas más complejas.

Cuando una máquina termina su ejecución, la otra empieza, la segunda máquina opera sobre el contenido de la cinta que dejó la primera al detenerse

Ejemplo:

Supongamos una máquina de Turing con un alfabeto unario, en la que el nulo (ausencia de dato) lo señalamos con 0. La máquina puede tener cinco estados que denominamos {e0, e1, e2, e3, e4}. El estado inicial es e0; su tabla de acción se muestra a la derecha.

Observe que la tabla debe contener al menos tantas filas como estados distintos. La primera columna representa lo que podíamos denominar "estado mental" de la máquina. La segunda columna indica el carácter leído; representa la entrada (input) al autómata. Las siguientes (en otro color) representan el comportamiento o respuesta de la máquina para la combinación estado/carácter-leído. Esta respuesta tiene tres componentes:

Una salida (escribir en la cinta). Indicado en la columna W. Un movimiento de avance o retroceso del cabezal sobre la cinta (indicado en la

columna M). Un cambio del estado interno actual del autómata a otro nuevo (columna N).

Observe que las filas pueden repetir el primer elemento; significan las acciones a tomar en cada estado según el carácter leído. Cada vez que se alcanza un estado para el que no exista una entrada para el carácter leído, la máquina se detiene. En nuestro autómata la tabla señala acciones concretas para cualquier carácter leído (0 o 1) en cualquiera de los estados e1, e2, e3 y e4, pero si en el estado e0 se lee un 0, la máquina se detiene.

La sucesión de pasos de cómputo es la siguiente (suponemos un estado inicial cualquiera ex):

1.- Se lee un carácter c (en nuestro caso es necesariamente 0 o 1)

2.- Se mira en la tabla que fila corresponde a la combinación ex/c.

Page 9: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 9

3a.- Si no existe entrada la máquina se detiene.

3b.- Si existe entrada se ejecuta la instrucción (columnas en marrón claro) en el siguiente orden:

3b1.- Se escribe en la posición actual el carácter señalado (puede ser el mismo que había).

3b2.- Se mueve el cabezal una posición a izquierda o derecha.

3b3.- Se pasa al estado señalado en la última columna (puede implicar no cambiar de estado).

3b4.- Se repite el ciclo desde el punto 1.

Un ejemplo concreto debe comenzar en un estado determinado y con una cinta que contenga cualquier conjunto no nulo de caracteres del alfabeto del autómata. El autómata de nuestro ejemplo espera estar situado en el primer carácter (izquierdo) de una cantidad cualquiera representada en unario . El programa hace que el autómata lea la cantidad y la repita a la derecha separadas por un nulo (0). Por ejemplo, si encuentra 111100000 lo transforma en 111101111.

Un ejemplo del proceso de esta máquina puede ser el que se muestra a continuación. Como el número de pasos de cómputo hasta que la máquina se detiene, depende de la cantidad inicial representada en la cinta, para hacer el ciclo más breve supondremos que hay un 2 (110000...). Los pasos ejecutados por el autómata para realizar el proceso se muestran en la tabla inferior. La información contenida en la cinta para cada paso es la existente "antes" de la ejecución del ciclo correspondiente. El carácter en negrita indica la posición de la cabeza en el momento de la lectura.

Page 10: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 10

P1: La máquina ejecuta el primer paso. Arranca en el estado e0, donde lee un 1; entonces, de acuerdo con su tabla de acción escribe un 0 en esa posición, se mueve a la derecha y entra en estado e1.

P2: En e1 lee un 1, escribe un 1 y se mueve a la derecha. Sigue en e1.

P3: En e1 lee 0, escribe 0, se mueve a la derecha y cambia a e2

P4: En e2 lee 0, escribe 1, se mueve a la izquierda y cambia a e3

P5: En e3 lee 0, escribe 0, se mueve a la izquierda y cambia a e4

P6: En e4 lee 1, escribe 1, se mueve a la izquierda y sigue en e4

El proceso sigue la misma lógica a través de los sucesivos pasos hasta llegar al último.

P15: En e0 lee 0; no existe ninguna entrada en la tabla para esta combinación, por lo que el autómata se detiene. Comprobamos como al final ha escrito en la cinta la cantidad esperada: 11011.

Paso Estado Cinta

1 e0 11000

2 e1 01000

3 e1 01000

4 e2 01000

5 e3 01010

6 e4 01010

7 e4 01010

8 e0 11010

9 e1 10010

10 e2 10010

11 e2 10010

12 e3 10011

13 e3 10011

14 e4 10011

15 e0 11011

Parada

Page 11: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 11

Unidad 6 Redes de Petri

Modelo de redes

Los modelos de redes son aplicables a una extensa variedad de problemas de decisión, los cuales pueden ser modelados como problemas de optimización de redes que pueden ser eficiente y efectivamente resueltos. Algunos de estos problemas de decisión son realmente problemas físicos, tales como el transporte o flujo de bienes materiales. Sin embargo, muchos problemas de redes son mas que una representación abstracta de procesos o actividades, tales como el camino crítico en las actividades entre las redes de un proyecto gerencial.

La familia de redes de los problemas de optimización incluye los siguientes prototipos de modelos: Problemas de asignación, camino crítico, flujo máximo, camino mas corto, transporte y costo mínimo de flujos. Los problemas son establecidos fácilmente mediante el uso de arcos de redes y de los nodos.

¿Qué es un Nodo? Es usualmente llamado vértice, o punto. Es usualmente representado por un circulo. En las redes de transporte, estos deberían ser las localidades o las ciudades en un mapa.

¿Qué es un Arco? Es usualmente llamado borde o flecha. Este podría ser directo o indirecto. La cabeza es el destino, y la cola el origen. La cabeza y la cola son nodos que pueden estar tanto al origen como al final. En las redes de transporte, los arcos podrían ser los caminos, los canales de navegación en un río, o los patrones de vuelo de un avión. Los arcos proporcionan la conectividad entre los nodos. Una calle de una sola dirección podría ser representada por un arco, mientras que una calle de dos direcciones podría representada por un arco sin dirección o por dos arcos que apuntan a direcciones opuestas.

Una red con n nodos podría tener tantos arcos como n! /[(n-2)! 2!] = n(n-1)/2. Si están dirigidos, este número pudiese ser doble. Este enorme número de arcos posibles es una de las razones del porque existen soluciones de algoritmos especiales para problemas de redes particulares.

Page 12: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 12

El Problema del Camino más Corto

El problema es determinar la mejor manera de cruzar una red para encontrar la forma más económica posible desde un origen a un destino dado. Suponga que en una red dada existen m nodos y n arcos (bordes) y un costo Cij asociado con cada arco (i a j) en la red. Formalmente, el problema del camino más corto (CC) es encontrar el camino más corto (menor costo) desde el nodo de comienzo 1 hasta el nodo final m. El costo del camino es la suma del costo de cada arco recorrido. Defina las variables binarias Xij, donde Xij =1 si el arco (i a j)es sobre el CC y X ij = 0 de lo contrario. Existen dos nodos especiales llamados origen y destino. El objetivo es encontrar el camino más corto entre el origen y el destino.

En la red siguiente, varios costos son asignados para el camino que va de un nodo a otro. Por ejemplo, el costo de ir desde el nodo 2 al 4 es 6. La función objetivo considera los costos de moverse de un nodo a otro, o de un origen a un destino. Las restricciones están divididas en tres grupos. La restricción del nodo de origen dice que debe dejar el nodo 1 para ir al 2 o 3. La restricción del nodo intermedio dice que si siempre que se dirija a un nodo usted deberá dejar ese nodo. El nodo de destino es similar al nodo de origen dado que se puede alcanzar este nodo solo desde los nodos vecinos.

Considere la siguiente red dirigida (para una red indirecta, haga que los arcos estén dirigidos en ambas direcciones, luego aplique la misma formulación. Note que en este caso usted tiene Xij y Xji variables). El objetivo es encontrar el camino mas corto desde el nodo 1al nodo 7.

Page 13: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 13

Luego de correr el problema en cualquier paquete que solucione programación lineal, los resultados son:

Ir desde 1 hasta el 3 Ir desde 3 hasta el 5 Ir desde 5 hasta el 6 Ir desde 6 hasta el 7

Este es el camino mas corto con un total de 22 unidades de longitud.

Construya el problema dual para el ejemplo numérico anterior y proporcione una interpretación. Resuelva el problema dual mediante el Método Algebraico.

Note que, los resultados de los paquetes de programación lineal con respecto al análisis de sensibilidad para los problemas de redes podrían ser engañosos.

Page 14: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 14

Teorema de flujo maximo

Dado un flujo F en una red el flujo de salida de la fuente es igual al flujo de entrada del sumidero.

En una red G, el flujo máximo es un flujo máximo. Generalmente existen varios flujos con el mismo valor máximo. Para encontrar el flujo máximo consideraremos un flujo inicial en cada arista igual a cero, después se determina un camino específico de la fuente al sumidero y se incrementa el flujo.

Si una arista esta dirigida hacia la fuente decimos que esta arista esta dirigida en forma impropia, en caso contrario esta dirigida en forma propia.

Si se determina un camino P de la fuente al sumidero en donde cada arista de P esta orientada en forma propia y el flujo en cada arista es menor que la capacidad de la arista, es posible aumentar el valor de flujo.

Es posible incrementar el flujo en ciertos caminos de la fuente al sumidero que tenga aristas orientadas en forma impropia y propia. Sea P un camino de “a” a “z” y sea “x” un vértice en P que no sea “a” ni ”z”

Ambas aristas están orientadas en forma propia, en este caso, si incrementamos el flujo en ", el flujo en la entrada en x seguirá siendo igual al flujo de salida de x.

Si incrementamos el flujo en e2 en ", debemos disminuir el flujo en e1 en " de modo que el flujo de entrada en x siga siendo igual al flujo de salida en x.

Es análogo en el caso b

Disminuimos el flujo en ambas aristas en ". En cada caso las asignaciones resultantes de las aristas dan como resultado un flujo.

Para realizar estas alteraciones debemos tener un flujo menor que la capacidad en una arista orientada en forma propia y un flujo distinto de cero en una arista orientada en forma impropia.

Teorema 2:

Sea P un camino de “a” a ”z” en una red G tal que:

Para cada arista (i,j) de P, orientada en forma propia.

Page 15: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 15

Fij <Cij

Para cada arista (i,j) de P, orientada en forma impropia

0 <Fij

Se define

F'ij =

Si no existieran caminos que concuerden con el teorema 2, el flujo es máximo, entonces se considera el algoritmo:

Iniciar con un flujo

Buscar un camino que satisfaga con las condiciones del teorema 2

Si no existe el camino el flujo es máximo.

Se incrementa el flujo en ", y se regresa a línea 2.

A dicho algoritmo se le llama Algoritmo etiquetado.

Problema 1:

Para este ejemplo hemos usado una parte de la flota de la empresa multinacional ESSO.

La planta de ESSO-Texaco para el aeropuerto internacional de El Salvador posee dos tanques que son capaces de contener 180,000 galones de combustible para avion jet. Ambas distribuidoras depositan combustible en los mismos tanques, la ESSO esta encargada de depositar en los tanques de las 23:30 a las 6:00 y de las 6:00 en adelante se recibe producto de Texaco. Los camiones de la ESSO salen de la base hacia la refinería a cargar combustible o si ya están cargados, se dirigen directamente hacia la planta del aeropuerto a descargarlo. La siguiente red representa las posibles rutas que pueden tomar los camiones y sus respectivos tiempos:

Page 16: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 16

Por medio del diagrama nos podemos dar cuenta que un camión que no esta cargado de combustible no puede partir mas tarde de las 23:30 y cargar combustible ya que llegaría después de las 5:00 y un camión tarda una hora en descargar todo su combustible, lo cual provocaría que chocaran los horarios de los camiones ESSO con los horarios de los camiones de Texaco. Un camión ya cargado puede salir lo mas tarde a las 3:30 de la mañana para llegar exactamente a las 5:00. Estas restricciones de tiempo se deben a que todos los camiones de ESSO tienen un limite de velocidad por seguridad que es de 70 kmh y los tiempos ya están medidos.

El Problema Dual de Flujo Máximo

El problema dual para el ejemplo numérico anterior es:

Min 10Y12 + 10Y13 + Y23 + Y32 + 6Y26 + 4Y36 + 4Y63 + 8Y243Y64 + 3Y46 + 12Y35 + 2Y65 + 2Y56 + 8Y75 + 7Y47 + 2Y67

sujeto a:

Page 17: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 17

X2 - X1 + Y12 ³ 0, X3 - X1 + Y13 ³ 0, X3 - X2 + Y23 ³ 0,X3 - X2 + Y32 ³ 0, X6 - X2 + Y26 ³ 0, X6 - X3 + Y36 ³ 0,X3 - X6 + Y63 ³ 0, X4 - X2 + Y24 ³ 0, X4 - X6 + Y64 ³ 0X6 - X4 + Y46 ³ 0, X5 - X3 + Y35 ³ 0, X5 - X6 + Y65 ³ 0,X6 - X5 + Y56 ³ 0, X5 - X7 + Y75 ³ 0, X7 - X4 + Y47 ³ 0,X7 - X6 + Y67 ³ 0, X1 - X7 ³1, y

Yij ³ 0, y todos los Xi son variables libres.

La formulación dual sugiere que se intente asignar flujos a arcos de misma manera que para cada arco, la diferencia en valores en el nodo inicial y el nodo final excede el valor agregado.

Redes de Petri

Historia

Las Redes de Petri surgen en 1962 con el trabajo doctoral de Carl Adam Petri Kommunikation mit Automaten" (Comunicación con autómatas), en Alemania.En su disertación doctoral Petri formuló la base para una teoría de comunicación entre componentes asíncronos de un sistema de cómputo. Las ideas de Petri atrajeron la atención de un grupo de investigadores del Applied Data Research Inc. Dirigido por Anatol Holt y que trabajaban en el proyecto "Information System Theory Project". El grupo, desarrolló la teoría del proyecto conocido como “Systemics”. Este trabajo fue el que proporcionó la teoría primaria, notación y representación de las Redes de Petri.La teoría de Redes de Petri fue divulgada en 1968 en el reporte final del proyecto "Systemics".

Posteriormente, en el artículo titulado "Events and Conditions", publicado en 1970, Holt y Commoner muestran como las Redes de Petri pueden aplicarse al modelado yanálisis de sistemas con componentes concurrentes.El trabajo de Petri, también atrajo la atención del grupo "The Computation Structures Group", bajo la dirección de Jack Dennis, que trabajaban en un proyecto llamado "Project MAC" en el MIT.Este grupo, ha sido una fuente productiva de investigaciones y literatura, publicando varias tesis doctórales, numerosos reportes y memoranda sobre Redes de Petri.

Page 18: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 18

Carl Adam Petri extendió su teoría original, para incluir conceptos básicos de flujo de información y de la estructura de sistemas concurrentes, estimulando investigaciones en diversos centros de investigación europeos, particularmente en el "Institut Für lnformationssystemforschung of the Gessellschaft Für Mathematik und Datenverarbeitung" en Bonn, Alemania. Holt continuó con el desarrollo de nuevos conceptos a partir de su trabajo original en "Systemics", se concentró en el desarrollo de herramientas para la representación y análisis de sistemas.Su trabajo lo realizó principalmente en la investigación de aspectos fundamentales de concurrencia y conflicto en sistemas con múltiples partes.En el MIT y muchos otros centros de investigación Americanos, enfocaron inicialmente sus investigaciones sobre Redes de Petri hacia la teoría de autómatas.En la actualidad, existe gran difusión de los avances en Redes de Petri y prácticamente existe una sola corriente entre los investigadores Europeos y los Americanos, ya que la comunicación existente entre todos los grupos beneficia elconocimiento de los nuevos avances.

Definición

Una Red de Petri es un modelo gráfico, formal y abstracto para describir y analizar el flujo de información. El análisis de las Redes de Petri ayuda a mostrar informaciónimportante sobre la estructura y el comportamiento dinámico de los sistemas modelados.La teoría de las Redes de Petri permite la representación matemática del sistema a ser modelado.Las Redes de Petri son de utilidad en el diseño de sistemas de hardware y software, para especificación, simulación y diseño de diversos problemas de ingeniería.Las Redes de Petri pueden considerarse como autómatas formales o como generadores de lenguajes formales y tienen asociación con la teoría de grafos.Son excelentes para representar procesos concurrentes, así como, procesos donde pueden existir restricciones sobre la concurrencia, precedencia, o frecuencia de esas ocurrencias.

Las redes de Petri se utilizan para modelar el comportamiento dinámico de sistemas discretos.

Se componen de dos tipos de objetos:

Las plazas que permiten representar los estados del sistema mediante la utilización de marcas.

Las transiciones que representan el conjunto de acciones a realizar cuando se cumplen unas determinadas precondiciones en el sistema.

Page 19: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 19

Mediante una red de Petri puede modelizarse un sistema de evolución en paralelo compuesto de varios procesos que cooperan para la realización de un objetivo común.

En general, la presencia de marcas en una plaza se interpreta como la presencia de recursos. El franqueo de una transición (la acción a ejecutar) se realiza cuando se cumplen unas determinadas precondiciones, indicadas por las marcas en las plazas (hay una cantidad suficiente de recursos), y la transición (ejecución de la acción) genera unas postcondiciones que modifican las marcas de otras plazas (se liberan los recursos) y así se permite el franqueo de transiciones posteriores.

Una red de Petri es un conjunto formado por R={P, T, Pre, Post}

P: Conjunto de plazas de cardinal n.T: Conjunto de transiciones de cardinal m.

Pre: Aplicación de incidencia previa. Viene definida como:Pre:PxT --> NaturalesPost: Aplicación de incidencia posterior. Viene definida como:Post:PxT --> Naturales

Una red marcada es el conjunto formado por {R, M} donde:

R es una Red de Petri como la definida.M es una aplicación denominada marcada.M: P -->NaturalesSe asocia a cada plaza un número natural, denominado marca. Las marcas para una plaza se reunen en columnas.

Para las aplicaciones Pre y Post existe una notación matricial.

Ejemplo: Sea una red de Petri con cinco plazas (1..5) y cinco transiciones (a..e), que denominaremos R1.

Pre a b c d e Post a b c d e 1 1 0 0 0 0 1 0 0 0 1 02 0 1 0 0 0 2 1 0 0 0 03 0 0 1 0 0 3 1 0 0 0 1

Page 20: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 20

4 0 0 0 1 0 4 0 1 0 0 05 0 0 0 1 1 5 0 0 1 0 0

Las columnas se denotan por Pre(. , t), y las filas se denotan por Post(. , p).

Número de marcas asociados a la plazas. M0 el marcado definido por. Las marcas para todas las plazas se reunen por columnas:

M0

10000

La condición para que una red sea degenerada es que alguna fila o columna de las aplicaciones Pre o Post sea cero.

Una red es pura si cumple lo siguiente Pre(p,t) * Post(p,t)= 0 (para todo p y t).

Grafo asociado a una red: Una red de Petri tiene un grafo orientado bipartido, que se define como:P unión T, que es el conjunto de vértices.F: P unión T --> Partes de (P unión T), que es el conjunto de arcos.

El grafo {P, T, F, V} asociado a la red R={ P, T, Pre, Post) es:

F(p)={t pertenece a T si Pre(p,t)>0, para todo p}F(t)={p petenece a T si Post(p,t)>0, para todo t}V(p,t)=Pre(p,t)V(t,p)=Post(p,t)

V es la valoración de los arcos.

La definición del grafo indica que los arcos solo pueden ir:

Desde las plazas hasta las transiciones.Desde las transiciones hasta las plazas.

Page 21: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 21

REPRESENTACIÓN DE LA RED.

En la representación de una red de Petri, se omiten los arcos valorados con 0, y el 1 en los arcos valorados con 1.Las plazas se representan mediante círculos, las transiciones mediante rectángulos horizontales o líneas horizontales, y las marcas mediante puntos en el interior de las plazas.

Ejemplo: Representación como grafo de la red de Petri, R1.

F(1)={a}F(2) ={b}F(3) ={c}F(4)={d}F(5) = {d,e}

F(a)={2,3}F(b)={4}F(c)={5}F(d)={1}F(e)={3}

FUNCIONAMIENTO DE LA RED.

Una transición t es franqueable si para un marcado M se cumple:

M(p) >= Pre(p,t) ; (para todo p)

Page 22: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 22

Esto se indica con la notación M(t> ... y es la precondición de franqueo.Significa que el marcado permite el franqueo de la transición t.Si una transición t es franqueable para M, el franqueo define un nuevo marcado M'.Este nuevo marcado se define como:

M'(t) = M(p) - Pre(p,t) + Post(p,t) (para todo p)

M' se deduce de M y se denota M(t >M' (M da M' por t).Para una red, t es franqueable para M si las plazas p de entrada de t tienen un número de marcas superior a la del arco (p,t). Se eliminan V(p,t) marcas de cada plaza de entrada t y se añaden V(t,p) marcas a cada plaza de salida t.

Se observa que,

M >= Pre(. , t) and M(t >M' => M' >= Post(. ,t)

El marcado mínimo que permite el franqueo de t es Pre(p,t).El marcado mínimo que se obtiene del franqueo de t es Post(p,t).

Ejemplo: Funcionamiento de la red de Petri, R1:

Page 23: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 23

Y los sucesivos marcados que se obtienen son:

M0 M1 M2 M3 M4

1 0 0 0 00 1 0 1 00 1 1 0 00 0 1 0 10 0 0 1 1

Dado el ejemplo anterior se observa que:

Page 24: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 24

M0(a> significa que la transición a es franqueable para el marcado M0.M0(a>M1 significa que la transición a es franqueable para el marcado M0 y da el marcado M1.La transición b no es franqueable para el marcado M0.

En este momento se puede observar la similitud con los procesos concurrentes:

Las plazas son los semáforos.Las marcas el entero que inicializa al semáforo y su posterior evolución..Las transiciones son el código de una seccion critica que utiliza los procesos concurrentes.La entrada a las secciones criticas está gobernada por los semáforos.

Ejemplo: Implementación de la red de Petri, R1, utilizando semáforos. Se puede descomponer en cinco procesos concurrentes:

P1:

P(semáforo1);/* transición a */V(semáforo2);V(semáforo3);

P2:

P(semáforo3);/* transición c */V(semáforo5);

P3:

P(semáforo4);P(semáforo5);/* transición e */V(semáforo1);

P4:

P(semáforo2);/* transición b */V(semáforo4);

Page 25: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 25

P5:

P(semáforo4);/* transición d */V(semáforo2);

Inicialización de los semáforos y lanzamiento de los procesos concurrentes:

begin

semáforo1:=1;semáforo2:=0;semáforo3:=0;semáforo4:=0;semáforo5:=0;

cobegin

P1;P2;P3;P4;P5;

coend;

end

Dos transiciones t1 y t2 están en conflicto estructural si, existe un p, tal que, Post(p, t1) * Post(p, t2) sea distinto de 0.

Si tienen al menos una plaza de entrada en común.

Dos transiciones están en conflicto efectivo para un marcado M si además de cumplirse, M(t1> , M(t2> y existe un p tal que M(p) <Pre(p, t1) + Pre(p,t2)

Un conflicto efectivo consiste en una elección entre franqueos.

Page 26: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 26

APLICACION PRACTICA.

Problema de los filósofos: (Dijkstra 1965, problema 5.13 de Sistemas Operativos, H. M. Deitel)

Cinco filósofos están sentados alrededor de una mesa circular. Los cinco llevan una vida muy sencilla que alternan entre pensar y comer. Frente a cada filósofo hay un plato de comida que un criado mantiene lleno todo el tiempo. Hay exactamente cinco tenedores en la mesa , uno entre cada par de filósofos adyacentes. Para comer cada filósofo debe utilizar simultáneamente los dos tenedores adyacentes a su plato.

La modelización de las aplicaciones Pre y Post son:

Pre a b c d e Post a b c d e 1 1 0 0 0 0 1 1 0 0 0 02 1 1 0 0 0 2 1 1 0 0 03 0 1 1 0 0 3 0 1 1 0 04 0 0 1 1 0 4 0 0 1 1 05 0 0 0 1 1 5 0 0 0 1 1

El marcado inicial es:

M0

11111

El grafo asociado a la red es:

Page 27: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 27

Comentarios a la red del problema de los filósofos:

La red no es degenerada, según la definición no hay ninguna fila o columna de las aplicaciones Pre o Post igual a 0.

La red no es pura, existe plazas y transiciones tal que Pre(p,t)*Post(p,t) distintas de 0. Ejemplo, Pre(1,a)*Post(1,a)<>0.

La red contiene un conflicto estructural, existen plazas tal que Post(p,t1)*Post(p,t2)<>0. Ejemplo, Post(2,a)*Post(2,b)<>0.

La red contiene un conflicto efectivo, dado el marcado M0, todas las transiciones son franqueables.

De hecho, M0(cualquier transicion>M0. Esto significa que dado el marcado M0 hay que "decidir" que transición se ejecuta.

Modelización de la red de Petri obtenida con procesos concurrentes

Observación: Debe tenerse en cuenta que en el modelo teórico, el borrado de las marcas es simultáneo e instantáneo pero al modelarlo como proceso concurrente existe la posibilidad de un abrazo mortal por lo que para la codificación se ha optado por un modelo asimétrico en el proceso que modela el comportamiento de un filósofo.

Los procesos concurrentes son:

Pa:

Page 28: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 28

P(S2);P(S1);/* el filósofo a come */V(S1);V(S2);

Pb:

P(S2);P(S3);/* el filósofo b come */V(S3);V(S2);

Pc:

P(S4);P(S3);/* el filósofo c come */V(S3);V(S4);

Pd:

P(S4);P(S5);/* el filósofo d come */V(S5);V(S4);

Pe:

P(S1);P(S5);/* el filósofo e come */V(S5);V(S1);

Inicialización de los semáforos y lanzamiento de los procesos concurrentes:

begin

Page 29: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 29

S1:=1;S2:=1;S3:=1;S4:=1;S5:=1;

cobegin

Pa;Pb;Pc;Pd;Pe;

coend;

end

Problema de los fumadores de cigarrillos: (Patil 1971, problema 5.19 de Sistemas Operativos, H. M. Deitel)

Tres fumadores están representados por los procesos F1, F3 y F3. Tres vendedores están representados por los procesos V1, V2 y V3. Para fumarc cada fumador necesita tabaco, papel para tabaco y un fósforo; cuando dispone de estos recursos, el fumador fuma un cigarrillo hasta terminarlo y entonces queda elegible para fumar de nuevo. F1 tiene tabaco, F2 tiene papel y F3 tiene fósforos. V1 vende tabaco y papel, V2 vende papel para tabaco y fósforos, y V3 vende fósforos y tabaco. V1, V3 y V3 trabajan en exclusión mutua; sólo uno de los procesos puede trabajar a la vez y el siguiente vendedor no puede trabajar hasta que los recursos suministrados por el vendedor anterior hayan sido consumidos por un fumador.

La modelización de las aplicaciones Pre y Post son:

Pre V1 V2 V3 F1 F2 F3 Post V1 V2 V3 F1 F2 F31 1 1 1 0 0 0 1 0 0 0 1 1 12 0 0 0 0 0 1 2 1 0 0 0 0 03 0 0 0 1 0 0 3 0 1 0 0 0 04 0 0 0 0 1 0 4 0 0 1 0 0 0

El marcado inicial es:

M0

1

Page 30: Unidad 5 maquinas de turing

P r o g r a m a c i ó n e n t i e m p o r e a l | 30

000

El grafo asociado a la red es:

Comentarios a la red del problema de los fumadores:

La red no es degenerada, según la definición no hay ninguna fila o columna de las aplicaciones Pre o Post igual a 0.

La red es pura, Pre(p,t)*Post(p,t)<>0 para todo p y t.

La red contiene un conflicto estructural en la plaza 1, Post(1,V1)*Post(1,V2)<>0.

La red contiene un conflicto efectivo, dado el marcado M0, M0(V1> y M0(V2> además para la plaza 2, M(2)<Pre(2,V1)+Pre(2,V2). Esto significa que dado el marcado M0 hay que "decidir" que transición se ejecuta.