A Primal-Dual based Distributed Approximation Algorithm for Prize Collecting Steiner Tree

10/19/2017 ∙ by Parikshit Saikia, et al. ∙ ERNET India 0

Constructing a steiner tree of a graph is a fundamental problem in many applications. Prize collecting steiner tree (PCST) is a special variant of the steiner tree problem and has applications in network design, content distribution etc. There are a few centralized approximation algorithms DB_MG_DS_DW_1993, GW_1995, AA_MB_MH_2011 for solving the PCST problem. However no distributed algorithm is known that solves the PCST problem with non-trivial approximation factor. In this work we present a distributed algorithm that constructs a prize collecting steiner tree for a given connected undirected graph with non-negative weight for each edge and non-negative prize value for each node. Initially each node knows its own prize value and weight of each incident edge. Our algorithm is based on primal-dual method and it achieves an approximation factor of (2 - 1/n - 1) of the optimal. The total number of messages required by our distributed algorithm to construct the PCST for a graph with |V| nodes and |E| edges is O(|V|^2 + |E||V|). The algorithm is spontaneously initiated at a special node called the root node and when the algorithm terminates each node knows whether it is in the prize part or in the steiner tree of the PCST.



There are no comments yet.


page 1

page 2

page 3

page 4

This week in AI

Get the week's most popular data science and artificial intelligence research sent straight to your inbox every Saturday.

1 Introduction

The Minimum Spanning Tree (MST) problem is a fundamental problem in graph theory and network design. Given a connected graph and a weight function , the goal of the MST problem is to find a subgraph of connecting all vertices of such that is minimized. There are many centralized [35, 40] and distributed algorithms [23, 21] for MST construction. Steiner Tree (ST) problem is a generalization of the MST problem. The definition of ST is as follows: given a connected graph and a weight function , and a set of vertices , known as the set of terminals, the goal of the ST problem is to find a subgraph of such that is minimized subject to the condition that .

Both MST and ST problems have many applications in VLSI layout design [39], communication networks [20], transportation networks [37] etc. It is known that the MST problem can be solved in polynomial time, however the ST problem is NP-hard [31]. Therefore many polynomial time approximation algorithms have been proposed for the ST problem [3, 12, 42, 38, 43] with various approximation ratios and complexities. Byrka et al. [14] proposed a polynomial time approximation algorithm for the ST problem for a general graph which has the best known approximation factor of , for . It is a centralized algorithm that uses the technique of iterative randomized rounding of LPs. It is also known that the ST problem for general graphs cannot be solved in polynomial time with an approximation factor [18]. There are many variations of the ST problem such as Directed Steiner Tree [49, 1, 17, 47], Metric Steiner Tree [44, 38], Euclidean Steiner Tree [7], Rectilinear Steiner Tree [26, 29, 3, 12, 38], Steiner Forest [2, 36, 25, 48] and so on. Hauptman and Karpinaski [28] provide a website with continuously updated state of the art results for many variants of the problem. Out of the many variants, we focus on a generalization of the ST problem called “Prize-Collecting Steiner Tree problem”.

Definition 1.1 (Prize-Collecting Steiner Tree (PCST) problem)

Given a connected weighted graph where is the set of vertices, is the set of edges, is a non-negative prize function and is a non-negative weight function, the goal is to find a tree where and that minimizes the following function:

A feasible solution to the PCST problem has two parts namely Steiner and Penalty. A node is in the Steiner part if it is covered by , otherwise it belongs to the Penalty part. This problem has applications in situations where various demand points (nodes) need to form a structure with minimum total connection cost. Each demand point has some non-negative prize associated with it. If some of the demand points are too expensive to connect then it might be better not to include them in the structure and instead lose their prize—or, equivalently, pay a penalty, equal or proportional to their prize value. The goal is to minimize the overall cost, considered as the sum of connection costs plus lost prizes. Note that the Steiner Tree problem is in fact a special case of PCST, where we set the prize of terminals to and the prize of all other nodes to ; therefore the PCST problem is NP-hard.


