Wednesday, November 25, 2009

En día de hoy y para finalizar este curso   se pidió un programa en MPI que realizara la suma de  vectores en el cluster  el cual   consiste en  simular   que  se crean   4 procesos  y en la que cada proceso   tiene un vector   de 100 elementos y  en la cual  cada procesos hará la suma de sus elementos y lo mandara al proceso  “Master” el cual   hará  la suma del resultado de  los procesos  y sus vectores   mandara  a imprimir e resultado final y un pequeño  cuestionario sobre la forma  que trabajamos en general en equipo y  respecto al curso que es lo que aprendí y como es que estuve trabajando  en el transcurso del  cuatrimestre.

Friday, November 20, 2009

El día de hoy  en clase se hablo un poco de lo que es la diferencia de  programación   paralela y programación concurrente y que diferencia hay entre  ellas  en las cuales  se realizo un  cuadro comparativo  en  la cual  se describían lo que es las ventajas y desventajas  de  cada una de  ellas y las cuales  se   discutieron un poco  en  clase.

Wednesday, November 18, 2009

En este día en  laboratorio   se  continuo  con lo que es  ejercicio de  MPI paso de mensajes  ya  que estos programas   se pidieron  en gran cantidad y se realizaron  los de un tutorial en los  cuales  hacen mejor el  entendimiento para  comprender lo que es MPI su funcionamiento y como se trabaja en el cluster y compilarlos  para  seguir con lo que es practica de  MPI.

Wednesday, November 11, 2009

laboratorio MPI

Este día  no  hubo cluster las cuentas del cluster no sean podido  activar para poder  hacer practicas con  MPI pero  en  la plataforma  se hicieron  unas de paso de mensajes que teníamos que  realizar para seguir  con lo que es  el paso de mensajes con lo que es   MPI en el cual  fueron  7 programas que  nos dan paso de mensajes.

Wednesday, November 4, 2009

El dia de hoy  tuvimos q entregar los  24  programas    que son los problemas de :

                *programa de  la engrapadora

                *programa de  el baño

                *programa de camiones

                *programa del estacionamiento

                *problema de la tribu

                *problema de lectores y escritores

                *problema de  filósofos  pensantes

                *problema del  productor y consumidor

Y estos programas  hechos en cada una de las versiones:

 

-Sincronizados

-Semáforos

-monitores

 

Los  cuales  se le fueron  entregados   y revisados   por la maestra en  laboratorio.

Donde también  empezó   a darnos referencia delo que s  el paso de mensajes de  MPI  para  empesar a trabajar con lo que  es el cluster  de la facultad.

Monday, October 26, 2009

Este día   la maestra   dio   la lista de quienes  estaba exentos  y quienes  tenían que hacer examen  pues  durante   las practicas  pidió lo que era  practicas puntuales para poder  exentar examen   y también   reviso lo que seria la   conexión ala base de datos  con el programa  que  nos  había dado de ejemplo de la agenda en la cual teníamos que hacer la conexión en nuestras  lap´s  para  poder  también  exentar  si es que juntábamos todos los requisitos.

Wednesday, October 21, 2009

Hoy en laboratorio  la maestra pidió  realizar como  cada  laboratorio  hacer  la practica que cada miércoles  pone el  la plataforma  de  Moodle  y en este  caso  vimos lo que es  monitores el cual  explico  brevemente  y  pidió  que corriéramos lo programas para poder ver   en que consistía lo que es  los monitores  y hacer en equipo un programa en el cual seguir explicando y ver   como trabaja lo que es  monitores.

Friday, October 16, 2009

En este día hemos visto  lo que será necesario  para hacer una  conexión también usando junto con lo que serán sockets   es la conexión a  una base de datos   mediante un programa el modificar una   base o mejor dio  irle agregando  una lista   lo que seria una agenda  es  agregarle  unos  cuantos   contactos   y se van actualizando  la lista, pero  solo el día de hoy nos enseño a  hacer la conexión de lavase  de datos  para  usarla  con lo que será un programa en java, la verdad  me gusto  que la maestra utilizará esa  forma de trabajar por que no es algo que  necesitemos  mas adelante no solo en la carrera  sino también  en  el trabajo.

