* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Distributed Algorithms
		                    
		                    
								Survey							
                            
		                
		                
                            
                            
								Document related concepts							
                        
                        
                    
						
						
							Transcript						
					
					Distributed Algorithms
Broadcast and spanning tree
Model
Node Information:
 Adjacent links
 Neighboring nodes.
 Unique identity.
Graph model: undirected graph.
 Nodes V
 Edges E
 Diameter D
Model Definition
Synchronous Model:
There is a global clock.
Packet can be sent only at clock ticks.
Packet sent at time t is received by t+1.
Asynchronous model:
Packet sent is eventually received.
Complexity Measures
Message complexity:
Number of messages sent (worst case).
Usually assume “small messages”.
Time complexity
Synchronous Model: number of clock ticks
Asynchronous Model:
• Assign delay to each message in (0,1].
• Worse case over possible delays
Problems
Broadcast - Single initiator:
 The initiator has an information.
 At the end of the protocol all nodes receive the information
 Example : Topology update.
Spanning Tree:
 Single/Many initiators.
 On termination there is a spanning tree.
BFS tree:
 A minimum distance tree with respect to the originator.
Basic Flooding: Algorithm
Initiator:
Initially send a packet p(info) to all neighbors.
Every node:
When receiving a packet p(info):
• Sends a packet p(info) to all neighbors.
Basic Flooding: Example
Basic Flooding: Correctness
Correctness Proof:
By induction on the distance d from initiator.
• Basis d=0 trivial.
Induction step:
• Consider a node v at distance d.
• Its neighbor u of distance d-1 received the info.
• Therefore u sends a packet p(info) to all neighbors
(including v).
• Eventually v receives p(info).
Basic Flooding: Complexity
Time Complexity
Synchronous (and asynchronous):
• Node at distance d receives the info by time d.
Message complexity:
There is no termination!
Message complexity is unbounded!
How can we correct this?
Basic Flooding: Improved
Each node v has a bit sent[v], initially
sent[v]=FALSE.
Initiator:
 Initially: Send packet p(info) to all neighbors and set
sent[initiator]=TRUE.
Every node v:
 When receiving a packet p(info) from u:
• IF sent[v]=FALSE THEN
Send packet p(info) to all neighbors.
Basic Flooding: Improved
Message Complexity:
Each node sends once on each edge!
Number of messages equals to 2|E|.
Time complexity:
Diameter D.
Drawbacks
Termination detection
Spanning tree
Goal:
At the end of the protocol have a spanning tree
Motivation for building spanning tree:
Construction costs O(|E|).
Broadcast on tree: only |V|-1 messages.
Spanning tree: Algorithm
Data Structure:
Add to each node v a variable father[v].
Initially: father[v] = null.
Each node v:
When receiving packet p(info) from u and
father[v]= null
 THEN Set father [v]=u.
Spanning Tree : Example
Spanning tree Algorithm: Correctness
Correctness Proof:
Every node v (except the initiator) sets
father[v].
There are no cycles.
Is it a shortest path tree?
Synchronous
Asynchronous
Flood with Termination
Motivation: Inform Initiator of termination.
Initiator:
 Initially: Send packet p(info) to all neighbors and set
set[initiator]=True
Non-Initiator node w:
 When receiving a packet p(info) from u:
• IF sent[w]=FALSE
– THEN father[w]=u; send packet p(info) to all neighbors (except u).
– ELSE Send Ack to u.
 After receiving Ack from all neighbors except father[w]:
• Send Ack to father[w].
Flood with Termination: Correctness
Tree Construction: Proof as before.
Termination:
 By induction on the distance from the leaves of the tree.
 Basis d=0 (v is a leaf).
• Receives immediately Ack on all packets (except father[v]).
• Sends Ack packet to father[v].
 Induction step:
• All nodes at distance d-1 received and sent Ack.
• Nodes at distance d will eventually receive Ack,
• and eventually will send Ack.
DFS Tree
Data Structure in node v:
Edge-status[v,u] for each neighbor u.
 Possible values are {NEW,SENT, Done}.
• Initially status[v,u]=NEW.
Node-status[v].
 Possible Values {New, Visited, Terminated}
