Skip to content

Implementation of Asynchronous Bellman–Ford Algorithm in the field of Distributed Algorithms

License

Notifications You must be signed in to change notification settings

lsmgeb89/asynch_bellman_ford

Repository files navigation

Summary

Project Information

Full Requirements

Part One: Simulator

  • You will develop a simple simulator that simulates an asynchronous distributed system using multithreading.
  • There are n + 1 processes in this asynchronous distributed system: one master process and n slave processes. Each process will be simulated by one thread.
  • The master thread will "inform" all slave threads as when one round starts.
  • You should view duration of one round as one "time unit" ticks in this asynchronous distributed system.
  • Each slave threads must wait for the master thread for a "go ahead" signal before it can begin round r.
  • The master thread can give the signal to start round r only if it is sure that all the n slave threads have completed their previous round r - 1.
  • The message transimission time for each link for each message is to be randomly chosen using a uniform distribution in the range 1 to 15 "time units".
  • All links are bidirectional and FIFO. (FIFO: If I send two messages m1 and then m2 to you, then you receive m1 first and then m2.)

Part Two: Bellman–Ford

  • You will implement the asynchronous Bellman–Ford algorithm for shortest paths.
  • The nodes (processes) and links operate in such a way that message processing time at a node is in one system "time unit" viewed as instantaneous.
  • As soon as a message is received, it is processed by that node.
  • Your program will read in the network infomation by using adjacency-like matrix from an input file called connectivity.txt:
    1. The first line is n,x: n is number of nodes and they are labeled as 1..n and x (<= n) is the id of the root aka (i0) of the shortest paths tree.
    2. The remaining is adjacency-like matrix denoted as M indicating connectivity infomation.
    3. Specifically, M[i][j] shows the weight of link between node i and j. A weight of -1 signifies no link.
  • The master thread reads connectivity.txt and then spawns n threads.
  • No process knows the value of n. No slave threads knows who is i0.
  • All processes must terminate properly after shortest path is found.

About

Implementation of Asynchronous Bellman–Ford Algorithm in the field of Distributed Algorithms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published