Monday, October 12, 2009

precentacion en clase de programa

El día de  hoy se  hizo  una exposición de cómo resolvimos cada equipo el   problema de la un punto de venta  con  sincronización  utilizando  “synchronized”  en el cual con los equipos  formados  en clase pasada  en la cual me toco ser  el  “abogado del diablo” donde   mi rol era más a decidir o abogar  por  una solución se le podría dar, en la exposición  también  hubo otros   roles  que  tuvieron que ser tomados en cuenta   así  como el describir   el  manejo de tiempo en que tiempo se realizo y como se fue organizando el  equipo para poder realizar  el  programa. En general como se fue   organizando el equipo para la realización de l programa y como   fue q  llegamos a la solución del  problema en  cual  estuvo tranquila  la presentación,   no  hubo muchos nervios    y simplemente explicar  a grandes rasgos la actividad de cada quien y como realizamos la solución de problema.

El día de  hoy se  hizo  una exposición de cómo resolvimos cada equipo el   problema de la un punto de venta  con  sincronización  utilizando  “synchronized”  en el cual con los equipos  formados  en clase pasada  en la cual me toco ser  el  “abogado del diablo” donde   mi rol era más a decidir o abogar  por  una solución se le podría dar, en la exposición  también  hubo otros   roles  que  tuvieron que ser tomados en cuenta   así  como el describir   el  manejo de tiempo en que tiempo se realizo y como se fue organizando el  equipo para poder realizar  el  programa. En general como se fue   organizando el equipo para la realización de l programa y como   fue q  llegamos a la solución del  problema en  cual  estuvo tranquila  la presentación,   no  hubo muchos nervios    y simplemente explicar  a grandes rasgos la actividad de cada quien y como realizamos la solución de problema.

Wednesday, October 7, 2009

laboratorio

El día de hoy en laboratorio    nos reviso lo que fue el programa  de  la tienda  y como se estaba llevando acabo la exclusión mutua en cual nos reviso  y tuvimos que hacer unas  pequeñas modificaciones , también  hicimos de practica  como crear  hilos en  lenguaje “C” en le cual se hizo en laboratorio unas practicas  de  programas en “c” el cuan consistía en  compilarlos y ejecutarlos  para  poder ver  la creación de  hilos  y   de que manera se implementan.

Monday, October 5, 2009

semáforos

En este día   vimos  lo que es   el tema de   semáforos en la cual  en sus  diapositivas   vimos  como funcionan   los  semáforos   sus primitivas y     para que  nos  sirve,   el semáforo   nos sirve en el  caso de exclusión mutua  ya que  realiza el mismo trabajo  pero con distinta forma de trabajar como por ejemplo viendo  la funcionalidad de un semáforo  común en lo  que es en una vialidad le  da el paso a  cierto   sentido de la vía  y  el otro sentido  se detiene hasta que  le toque su turno,   lo mismo realiza con  lo que es la  sección critica hace esa exclusión  en cierto programa y no  exista   lo que es el llamado “inter bloqueo”   la hora  de  tomar ele recurso compartido el semáforo  nos ayuda  para resolver este  problema que existe en l o que es la programación  concurrente. También se vio lo que fue una implementación de  semáforo binario y el semáforo  normal  con un sencillo ejemplo visto en diapositivas.

Wednesday, September 30, 2009

En este día  se  entregaron programas   dejados de tarea como  son   creación de  hilos pero ahora  en lenguaje  C  para  ver como se crean y como se trabaja   con  hilos en este lenguaje .

