Local Algorithms: Past, Present, Future

Summary

On 26–27 April 2011, I gave a tutorial on local algorithms at the MITACS Workshop on Wireless Networks and Mobile Computing at Carleton University. The tutorial consisted of two parts:

Abstract

A local algorithm is a distributed algorithm that runs in constant time, independently of the size of the network. Being highly scalable and fault-tolerant, such algorithms are ideal in the operation of large-scale distributed systems such as computer networks.

Even though the model of local algorithms is very limited, in recent years we have seen many positive results for non-trivial problems. In this tutorial, I will give an overview of the state-of-the-art in the field of local algorithms. I will present examples of recent advances in the field, and I will explore the current frontiers and fundamental open questions.

Slides

Outline

Background

Past

Bad news:

Three traditional escapes:

  1. Randomised local algorithms
  2. Local algorithms for geometric graphs
  3. Almost local algorithms

Present

Problems that do not require symmetry-breaking in cycles:

  1. Linear programming (LPs)
  2. Vertex covers
  3. Edge dominating sets

Future

New directions:

  1. Local algorithms for symmetry-breaking problems
  2. Nondeterministic models

Colour Reduction Example

In this example, the graph is a path. Each row represents a node and each column represents a time step. In each time step, the new colour of a node v is a function of the old colour of v and the old colour of v's predecessor (below v in the illustration).

Here the initial colouring consisted of 16-bit unique identifiers. That is, we had a colour space with 65536 possible colours (numbered 0, 1, …, 65535). After one round, we have 2 log 65536 = 2 × 16 = 32 colours, and after two rounds we have only 2 log 32 = 2 × 5 = 10 colours left.

In decimal:

Initial colouring 1st round 2nd round 3rd round
156831711
31391600
74912352
5443333
135731791
1029160
133482512
92522231
3108000
157151711
9315160
752325
3427

In binary:

Initial colouring 1st round 2nd round 3rd round
11110101000011(8, 1)=10001(0, 1)=1(0, 1)=1
110001000011(8, 0)=10000(0, 0)=0(0, 0)=0
1110101000011(11, 1)=10111(2, 1)=101(1, 0)=10
1010101000011(1, 1)=11(1, 1)=11(1, 1)=11
11010100000101(8, 1)=10001(4, 1)=1001(0, 1)=1
10000000101(0, 1)=1(3, 0)=110(0, 0)=0
11010000100100(12, 1)=11001(0, 1)=1(1, 0)=10
10010000100100(11, 0)=10110(1, 1)=11(0, 1)=1
110000100100(0, 0)=0(0, 0)=0(0, 0)=0
11110101100011(8, 1)=10001(0, 1)=1(0, 1)=1
10010001100011(8, 0)=10000(0, 0)=0
1110101100011(12, 1)=11001
110101100011

Further Reading