Anda di halaman 1dari 3

ACUSE DE RECIBO

VARIABLES Y MENSAJES Cada procesos Pi cuenta con las variables siguientes: wjk v1, vi pred d entero; id_proc; id_porc; costo arista entre vj y vk identificadores proceso inicial y actual identificador predecesor proceso

entero; longitud ms corta entre v1 y vi (inicializado en ) entero; nmero mensajes que se han enviado y no se ha recibido un acuse de recibo

num

Se tienen dos tipos de mensajes: [s,x]: s es la distancia entre v1 y vi, y x es el penltimo vrtice de la cadena de procesos entre v1 y vi. [ack]: proceso pj enva un ack a pi en respuesta a un mensaje [s,x] INICIALIZACIN d:=0; pred:= indefinido; enviar [w1k, p1] a (todos los sucesores de p1) fin-inicializacin recepcin_mensaje [s,pi] si (s < 0) <ciclo negativo> sino enviar [ack] a pi fin-recepcin_mensaje recepcin_mensaje [ack] num:=num-1; si (num = 0) entonces

<ciclo negativo> fsi fin-recepcin_mensaje recepcin_mensaje [ack] del proceso pk num:=num+1; si (num = 0) entonces enviar [ack] a pred; fsi fin-recepcion_mensaje inicializacin_procesos pj (j 1) /* No se ha recibido ningn mensaje, no hay mensajes de ack */

d=

pred = indefinido; num=0; fin inicializacin_procesos recepcin_mensaje [s,pi] si (s < d) entonces: si (num > 0) entonces enviar [ ack ] a pred; pred:=pi; d:=s; enviar [d+wjk, pj] a (todos sucesores de pj) num:=num+ (numero sucesores de pj) si (num = 0) entonces enviar [ack] a pred;

sino /* mensaje no representa una mejora */ enviar [ack] a pred; fin-recepcion_mensaje ejemplo

p1

p2

p3

p4

p5

p6

Anda mungkin juga menyukai