También se entrego  lo que seria   ya corriendo el   programa de  la tienda  en la cual contaría como  trabajo para poder exentar el segundo examen y si  seguimos  así  siendo puntuales en la entrega  de  trabajos  ya no  tendríamos  que realizar  examen del  2 parcial  :)  el cual   la maestra nos reviso  el programa corriendo y nos  dio  un pequeños comentarios para  modificarle al  programa que ya estaba corriendo y funcionando.

 

También  nos dejo realizar en clase una práctica  sobre  exclusión mutua  y ver diferencias de lo que es  sincronización de procesos.

Monday, September 28, 2009

En este día  continuamos  con lo que es  Sincronización de   procedimientos  con un problema propuesto la clase   anterior  en la cual  se  formaron  equipos   para poderlo realizar   en ese momento  en la cual  se repartieron  varios roles  entre  los integrantes del  equipo para poder   gestionar la resolución del problema ya que   mediante la   sincronización  con la primitiva   “Synchronized”  y  “wait()” y” notify()”  teníamos que  resolver  un problema de una  tienda  en la cual  se tenia que crear   un  vendedor el comprador  en la cual  sincronizaríamos  lo que serian los mensajes   que seria al efectuar una  compra ventea de  algún producto en la cual   el vendedor  tenia  que:

                -esperar  el pedido de   mercancía

                -elaborar el pedido

                -realizar  la  factura de la compra

                -entregar factura    e  entregar  mercancía

 

Y  por  parte del comprador:

                -hacer pedido de  mercancía

                -esperar pedido de mercancía

                -pedir factura

                -esperar factura y mercancía

                -notificar que ha recibido  su  factura  junto con su mercancía

 

La cual  no se  pudo terminar el ejercicio en clase  por lo cual se tuvo que  hacer   una segunda reunión  entre el equipo para poderlo  terminar ya que era un ejercicio  para  poder entregar en  la  próxima clase  con una presentación  para el  grupo de la  gestión del como se planteo su resolución como  equipo y como se había  llegado a su solución.

Friday, September 25, 2009

Este día seguimos viendo unas diapositivas en la cual empezamos,    mejor dicho,   seguimos  con lo que es la  exclusión mutua  mediante   las primitivas de  java como  son:  

                *Sleep()

                *wait()

                *notify()

                *isAlive()

                *getThreadGroup()

 

En la cual vemos que  seguimos  usando  hilos para poder crear procesos  y que  podemos  pausarlo con  “sleep”,   pasándole  un numero q indica  cuanto  tiempo dormirá el proceso   o   con un  “wait” que este necesita   forzosamente un  “notify”  para   poderlo  activarlo de nuevo  para que   termine con  su tarea,  conocer el estado del  hilo con   “isAlive” donde este regresa  un  booleano   que  indica  el estado del  proceso,  crear un  grupo de hilos  y obtener   a que  grupo pertenece  con   “getThreadGroup”.

 

Aunque también  empezamos  a ver  un poco de  lo que es sincronización de  hilos  que este  se efectúa con  “Synchronized”   y  vimos un pequeño   ejemplo de  lo que  es  el uso de estas primitivas.

Wednesday, September 23, 2009

laboratorio con lagortimos Dekker y Peterson

En este día  en laboratorio  se creo  el programa de los esquimales y  del  jardín  que son  problemas  de  exclusión  mutua  que se implementaron  con del algoritmo de   Dekker.

También se realizo la practica  de   hacer la diferencia del algoritmo de  Dekker y el de  Peterson

Monday, September 21, 2009

Exclusion Mutua algoritmo Dekker

El día de hoy  vimos  lo que es   exclusión mutua así como  el algoritmo de   Peterson  y  el de  Dekker  los que es  previo  temas para  empezar a ver lo que es  semáforos y  monitores que la maestra el día de  hoy   nos   ha  dejado investigar para  la próxima clase, pero regresando  a  lo que se  hizo el día de  hoy  fue    seguir   viendo  las diapositivas de los apuntes que lleva la  maestra como apoyo de  clase,  en la cual  explicaba  el algoritmo de  Dekker,   en que consistía  y cual es la manera de  funcionar el  cual  es una solución al problema de exclusión mutua  de   procesos  en sistemas  con  memoria común en el cual  tienen  acceso  a un recurso compartido, q es conocido como  problema de  exclusión mutua, ya que  de este de deriva  la necesidad de  plantear  algoritmos o  maneras de solución  a este  problema.  En general  se puede  decir que  se  pretende evitar que   2 o mas procesos   concurrentes   se  encuentren   ejecutando su sección   critica al mismo  tiempo.

 