The PCST problem has many practical applications in network design (e.g. rail-road networks, optical fibre networks), content distribution networks (video on demand, streaming multicast) etc. For example, suppose a company wants to build an optical fibre network to provide broadband internet service to various customers. Here the graph might correspond to a street map, since optical fibre is typically laid along the streets. In this case street segments can be considered as the set of edges, and street intersections and street endpoints as the set of vertices (aka potential customer locations). The cost of the edges are the installation costs of the cables. The prize associated with the vertex representing a customer is an estimate of revenue obtained by connecting the customer to the network. Vertices corresponding to the intersections other than the customers have zero prize. An optimal design of this network needs to take care of two objectives,

(i) connect to a set of customers that maximizes the profit and (ii) connection cost is minimum. To achieve this, some customers may be excluded from the structure as they may incur more connection cost. For such customers, the company pays a penalty which is proportional to the prize of the node. Therefore, the overall goal is to decide a subset of customers that should be connected so that the sum of the connection cost and the total penalty (for not connecting some customers) is minimized. This situation can be modelled as the PCST problem. Note that PCST equivalently captures the case where prizes are payments by customers and the objective is to maximize the company’s net profit (payments minus connection cost). Similarly many other practical problems in protein-protein interaction network [19], leakage detection system [41] etc. can be modelled as cases of the PCST problem.

Problems such as Minimum Spanning Tree [23, 21], Steiner Tree [24, 34, 11, 16], Steiner Forest [32, 36] etc. have been widely studied in the distributed setting. However, such a study has not been done so far for PCST (the only attempt seems to be a manuscript [45]), despite the potential applicability of the problem. In particular, distributed algorithms for PCST would be necessary for solving the problem in distributed ad hoc networks, where nodes may have very limited knowledge of the network.

Our contribution. In this work we propose a deterministic distributed algorithm for constructing a PCST for a given graph with the set of vertices with their prizes and the set of edges with their weights. Our algorithm is an adaptation of the centralized algorithm proposed by Goemans and Williamson (GW-algorithm) [25] to distributed setting. In distributed setting each node is a computing entity and can communicate with its neighbors only. Each node locally decides whether it belongs to the Steiner part or to the Penalty part. The distributed algorithm, we propose, uses primal-dual technique to construct a PCST with an approximation factor of (where ) which is same as that of the Goemans and Williamson’s algorithm [25]. Also it incurs message and time complexity. Moreover, the worst case time complexity can be fine tuned to where is the diameter of the network. Our algorithm uses a novel idea of preserving dual constraints in a distributed way in order to achieve the desired approximation factor. We believe that this technique can prove useful in other tree problems which can be solved using primal-dual method. The main challenge here is to satisfy the dual constraints using local information instead of global information. To this end we use a careful merging and deactivation of connected components so that each component always satisfy its dual constraints.

One can design a naive distributed algorithm for the PCST problem by ‘black-box’ use of the GW-algorithm (see Subsubsection 5.2.1, also [45]). Compared to such a naive algorithm D-PCST has slightly larger worst-case complexity, vs. . However, the time complexity of the naive distributed algorithm is dictated by the complexity of GW-algorithm, hence it holds irrespective of whether the input graph is sparse or dense. On the other hand, for sparse graphs () our algorithm requires time in the worst case (and even better for small diameter sparse graphs) which is a clear improvement compared to the naive approach. Moreover our algorithm, being genuinely distributed, can be adapted to the dynamic setting (node or link additions or deletions) with very low incremental complexity while the naive algorithm would have to run from scratch. Finally, we expect that our techniques can find further applications in obtaining distributed versions of primal-dual based algorithms for tree problems in graphs.

Paper organization. Section 2 contains the works related to the PCST problem. In section 3

, we introduce the formulation of the PCST problem using integer programming (IP) and linear programming (LP). High level description of our distributed PCST (D-PCST) algorithm as well as an illustrating example are given in Section 

4. The detailed proof of correctness of our distributed PCST algorithm is given in section 5. Section 6 contains brief discussion and open questions. The description of the centralized PCST algorithm proposed by Goemans and Williamson [25] and the pseudo-code of D-PCST are provided in the appendix.

2 Related Work

The first centralized approximation algorithm for PCST was given by Bienstock et al. [13] in 1993, although a related problem named prize collecting travelling salesman problem (PCTSP) was introduced earlier by Balas [9]. Bienstock et al. achieved an approximation factor of 3 by using linear programming (LP) relaxation technique. Two years later, based on the work of Agrawal, Klein and Ravi [2], Goemans and Williamson [25] proposed a primal-dual algorithm using the LP relaxation which runs in time. The algorithm proposed by Goemans and Williamson consists of two phases namely growth phase and pruning phase and yields a solution of approximation factor of the optimal. This algorithm is often denoted as GW-algorithm.

