• Tidak ada hasil yang ditemukan

Distributed Preservation of Dual Constraints

Dalam dokumen Doctor of Philosophy (Halaman 126-130)

5.5 Proof of Correctness

5.5.1 Distributed Preservation of Dual Constraints

During the execution of the D-PCST algorithm whenever an active component Ca merges with an inactive component Ci then only the dual variableyCa is updated and yCi remains the same. In this case the preservation of dual packing constraints is obvious since yCa is effected by the value |(Ca)| only which is computed by the component yCa itself. Similar argument holds whenever an active component decides to deactivate itself. However, there is a more involvement of how a sleeping component computes the values of its dual variables whenever it receives a connect or proceed request from a neighboring component and still preserves dual packing constraints in distributed way. Towards this we prove the following lemma.

Lemma 5.5.8. If CS(C) =sleeping and it receives ahconnect(v,W(C0),dv)iorhproceed(dv)i over an edge e from a node v ∈C0 where C0 is a neighboring component of C then both C and C0 correctly compute their local variables without violating any of the dual packing constraints.

Proof. Since CS(C) =sleeping, C is a single node component. Let it be {u}. Ifu receives hconnect(v,W(C0),dv)i from a node v ∈C0 over the edge e then first C becomes active and then u initializes each of its local variablesdu and W(C) to dv. W(C) =dv indicates

Proof of Correctness

that the implicit variableyC is temporarily initialized todv. After thatu computes(C) as follows:

e =we−du −dv

2

2(C) =TP(C)−W(C) = pu−W(C)

and (C) = min(e, 2(C)). Now there are four possible cases we discuss below. For each case, with the help of the local information we show that dual packing constraints are pre- served in distributed way without having the global knowledge of the graph.

Case 1: (C) =e < 0. This condition indicates that the dual edge packing constraint P

A:eδ(A)yA≤we is violated on edge e. More specifically dual variables yC and yC0 are excessively increased by |(C)|=|(C0)|. To ensure that the dual edge packing constraint remains tight whileC andC0 merge, the excess value|(C)|must be deducted from each of the dual variablesyC and yC0. The implicit variablesyC andyC0 are updated toyC − |(C)| andyC0 − |(C0)|respectively. Also each nodev ∈C ∪C0 updates its local variablesdv and W(C ∪C0) todv − |(C)|andW(C) +W(C0)−2|(C)|respectively. Case 1 is pictorially shown in Figure 5.1.

Case 2: (C) = e and (C) ≥ 0. This ensures that at most (C) can be added to both the dual variables yC and yC0 without violating the dual edge packing constraint P

A:eδ(A)yA≤we for edgee. Therefore the componentsC and C0 merge through the edge eand form a bigger componentC ∪C0. Each nodev ∈C ∪C0updates its local variablesdv

and W(C ∪C0) to dv +(C) and W(C) +W(C0) +2(C) respectively. Also the implicit variablesyC and yC0 are updated toyC +(C) and yC0 +(C0) respectively. Note that here (C) =(C0). Case 2 is pictorially shown in Figure5.2.

Case 3: (C) =2(C) and(C)<0. In this case the dual variableyC for the componentC is excessively increased by|(C)|and this indicates that the dualpenalty packingconstraint P

AC yA≤P

vC pv is violated atC. Therefore yC =yC − |2(C)| and it ensures that the dual penalty packing constraint for the component C is not violated and becomes tight.

Node u ∈C updates its local variables du and W(C) to du− |(C)| and W(C)− |(C)| respectively. The values of all the variables in C0 remain the same. Case 3 is pictorially shown in Figure 5.3.

v

v2 u

v3

v1

e

C

C yC

yC

dv du

|ǫ(C)| |ǫ(C)|

branchedge

activeor sleepingcomponent

(a)

v

v2 u

v3

v1

e

C

C

yC yC

du

dv

(b)

