Anonymous Daemon Conversion in Self-stabilizing Algorithms by Randomization in Constant Space W. Goddard, S.T. Hedetniemi, D.P. Jacobs, and Pradip K. Srimani School of Computing, Clemson University, Clemson, SC 29634–0974 Abstract. We propose a generalized scheme that can convert any algo- rithm that self-stabilizes under an unfair central daemon into a random- ized one that self-stabilizes under a distributed daemon, using only con- stant extra space and without IDs. If the original algorithm is anonymous the resulting self-stabilizing algorithm is also anonymous. We provide a detailed complexity analysis that show that the expected slowdown is upper bounded by O(n 3 ). 1 Introduction A self-stabilizing algorithm is a distributed algorithm designed to converge to a desired global system state without any external coordination or global system initialization. Each node participates in the distributed algorithm based on local knowledge: its own state and the states of its immediate neighbors. The goal is to achieve some global objective – a predicate defined on the states of all the nodes in the network – based on local actions where individual nodes have no global knowledge about the network. Self-stabilizing algorithms are robust (fault tolerant) in the optimistic sense that the distributed system may temporarily behave inconsistently but a return to correct system behavior is guranteed in finite time while traditional robust distributed algorithms follow a pessimistic approach in that it protects against the worst possible scenario which demands an assumption of the upper bound on the number of faults. A self-stabilizing algorithm is usually written as a collection of production rules at each node: each rule specifies a condition and an action. The condition is a boolean predicate on the state of the node and the states of its neighbors; the action or move is a change in the state of the node executing the action. A node is privileged at a particular time if the condition of one or more of its rules is satisfied. Note that a node might stop being privileged if a neighbor moves. We work in the shared-variable model in which a node can directly read its neighbors’ variables. We restrict attention to undirected, bidirectional links. All computation by a node is completed in one atomic step. In order to analyze the correctness and time complexity of a self-stabilizing algorithm, a daemon or an execution model(run time environment) is assumed: S. Rao et al. (Eds.): ICDCN 2008, LNCS 4904, pp. 182–190, 2008. c Springer-Verlag Berlin Heidelberg 2008 9 th International Conference on Distributed Computing and Networking, ICDCN 2008, January 5-8, 2008, Calcutta, India, Springer Verlag, Lecture Notes in Computer Science, Volume LNCS 4904, pp. 182-190.