Johnson et al. [30] proposed an improved version of the GW-algorithm maintaining the same approximation factor as of the GW-algorithm. The improvement is achieved by enhancing the pruning phase of GW-algorithm which is termed as strong pruning. Johnson et al. also presented a review of different PCST related problems. They modified the growth phase of the GW-algorithm so that it works without a root node.

However, the result of Johnson et al. [30] was shown to be incorrect by Feofiloff, Fernandes, Ferreira, and De Pina [22]. They proved it by a counter example where the algorithm proposed by Johnson et al. returns an approximation factor of 2 instead of . They introduced a new algorithm for the PCST problem based on the GW-algorithm having a different LP formulation. They achieved a solution of approximation factor for the unrooted version of the PCST whose running time is . Archer et al. [6] provided a -approximation () algorithm for the PCST problem. Specifically the approximation ratio of this algorithm for PCST is below 1.9672. They achieved this by using the improved Steiner Tree algorithm of Byrka et al. [14] as a black box in their algorithm.

The “quota” version of the PCST problem was studied by Haouari et al. [27] in which the goal is to find a subtree that includes the root node and has a total prize not smaller than the specified quota, while minimizing the cost of the PCST. A polynomial time algorithm for PCST was given by Miranda et al. [4] for a special network called 2-tree where prizes (node weights) and edge weights belong to a given interval. This result is based on the work of Wald and Colbourn [46] who proved that Steiner Tree problem is polynomial time solvable on 2-tree. An algorithm for Robust Prize-Collecting Steiner Tree problem was proposed by Miranda et al. [5]. There are other approaches to solve the PCST problem. Canuto et al. [15] gave a multi-start local search based algorithm for the PCST problem. Klau et al. [33]

provided an evolutionary algorithm for the PCST problem. All of these are centralized algorithms for the PCST problem.

The MST and ST problems have been extensively studied in both centralized and distributed setting. Galleger, Humblet, and Spira [23] presented the first distributed algorithm for MST problem with message complexity and time complexity . Later Faloutsos et al. [21] presented a distributed algorithm for MST with message and time complexity and respectively. Similarly, in the recent years, many distributed algorithms have been proposed for ST and related problems [24, 34, 11, 16, 32, 36]

. The first heuristic based distributed algorithm for the ST problem in an asynchronous network was proposed by Chen et al.

[24] with the approximation ratio of the optimal, where is the number of leaves in the optimal ST. It has message complexity and time complexity where is the set of terminal nodes. Chalermsook et al. [16] presented a 2-approximation distributed algorithm for the ST problem with time complexity on synchronous networks. Similarly, there exist distributed algorithms for other variants of the ST problems. The first distributed algorithm for Steiner Forest (SF) problem with approximation factor was presented by Khan et al. [32]. Recently Lenzen et al. [36] proposed a distributed algorithm for constructing a SF in congest model with an approximation factor of for and time complexity of where is the shortest path diameter, is the number of terminals, and is the number of terminal components in the input.

To the best of our knowledge our algorithm is the first distributed algorithm for PCST with a constant approximation ratio. Regarding distributed PCST we were able to find only one manuscript in the literature, by Rossetti [45], where two algorithms were proposed: The first one is based on MST heuristic and fails to guarantee any constant approximation ratio. The second is a straightforward implementation where GW-algorithm is used as a ‘black-box’ (similar to the naive approach discussed in Subsubsection 5.2.1); as mentioned in [45] that algorithm is in essence centralized and of very limited practical value.

3 Model and problem formulation

We model the distributed PCST problem on a connected network as a graph , where vertex set and edge set represent the set of nodes and the set of communication links of the network respectively. Each edge has a non-negative cost denoted by . Each vertex has an unique identification number and a non-negative prize value denoted by . We assume that each node in the network knows its own prize value and cost of each of its incident links. Each node performs the same local algorithm and communicates and coordinates their actions with their neighbors by passing messages only. We consider that communication links are reliable and messages are delivered in FIFO order. A message sent by a sender is eventually received by a receiver. However no upper bound of message delay is assumed. A special node of the network designated as root () initiates the algorithm. In this work we assume that nodes and links do not fail.