A este  algoritmo   se llega mediante  varios intentos de   resolver    la  exclusión mutua,  que  este algoritmo funciona  al  intento de   que cada proceso  tiene su  propia variable para  evitar  los problemas   en ausencia  de  contención, pero en presencia de ella ningún proceso tenia derecho a  insistir p ara entrar  en su sección critica, experto   que  incorpora  a este método el  derecho  explicito de   insistir  para   entrar  en su sección  critica.  Donde las variables  individuales  de  los procesos permitirán  conseguir la exclusión mutua, pero se  usará   una variable de  turno común a  ambos procesos, de manera que en  presencia de  contención entre  en su sección critica el proceso que  tenga el  turno.

 

El  algoritmo  es correcto  y satisface  los requerimientos  de  exclusión  mutua y ausencia de  bloqueos, en l cual ningún  proceso se  vuelve ansioso, y en ausencia de contención de  un proceso  entra en sus  sección  inmediatamente  si lo desea.

 Aquí  se muestra  el algoritmo  para   su mejor comprensión:






Ahora    veremos el  algoritmo  generalizado  ya no para 2 proceso  si no  para  n procesos. En este algoritmo cada proceso que desea  ejecutar su sección crítica toma un número. El proceso que tiene el número menor es el que accede a su sección crítica. De ahí el nombre del  algoritmo.



Monday, September 14, 2009

uuffff!! dial de examen!!! :P

Este día se nos aplico  un examen en el cual   lo realizamos  aparte para  observar nuestros  errores, el cual  no  estaba tan difícil ya que  hubo preguntas de todo un poco así como  un programa por realizar ya que   seria  obviamente de   hilos en java ejecutando   un mensaje  si  en  una lista de calificaciones  el numero corresponda   a  aprobado excelente  bueno  regular o  reprobado.

Wednesday, September 9, 2009

miercoles de laboratioro

El día de hoy   en laboratorio   reviso   un programa que  dejo de unas copias en la cual se trata del tema   como repaso  de   “Quick sort, ordenamiento por  burbuja,  Mergesort”   así como  el decir en que tiempo se tardo el  programa  al  ejecutarlo en  nano segundos, también de un applet  el cual  dibuja  unas  pelotas rebotando en  la cual se  crean   las pelotas que  uno desee mediante la creación de  hilos en la cual  lo hicimos en equipo ya que  es una   ventaja el trabajar en equipo un poco   difícil el coordinar el equipo pero   es mejor.

Friday, September 4, 2009

El día de hoy vimos  un poco mas de la historia de lo que  es la programación concurrente de unas copias   que se titulan  “Introducción a la Computación Distribuida”    que  ella nos dio para  que   complementáramos la  clase en el cual se tocaron los  subtemas de:

                *historia de  la computación distribuida

                               -Tendencia Histórica

*Diferentes Formas de  Computación

-Computación monolítica

-Computación distribuida

-Computación  paralela (solo  fue  una   mención de lo que es)

-Computación  Cooperativa

-  un articulo llamado “Por donde viaja el Internet”

*Virtudes y  Limitaciones de  la Computación Distribuida

 

En el cual  un tema q me llamo la atención  fue  el de  de  “Como viaja el internet” ya que la verdad nunca  me  pregunte ni tuve esa  inquietud del  saber o preguntarme como es  que viaja el internet, en el cual  nos  dio  las copias  como  ejemplo  el  uso del sistema de    “Ebay” de l como interactúa el  paso de  datos  a donde los manda y como los recibe, que  por desgracia solo lo mencionare  por este medio  ya que no lo detallare esa  información  pero  mas adelante   buscare un reportaje  para   ligarlo   a este  blog.

