Distributed Algorithms (Winter 1997-8)
(Topics for Projects)
Find an idea here or look in recent conferences
(
PODC97,
WDAG 97
and ICDCS 97) to find recent starting points.
Then search the collected
bibliographies
or the
Hypertext Bibliography
Project to find related papers.
Here are some specifc ideas:
- The model of distributed computation presented by Java.
Java (and its extensions) support at least synchronization issues,
which are interesting from a theoretical viewpoint.
Two possible points for investigation are:
- What is the power of synchrnization operations in Java.
Can they solve wait-free consensus? Are they universal?
To learn about the theoretical background you can start with
Herlihy's "Universality" paper.
- What constraints are satisfied by shared memory accesses?
The learn about the theoretical background you can start with
Attiya and Welch.
- There are many algorithms for managing causal and total multicast,
most of them in the context of group membership. Study simplified
versions of these algorithms in the case groups are static, specify
their properties and prove their correctness, also analyze their
complexity.
- Kramer's DAG algorithm.
- Yair Amir's Totem algorithm.
What happens when there are failures of various types?
- There are several definitions of virtual synchrony
(start for example with [Fekete, Lynch and Shvartsman, PODC 97]).
State them all (precisely) in a single framework, show relationships
between them (in the form of reductions, separations, etc.),
and/or study their "power".
- An operational proof for the fast mutual exclusion algorithm
(Lamport) and its extensions (Yang and Anderson).
- Other stuff on synchronization structures.
- Read [Attiya and Dagan, PODC 96], [Afek, Merritt, Taubenfeld and
Touitou, PODC 97], and
- Present resource allocation and algorithms for sensitive
implementations of objects
- Also prove relations between the definitions.
- Can these works be extended using Afek, Dauber and Touitou.
- Extend the proof of 2-set consensus to general k (with f=n-1).
- Extend the algorithm from Chapter 5 to general number of
simulating processors (use snapshots).
- Complete the details for the iterated immediate snapshots simulation
of read and write [Borowski and Gafni, PODC 97].
- Byzantine quorum systems [Malkhi, Reiter and Wool, PODC 97],
[Bazzi, PODC 97], and [Malkhi, Reiter and Wright, PODC 97].
- The consensus hierarchy classifies objects according to their
ability to solve consensus ([Ruppert, PODC 97],
[Lo and Hadzilacos, PODC 97]).
-
Self-stabilization.
-
Check pointing.
See also [Alvisi and Marzullo, PODC 96].
- Failure detectors.
- Routing.
See also [Gavoille and Perennes, PODC 96].
- Algorithms for mutual exclusion that take into consideration
the architeture [Mellor-Crummey and Scott].
- Clock synchronization is an important topic.
Start with [Patt-Shamir and Rajsbaum, STOC 94] and either:
- find more fault-tolerant algorithms; or
- extend to internal clock synchronization (perhaps not
optimal); or
- show a modular use of approximate agreement;
prove bounds on the number of messages or the distance of
communication, or the length of dependency chains.
- specialize the algorithms for specific interesting graphs
(regular? compact?).