The PCST problem can be formulated as the following integer program (IP).

For each edge there is a variable that takes a value in . Here denotes the set of edges having exactly one endpoint in and . For every possible , there is a variable that takes values from . A tree rooted at the root node corresponds to the following integral solution of the IP: for each , and all other variables are zero. The first integral constraint says that a subset of nodes () is connected to if there exists at least one such that or it is not connected to if (), for all and . The second integral constraint of the IP implies that there can be at most one such such that for which . Note that we can set since every feasible tree is required to include the root node .

Since finding the exact solution of an IP is NP-hard and LP (linear programming) is polynomial time solvable, therefore we generally go for its LP-relaxation and find an approximate solution for the problem. Note that dropping of the constraint from LP-relaxation does not affect the optimal solution, therefore we exclude it from the LP-relaxation. The corresponding LP-relaxation is as follows:

The above LP-relaxation has two types of basic variables namely and and exponential number of constraints. If it is converted into its dual then there will be one type of basic variables and two types of constraints. Also by weak LP-duality every feasible solution to the dual LP gives a lower bound on the optimal value of the primal LP. The dual of the above LP-relaxation is as follows:

Here the variable corresponds to the primal constraint . The dual objective function indicates that for each , the variable can be increased as much as possible without violating the two dual constraints and . The constraint is known as edge packing constraint which is corresponding to the primal variable . It says that for each such that , can be increased as much as possible until the edge packing constraint becomes tight, i.e. . This equality implies the case where the primal variable for the corresponding edge , and is added to the forest being constructed. The value contributes to the primal objective value of the PCST. The dual constraint is known as penalty packing constraints which is corresponding to the primal variable of the LP relaxation. For each such that , can be increased as much as possible until the penalty packing constraint becomes tight i.e. . Any positive value of can be considered feasible provided it does not lead to the violation of any of the two dual packing constraints. If we set for each then it gives a trivial feasible solution to the dual LP since it satisfies both the packing constraints. The dual LP is feasible at its origin ( for each ), whereas primal LP is not feasible at its origin ( for each and for each ).

4 Description of the D-PCST algorithm

Terminology. A set of nodes connected by a set of edges is termed as component. Each component has a state which can be , or . At node , the state of an incident edge is denoted as . The value of can be , , or . At node the state of an edge is if is selected as a candidate branch edge for the Steiner tree of the PCST. Any edge inside a component (between two nodes ) which is not a is stated as . If node receives a message on then . An edge which is neither nor nor has the state named . Each component has a leader node which coordinates all the activities inside the component. Each node locally knows the current state of its component , denoted as . Each component has a weight denoted by which is known to each . Each node has a value denoted by . The constraint always holds for any edge . In addition, the following symbols and terms are used in the description of our algorithm.

  • denotes the set of edges incident on .

  • is a value calculated for an edge .

  • .

  • .

  • .

  • . We use to denote the highest deficit value of a component .

  • MOE (minimum outgoing edge) is the edge that gives the .

  • A component is called a neighboring component of a component if .

  • denotes the message . Here are the arguments of message . Note that unless it is necessary arguments of will not be shown in it.

Input and output specification. Initially each node knows its own prize value , unique identity, and weight of each edge . Before the start of the algorithm, for all . If then . Also each node initially sets its local boolean variable and for each . When the D-PCST algorithm terminates, each node knows whether it is in the Penalty part or in the Steiner part. A node belongs to the Penalty part if its local variable is set to . Otherwise it belongs to the Steiner part. In addition, if a node belongs to the Steiner part then at least one must be assigned as a edge. So the pair at each node clearly defines the distributed output of the algorithm. Here . If then . Otherwise for each , .

Basic principle. Our algorithm consists of two phases namely growth phase and pruning phase. At the beginning of the algorithm each component comprises of a single node. Initially each component except the root component (containing the special node , the root) is in state. The initial state of the root component is . The root node initiates the algorithm. At any instant of time the algorithm maintains a set of components. The growth phase performs the following operations until all components in the network become .

  1. Merging: merging of two distinct neighbouring components and .

  2. Deactivation: an active component becomes inactive.

  3. Proceed: an inactive component sends to a neighboring component .

  4. Back: an inactive component sends to an inactive neighboring component .