Como investigación  dejo  investigar  la súper computadora  que la  UNAM tiene  llamada “kam-Balam”   del por que  no esta al 100% de  su  uso total el cual esta conformado  por   1368 procesadores   AMD  ( WOOW!!!),  con  3000 GB de  RAM   y  160 TB de   almacenamiento,  claro  la verdad nunca  pensé   que  estuviera tan súper  esa computadora  que  aunque   está   la verdad muy  padre  no esta  a todo su máximo potencial , es mas  por ahí le leí que  ni siquiera   la dejan   usar  al todos los  alumnos  que   la  necesitan, pero en fin  esperemos que  eso solo sea  un rumor ya que si tiene tan tremenda  computadora  se le  debería sacar   todo  el  aprovechamiento  mas que la UNAM  es una de las universidades reconocidas por  sus investigaciones.

 O tu que  piensas ¿?



Wednesday, September 2, 2009

laboratorio de clase de prog Concurrente

El dia de  hoy  como todos los miércoles de  laboratorio  vimos el tema de  los hilos en java y su precedencia, esto como un repaso del  lenguaje de  java en el cual hicimos  unas preguntas que  la maestra nos dejo en la plataforma  moodle  las cuales  no  hacen  preguntas  de  un programa que  el cual   se cran  hilos en  java  utilizando  la interfaz runnable y   creándolo  por medio de la clase   thread.

 

Creando  en laboratorio  el reporte que  todos los miércoles  quiere  con el objetivo de la practica  el código del  programa  así como también  sus corridas del programa.

 

En el  cual aprendí  como se crean los hilos n en java con runnable  y  herendando   de la clase   thread.

Monday, August 31, 2009

2da. clase

Hola que tal aquí  les dejo  unos breves datos de lo que  hicimos  que en  general los puntos que vimos son:

*Breve introducción de concurrencia

*concepto de Programación Concurrente

*Programa y Proceso

*Beneficios

*concurrencia  y arquitecturas Hardware

*Sistemas monoprocesador

*Sistemas  multiprocesador

*Condiciones de Bernstein

*Grafos de  Precedencia

 

 

Breve introducción de concurrencia

La idea de programación concurrente siempre estuvo asociada al mundo de los

Sistemas Operativos (SSOO). No en vano, los primeros programas concurrentes

fueron los propios Sistemas Operativos de multiprogramación en los que un solo

procesador de gran capacidad debía repartir su tiempo entre muchos usuarios.

Para cada usuario, la sensación era que el procesador estaba dedicado para él.

Durante la década de los sesenta y setenta esto fue así.

 

La aparición en 1972 del lenguaje de alto nivel Concurrent Pascal

[Brinch-Hansen, 1975], desarrollado por Brinch Hansen, se encargó de romper

este mito y abrir la puerta a otros lenguajes de alto nivel que incorporaban

concurrencia.

Tres grandes hitos se nos antojan importantes para que la programación

concurrente actualmente sea tan importante:

 

      *La aparición del concepto de  thread o  hilo que hace que los programas

puedan ejecutarse con mayor velocidad comparados con aquellos que

utilizan el concepto de proceso.

      *La aparición más reciente de lenguajes como  Java,  lenguaje orientado a

objetos de propósito general que da soporte directamente a la programación

concurrente mediante la inclusión de primitivas específicas.

     *La aparición de  Internet que es un campo abonado para el desarrollo y la

utilización de programas concurrentes. Cualquier programa de Internet en el

que podamos pensar tales como un navegador, un chat, etc., están

programados usando técnicas de programación concurrente.

 

Concepto de Programación Concurrente

Pero que es   Programación Concurrente?