• Initially: Node-Status[v]=NEW (except the Initiator which
have Node-Status[initiator]=Visited).
 Parent[v]: Initially Parent[v]=Null
Packets type:
 Token : traversing edges.
DFS: Algorithm
Token arrives at a node v from u:
 Node_Status[v]=Visited & Edge_Status[v,u]=NEW
• Edge_Status[v,u]=Done; Send token to u.
 Node_Status[v]=Visited & Edge_Status[v,u]=Sent
• Edge_Status[v,u]=Done.
• (*) IF for some w: Edge_Status[v,w]=New THEN
– Edge_Status[v,w]=Sent; Send token to w.
– ELSE Node_Status=Terminated; send token to parent[v].
• [If v is the initiator then DFS terminates]
 Node_Status[v]=New
• Parent[v]=u; Node_Status[v]=Visited; Edge_Status[u,v]=Sent
• [Same as Node_Status[v]=Visited from (*)]
DFS : Example
DFS Tree: Performance
Correctness:
There is only one packet in transit at any time.
On each edge one packet is sent in each direction.
The parent relationship creates a DFS tree.
Complexity:
Messages: 2|E|
Time: 2|E|
How can we improve the time to O(|V|).
Spanning Tree: BFS
Synchronous model: have seen.
Asynchronous model:
Distributed Bellman-Ford
Distributed Dijkstra
BFS: Bellman-Ford
 Data structure:
 Each node v has a variable level[v].
 Initially level[initiator]=0 at the initiator
and level[v]= at any other node v.
 Variable parent, initialized at every node v to
parent[v] = null.
 Packet types:
 layer(d) : there is a path of length at most d
to the initiator.
BFS: Bellman-Ford Algorithm
Initiator:
Send packet layer(0) to all neighbors.
Every node v:
When receiving packet layer(d) from w
IF d+1 < level[v] THEN
• Parent[v]=w
• Level[v]=d+1
• Send layer(d+1) to all neighbors (except w).
BFS: Bellman-Ford Correctness
Correctness Proof:
 Termination: Each node u updates level[u] at most |V|
times.
 Relationship parent creates a tree
 After termination: if parent[u]=w then
level[u]=level[w]+1 [BSF Tree]
Complexity
 Time: O(Diameter)
 Messages: O(Diameter*|E|)
BFS: Bellman-Ford Example
Bellman Ford: Multiple initiators
Set distance (id-initiator,d).
Use Lexicographic ordering.
Each node can change level at most
Number of initiators * |V|
At most |V|2
BSF: Dijkstra Illustrated
1
k
k+1
BFS: Dijkstra
Asynchronous model:
Advance one level at a time.
Go back to root after adding each level.
Time = O( D2 )
 Messages = O( |E| + D * |V| )
• D=Diameter
BFS: Dijkstra
Data Structures:
 Father[v]: the identity of the father of v.
 Child[v,u]: u is a child of v in the tree.
 Up[v,u]: u is closer to the initiator than v.
Packets
 Pulse
 forward
 Father
 Ack.
BFS: Dijkstra
In phase k:
 Initiator sends a packet Pulse to its children.
 Every node of the tree that receives a packet Pulse sends
a packet Pulse to its children.
 Every leaf v of the tree:
• Sends a packet forward to all neighbors w s.t.
up[v,w]=FALSE.
• When receiving packet father[u] from u set child[v,u]=TRUE.
• When receiving either Ack or father[w] from all neighbors w
with up[v,w]=FALSE: send Ack to father[v].
 Every internal node v that receives Ack from all its
children send Ack to its father father[v].
BFS: Dijkstra
A node u that receives a forward packet
(from v):
First forward packet:
• Sets father[u]=v
• Sends father[u] to node v.
second (or more) forward packet:
• Send Ack to v.
BFS: Dijkstra
End of phase k:
Initiator receives Ack from all its children.
Initiator start phase k+1.
Termination:
If no new node is reached in last phase.
BFS: Dijkstra
Correctness:
Induction on the phases
Asynchronous model.
Time = O( D2 )
 Messages = O( |E| + D * |V| )
D=Diameter
Conclusion
Broadcast:
Flooding
Flooding with termination
Spanning tree
Unstructured spanning tree (using flooding)
DFS Tree
BFS Tree
					 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
									 
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                             
                                            