Whenever all components in the network become inactive, the growth phase terminates and the pruning phase starts. The pruning phase prunes a component or subcomponent from the structure constructed in the growth phase if such a pruning enhances the PCST.

Growth phase. Initially, and at each node (). At any point of time only one component calculates its . The leader of computes using message passing. Depending on the value of , the leader of proceeds with any one of the following actions.

  1. If then it may decide to merge with one of its neighboring component or it may decide to become inactive.

  2. If then it asks one of its neighboring components, say , to proceed further. The choice of depends on the value computed at . Note that an inactive component never computes and its is equal to .

To compute , the leader of broadcasts using the tree rooted at the leader (set of branch edges inside a component forms a tree rooted at the leader) asking each frontier node to finds its . A node is called a frontier node if it has at least one edge . Upon receiving , each frontier node calculates for each edge . Note that if an edge satisfies the condition then the state of the edge at node is either or . Let be a neighboring component of such that , , , and . Now calculates as follows.

  1. and : in this case .

  2. and : in this case .

  3. and : in this case . Here the state of the component is and therefore the deficit value of the node is considered to be equal to .

  4. and : in this case . Similar to the previous case the deficit value is equal to .

  5. and : in this case the value of for an edge calculated by depends on the state of the edge . If then . Otherwise, .

Note the following cases.

  • Whenever an inactive component is in the state of computing its then there cannot exist any component in the neighborhood of such that .

  • A component never computes its (or ) while it is in the state.

Following these conditions a frontier node calculates the value of for each of its incident or edge and is locally selected for reporting to the leader of . In this way each frontier node locally calculates and reports it to the leader using convergecast technique over the tree rooted at the leader of the component. During the convergecast process each node sends its which contains to its parent node using its incident branch edge of the tree. In this process overall survives and eventually reaches the leader node of . Also during the convergecast each node reports the total prize value of all the nodes in the subtree rooted at . Therefore, eventually the total prize of the component () is also known to the leader. If then the leader of calculates .

The leader of now computes . If then decides to deactivate itself. This indicates that the dual penalty packing constraint becomes tight for the component . On the other hand, if then it indicates that for component the dual edge packing constraint becomes tight for one of the edges such that , where is neighboring component of . In this case the leader of sends a to a frontier node which resulted the . Upon receiving the node sends over the MOE to to merge with it. Whenever a node receives on an edge then depending on the state of following actions are taken.

  1. : in this case the node sends to . This confirms the merging of two components and .

  2. : in this case it is obvious that is a single node component . The state of becomes and each of its local variables , and is initialized to (received in the ). After that the leader of the component ( itself) computes for edge and . If then the component sends to the component which confirms the merging of two components and . On the other hand if then decides to deactivate itself and sends to the component .

Whenever a node receives in response to a on an edge then the state of its local variable becomes . The node also reports the to the leader of . Upon receiving the leader node of proceeds to calculate its once again.

Whenever a component decides to merge or deactivate (only an active component can decide to deactivate itself) then each node increases each of and by , and is also updated. Note that for each component there is an implicit dual variable which we want to maximize subject to the dual constraints. Whenever the local variables of a component are updated by , is also implicitly updated.

If two components and decide to merge through an edge then the dual edge packing constraint becomes tight for the edge . Both nodes and set their local variables for edge . The weight of the resulting component is the sum of the weights of and , i.e. . If contains the root node then it becomes (root component is always ) and remains the leader of the new component . In addition, whenever a component merges with the root component then each sets its local variable and there exists at least one edge such that . This indicates that each node contributes to the Steiner part of the PCST. On the other hand if none of the merging components or is the root component then the resulting component becomes . In this case the node with the higher ID between the two adjacent nodes of the merging edge becomes the new leader of and for each node the boolean variable remains .

In case of deactivation of a component , each node sets its . Whenever an active component becomes inactive and there exists no active component in its neighborhood then the leader of may decide to send or to one of its neighboring component . For this, first of all the leader of computes its . Note that in this state of the network there cannot exist any component in the neighborhood of such that . The inactive component finds its only. The value of may be some finite real number or . If has at least one neighboring component such that or if for each neighboring component of and then the value of is guaranteed to be a finite real number. Otherwise the value of . If corresponding to the edge is a finite real number then the component sends to the component through edge . Upon receiving , the component starts computing its for taking further actions. If the value of then the leader of the component sends to a neighboring component from which it received in some early stages of the algorithm. Note that there may be more than one pending on a component but a node has only one pending at a time. In this case the leader of sends to the frontier node which received the earliest . A frontier node remember the time at which it receives a by using a local variable . It is clear that the number of generated by an component depends on the number of pending . Eventually when the leader of the root component finds then all components in the whole network become . This ensures the termination of the growth phase. After the termination of the growth phase, the root node initiates the pruning phase.