Vemos que dice nuestra definición “Acaecimiento o concurso de varios sucesos en un mismo tiempo”.

 Pero  ahora si cambiamos la palabra  “suceso” por  “proceso’”,  pero ahora para poder dar una definición adecuada necesitaremos dar  antes  unos conceptos que nos ayudaran  a enteder mejor  esta definición.

 

Programa y Proceso

Un  programa es un conjunto de instrucciones. Es, simplemente, una secuencia de líneas de código que dicen qué hacer con un conjunto de datos de entrada para producir algún tipo de salida, donde es  considerablemente   “estático”.

 

Un  proceso sería  un programa en ejecución. es algo más que las líneas de código de un

programa. Un proceso es algo  dinámico.

 

Concurrencia

Dos procesos serán concurrentes  cuando  la primera  instrucción  de uno de ellos  se ejecuta después de la primera instrucción del otro y antes de  la última,  no tienen q ejecutarse  exactamente al mismo  tiempo , simplemente  es suficiente con el hecho  de que  exista un intercalado  entre  la ejecución  de sus  instrucciones. Si se ejecutan al mismo tiempo  los dos procesos entonces es “Programacion Paralela”

 

Beneficios

Exixten bastantes motivos  por los  que la programación concurrente es útil la cual uno de  sus beneficios en los cuales mencionaremos 2 de  ellos que son:  VELOCIDAD DE EJECUCION            y  SOLUCION DE  PROBLEMAS  DE NATURALEZA CONRURRENTE.

 

Concurrencia y  arquitecturas  hardware

 

 En cuestión  de   hardware  en los cuales  se ejecutaran  nuestros procesos concurrentes,  que seria obvio pensar que   si dos  procesos van a ejecutarse  de forma concurrente vamos  a necesitar dos procesadores, uno para cada  proceso. Pero no  es así dependerá  aunque no exclusivamente del hardware, disponible y su topología.

Entonces  nos referimos a lo que  es  el numero de procesadores  en el sistema, asi  hacemos una distinción entre los sistemas  donde solo  hay  UN SOLO  PROCESADOR que  son los  “sistemas  monoprocesador”, y aquellos que hay  MAS DE UN PROCESADOR  que es  un  “ Sistema Multiprocesador” en los cuales   en  AMBOS  es  posible tener concurrencia.

 

 

Sistemas monoprocesador

Aquí   todos los procesos pueden estar ejecutándose al mismo  tiempo  sobre el procesador, solo uno de  ello podrá estar  haciéndolo, aunque  la sensación que le da al usurario es  estar  ejecutándose  al mismo tiempo, esto es  debido a que el Sistema Operativo va  alternando el tiempo de procesador entre los distintos procesos. Ala forma de   gestionar los procesos en un sistema monoprocesador  recibe el nombre de  “multiprogramación” q es otro de los beneficios de  la programación  concurrente un mejor aprovechamiento del procesador.

 

Sistemas  multiprocesador

Es aquel  en el que existen  mas de un procesador, esto permite  que exista paralelismo real entre los procesadores. Dentro de este sistema hay una clasificación como lo son:

                *Sistemas Fuertemente acoplados; Donde los  procesadores como otros dispositivos están conectados a un bus que permite que  todos los  procesadores puedan COMPARTIR la misma MEMORIA,  donde  puede ocurrir que cada procesador tenga  su misma memoria local, pero la sincronización y comunicación entre procesos se hará  mediante variables situadas en  la memoria compartida.

                *Sistemas Débilmente acoplados;  Aquí  no existe  una memoria compartida por los procesadores, cada procesador contiene su propia memoria local y esta conectado con otros procesadores mediante algún tipo de enlace de  comunicación. Un tipo de  especial de  estos  sistemas  lo constituyen los sistemas distribuidos, que  están  formados por un conjunto de nodos distribuidos  geográficamente y conectados de alguna forma. Donde  estos  nodos pueden ser a su vez  mono o multiprocesador.

 