Figure 5.1: A case of (C) =e < 0. (a) state before merging of components C0 and C . C0 sends a connection request to C (a sleeping component) to merge with it. A lightly dotted circle depicts the current values of some variables corresponding to a component or a sub-component.

The initial values of the dual variables yC and yC0 are du and dv respectively. (b) state after merging. The dual variables yC and yC0 are updated to yC − |(C)| and yC0− |(C0)| respec- tively. Also each node v ∈C∪C0 updates its local variables dv and W(C ∪C0) to dv − |(C)| and W(C) +W(C0)−2|(C)| respectively.

v2 v u

v3

v1

e

C dv

ǫ(C) ǫ(C)

du

yC

yC

C

(a)

v2 v u

v3

v1

C e

C yC

dv du

ǫ(C) ǫ(C) yC

(b)

Figure 5.2: A case of (C0) =(C)≥0. (a) state before merging of components C0 and C . C0 sends a connection request to C to merge with it. The initial values of the dual variables yC and yC0 are du and dv respectively. (b) state after merging. The dual variables yC and yC0 are updated to yC +(C) and yC0 +(C0) respectively. Also each node v ∈C ∪C0 updates its local variables dv and W(C ∪C0) to dv+(C) and W(C) +W(C0) +2(C) respectively.

Proof of Correctness

v2 v u

v3

v1

e

C

du

2(C)|

1(C)|

1(C)|

yC

dv

yC

C p(u)

(a)

v2 v u

v3

v1

C

C yC

du

inactivecomponent dv

yC

e

p(u)

(b)

Figure 5.3: A case of (C) =2(C) ≤ 0. (a) state before the deactivation of components C . C0 sends a connection request to C to merge with it. The initial values of the dual variables yC and yC0 are equal to the values of du and dv respectively. (b) state after deactivation. The dual variables yC is updated to yC − |(C)|, and yC0 and dv remain the same. Also du is updated to du =du− |(C)|.

Case 4 : (C) = 2(C)≥0. This indicates that at most (C) can be added to the dual variable yC in component C without violating the dual penalty packing constraint P

AC yA≤P

vC pv. The nodeu ∈C updates its local variablesduandW(C) todu +(C) andW(C) +(C) respectively. The values of all the variables inC0 remain the same. This case is pictorially shown in Figure 5.4.

Therefore whenever an active component C0 sends a connect request to a sleeping com- ponentC then both C0 and C correctly compute their local variables in a distributed way without violating any of the dual packing constraints.

Similarly if a node ureceiveshproceed(dv)i from a nodev ∈C0 over an edge ethen first C ={u}becomes active and thenuinitializes each of its local variables du andW(C) todv. Note that if a component receives ahproceedithen byProperty 1 the state of each component in its neighborhood is eithersleeping orinactive. This implies that CS(C0) =inactive. Let e0 ∈δ(C) be the MEOE ofC which connects to a node w ∈Cp 6=C. Consideringdw =du,

v2 v u v3

v1

C

yC

du ǫ1(C)

ǫ2(C) ǫ1(C)

dv yC

C e

p(u)

(a)

v2 v u

v3

v1

C

du

yC

ǫ2(C)

C dv

yC

e

p(u)

(b)

Figure 5.4: A case of (C) =2(C)≥0. (a) state before the deactivation of components C . C0 sends a connection request to C to merge with it. The initial values of the dual variables yC and yC0 are du and dv respectively. (b) state after the deactivation. yC is updated to yC +2(C), and yC0 and dv remain the same. Also du is updated to du =du+2(C).

C computes its (C) as follows:

1(C) = (w

e0dudw

2 , if CS(Cp) =sleeping we0 −du −dw, if CS(Cp) =inactive 2(C) = TP(C)−W(C) =pu −W(C)

and (C) = min(1(C), 2(C)). Now following the same way as we have shown for the case of receiving hconnecti, it can be shown that upon receivinghproceed(dv)i, C correctly computes each of its local variables without violating any of the dual packing constraints.

Dalam dokumen Doctor of Philosophy (Halaman 126-130)