Pruning phase. In this phase following operations are performed.

  • Each node , where is a non-root inactive component, sets for each edge if .

  • In the root component , pruning starts in parallel at each leaf node of the Steiner tree rooted at the root node and repeatedly applied at every leaf node at any stage as long as the following two conditions hold.

    1. at node .

    2. There exists exactly one edge such that .

    Each pruned node sets its local variables , , and for each edge such that . Note that once a node changes the value of from to for an edge then the node also does the same. Finally for each of the non-pruned nodes , and there exists at least one edge such that .

4.1 An Example

In this subsection we illustrate the working principle of our proposed D-PCST algorithm with an example. Due to space constraints, we illustrate only the major operations.

Figure 1 illustrates the merging of two components. Each node has a prize value that is labelled just outside the node. For example, the prize of node is . Similarly each edge is labelled with an weight. Figure 1(a) shows the graph before the merging of two neighboring components which is in state and which is in state. The MOE of the component is which gives . The leader node also computes . Hence . So sends over the MOE to merge with . Now becomes and finds and is the MOE. Therefore it decides to merge with . The new active component is shown in Figure 1(b). The rectangular box below the graph shows the value of local variables and for each .

Figure 2 shows the deactivation of an active component . In Figure 2(a) the leader of finds that its MOE is which gives . also computes its which is equal to . Since , therefore the component deactivates itself. Each node of sets its local boolean variable . The graph after the deactivation of is shown in Figure 2(b).

Figure 3 shows the action of proceed operation performed by an inactive component . In Figure 3(a), the MOE of is which gives . The component sends (denoted by in the figure) over its MOE to the component . Upon receiving , the component becomes and initializes its local variables and to . Since , sends a connection request to which is shown in Figure 3(b).

Figure 4 shows the case of pruning operation performed in each component of the graph. In Figure 4(a), inside each of the non-root inactive components the state of each edge changes to . In the root component , nodes and are pruned. The component was deactivated at some early stage of the growth phase of the algorithm. At the local variable is set to and is set to . Similarly the node and its corresponding adjacent edges are also pruned from the root component. The Figure 4(b) shows the state of the graph after the pruning phase which is the final solution to the PCST.

Figure 1: A case of merging operation. (a) state before merging of components and . (b) state after merging.
Figure 2: A case of deactivation. (a) state before the deactivation of the active component . (b) state after the deactivation .
Figure 3: A case of proceed operation. (a) state of sending by the inactive component . (b) state after the component receives .
Figure 4: A case of pruning phase. (a) state before pruning. (b) state after pruning phase which is the final solution to the PCST. The pruned components are and .

5 Proof of Correctness

5.1 Termination

A round of in a component means the time from the beginning of the execution of till the completion of finding . By an action of an event we mean the start of event .

Lemma 5.1

A round of generates at most messages.

Proof.  In our D-PCST algorithm in each round of , the following messages are possibly generated: , , , , , , , , , , , and . Since maximum number of edges in a component is at most , therefore at most number of messages are exchanged for each kind of , , , and in each round of . Similarly in each round of , at most number of are sent and in response at most number of ( or ) messages are generated. The and the are exchanged in between the leaders of two different components. Therefore, for of each kind of and in the worst case at most number of messages are communicated in each round of . For each , either an or a is generated. Therefore in each round of , at most any two of the combinations of , , are generated. Therefore number of messages exchanged in each round of is at most .

Lemma 5.2

If the leader of an component finds then for each neighboring component of , .

Proof.  Suppose by contradiction the leader of finds and there exists a neighboring component of such that . Therefore either or . Since it is given that the leader of the component is in a state of finding its , and therefore Claim 5.5 ensures that for each neighboring component of .

Consider the case of . To find the leader starts the procedure which in turn sends on each of its edges in the component . Upon receiving each node forwards it on its outbound edges and if is a frontier node then it also sends on each edge if state of is neither nor