Se le denomina “Multiproceso” a la  gestión  de  varios procesos dentro de un sistema multiprocesador ne la que cada procesador  puede  acceder a una memoria común y  “Procesamiento Distribuido” a la gestión de  varios  procesos en  procesadores, cada uno  con  su memoria local.

 

 

Condiciones de Bernstein

A. J. Bernstein  definió  unas condiciones   para determinar  si dos conjuntos  de instrucciones  pueden ejecutar concurrentemente, esto  surge ya que  no todas las partes de  un programa pueden  ejecutarse de  forma concurrente. En la cual  se define:

*conjunto de lectura   (Sn)={a1,a2,…,an}  en el cual son valores referenciados.

*conjunto de escritura (Sn)={b1,b2,…,bn} en el cual los valores son  actualizados durante  la ejecución de  las instrucciones en  Sn.

 

Para que dos  conjuntos de instrucciones  se puedan ejecutar concurrentemente, se tiene que cumplir que:

1.    L( Si )    E( Sj )  =

2.   E( Si )  L( Sj )  =

3.   E (Si )    E( Sj )  =

Donde  L(S)  pretencece al conjunto de lectura y  E (S )   pertenece al conjunto de lectura

Grafos de presencia

Es una manera de  especificar la ejecución concurrente  instrucciones que  son:

                *una  notación grafica

                *basada en lo que suelen  utilizar diversos lenguajes de programación el  par  cobegin/ coend.

 

Se les muestra un ejercicio  donde se les muestra como  se  utilizar este método.

 

Problema 1:

Usando las condiciones de Bernstein, construir el grafo de precedencia del siguiente trozo de código.

S1: cuad= x*x;

S2;    m1= a* cuad;

S3     m2= b * x;

S4:       z= m1 + m2;

S5:       y=  z + c;

 

SOLUCION:

1.       L( Si )    E( Sj )  =

2.       E( Si )  L( Sj )  =

3.       E (Si )    E( Sj )  =

 

L(S1) = { x }       E(S1) = {cuad}

L(S2) = {a, cuad}               E(S2) = {m1}

L(S3)  = {b, x}      E(S3) = { m2 }

L(S4) = { m1,m2}             E(S4) = { z }

L(S5) = {z, c}       E(S5) = { y }

Aplicando las condiciones:

Entre s1 y s2;                                                    Entre s1 y s3;

1.       L(S1 )    E(S2 )  =                         1. L(S1)     E(S3 )  =

2.       E(S1 )  L(S2 )  =    cuad ≠              2. E(S1)  L(S3)    =

3.        E (S1 )    E(S2)  =                              3. E(S1)    E(S3)   =

 

Entre s1 y s4;                                                       Entre s1 y s5;

1.         L(S1)    E(S4)  =                            1. L(S1)   E(S5)  =   

2.         E(S1)  L(S4)  =                              2. E(S1)  L(S5)  =

3.         E (S1) E(S4)  =                               3. E(S1)  E(S5)  =

 

Entre s2 y s3;                                                     Entre  s2 y s4;

1.       L(S2)    E(S3) =                           1. L(S2)   E(S4) =    

2.       E(S2)  L(S3)  =                           2. E(S2)   L(S4)  = {m1} ≠

3.       E(S2) E(S3)  =                             3. E(S2)  E(S4)  =

 

 

Entre s2 y s5;                                                         Entre s3 y s4;

1.       L(S2)    E(S5)  =                           1. L(S3)   E(S4)  =   

2.       E(S2)  L(S5)  =                          2. E(S3)   L(S4)  = {m2} ≠

3.       E (S2) E(S5)  =                          3. E(S3)   E(S4)  =

 

Entre s3 y s5;                                                          Entre s4 y s5;

1.       L(S3)    E(S5)  =                         1. L(S4)    E(S5)  =   

2.       E(S3)  L(S5)  =                         2. E(S4)   L(S5)  =  { z }≠

3.       E (S3) E(S5)  =                           3. E(S4)   E(S5)  =