Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6045111
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T07:05:19+00:00 2026-05-23T07:05:19+00:00

I have read his seminal paper, Self-stabilizing systems in spite of distributed control .

  • 0

I have read his seminal paper, Self-stabilizing systems in spite of distributed control. However, I don’t quite get how the self-stabilizing algorithm works. I am most interested in his, ‘solution’ of k-state machines. The density of the paper is quite intense and I can’t make much sense of it. How does this algorithm work in plain English?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T07:05:19+00:00Added an answer on May 23, 2026 at 7:05 am

    I can try to explain it in plain English…

    First you should have a look at the link Jean-Francois Corbett wrote as a comment.

    Definition

    (from Wikipedia)

    A system is self-stabilizing if and only if:

    • Starting from any state, it is guaranteed that the system will eventually reach a correct state (convergence).
    • Given that the system is in a correct state, it is guaranteed to stay in a correct state, provided that no fault happens (closure).

    Notations

    Same as the one on the seminar paper

    Self Stabilizing system

    In his paper Dijkstra defines a self stabilizing system as follow:

    Consider a circle graph with N+1 nodes. (From 0 to N+1)

    Each node can be in different states.

    Each node can have different privilege. (for example xS = xR can be a privilege)

    At each step if in one node a privilege is present we will apply a certain rule :

    if privilege then "what to do" endif 
    

    Legitimate States

    He defines a legitimate state to be a state with only one privilege present.

    Conclusion

    If you apply the different rules in Dijkstra’s paper for the described system you will get a self-stabilizing system. (cf definition.)

    i.e. from any state with n privilege presents (even with multiple privileges for one node) you will reach in a finite number of states a state with only one privilege present, and stay in legitimate states after this state. And you will be able to reach any legitimate state.

    You can try yourself with a simple example.

    Example for the 4 states solution

    Let’s take only a bottom node and a top node:

    starting point: (upT,xT) = (0,0) and
                    (upB,xB) = (1,0)
    
    state1: (upT,xT) = (0,0) and
            (upB,xB) = (1,1)
        only one privilege present on B => legitimate
    state2: (upT,xT) = (0,1) and
            (upB,xB) = (1,1)
        only one privilege present on T => legitimate
    state3: (upT,xT) = (0,1) and
            (upB,xB) = (1,0)
        only one privilege present on B => legitimate
    state4: (upT,xT) = (0,0) and
            (upB,xB) = (1,0)
        only one privilege present on T => legitimate
    

    and here is a result for 3 nodes: bottom (0) middle (1) top (2): I start with 2 privileges (not legitimate state, then once I get into a legitimate state I stay in it):

    {0: [True, False], 1: [False, False], 2: [False, True]}
    privilege in bottom
    privilege in top
    ================================
    {0: [True, True], 1: [False, False], 2: [False, False]}
    first privilege in middle
    ================================
    {0: [True, True], 1: [True, True], 2: [False, False]}
    privilege in top
    ================================
    {0: [True, True], 1: [True, True], 2: [False, True]}
    second privilege in middle
    ================================
    {0: [True, True], 1: [False, True], 2: [False, True]}
    privilege in bottom
    ================================
    {0: [True, False], 1: [False, True], 2: [False, True]}
    first privilege in middle
    ================================
    {0: [True, False], 1: [True, False], 2: [False, True]}
    privilege in top
    ================================
    {0: [True, False], 1: [True, False], 2: [False, False]}
    second privilege in middle
    ================================
    {0: [True, False], 1: [False, False], 2: [False, False]}
    privilege in bottom
    ... etc
    

    Here is a small Python [<=2.7] code (I am not very good at python so it’s may be ugly) to test the 4 states methods with a system of n nodes, it stops when you find all the legitimate states:

    from copy import deepcopy
    import random
    
    n=int(raw_input("number of elements in the graph:"))-1
    L=[]
    D={}
    D[0]=[True,random.choice([True,False])]
    for i in range(1,n):
        D[i]=[random.choice([True,False]),random.choice([True,False])]
    D[n]=[False,random.choice([True,False])]
    L.append(D)
    
    D1=deepcopy(D)
    
    def nextStep(G):
        N=len(G)-1
        print G
        Temp=deepcopy(G)
        privilege=0
        if G[0][1] == G[1][1] and (not G[1][0]):
            Temp[0][1]=(not Temp[0][1])
            privilege+=1
            print "privilege in bottom"
        if G[N][1] != G[N-1][1]:
            Temp[N][1]=(not Temp[N][1])
            privilege+=1
            print "privilege in top"
        for i in range(1,N):
            if G[i][1] != G[i-1][1]:
                Temp[i][1]=(not Temp[i][1])
                Temp[i][0]=True
                print "first privilege in ", i
                privilege+=1
            if G[i][1] == G[i+1][1] and G[i][0] and (not G[i+1][0]):
                Temp[i][0]=False
                print "second privilege in ", i
                privilege+=1
        print "number of privilege used :", privilege
        print '================================'
        return Temp
    
    D=nextStep(D)
    while(not (D in L) ):
        L.append(D)
        D=nextStep(D)
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have read this question but it's not quite what I was looking for.
I have read Loren's article on drawing your own content for UITableViewCell. However, he
I have read another questions about Home-Button and his detection possibilities. I also know
I have read Marcus Zarra's chapter on multithreading in his Core Data book and
I have read Crockford's JavaScript: The Good Parts and have used his validator JSLint
I have read a paper about machine learning and it contains an Oracle experiment
I have just read the following post on SO; Do you source control your
I have read some posts on here about not mixing parameters when passing into
I have read that you can do it, but would this really improve performance
I have read multiple articles about why singletons are bad. I know it has

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.