Great Deal! Get Instant \$10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

# Q1. In either Java or Python, implement a distributed algorithm for finding the maximum number between nodes. - Nodes generate a random 64-bit number at start up, and must form a consensus about the...

Q1. In either Java or Python, implement a distributed algorithm for finding the maximum number between nodes.

- Nodes generate a random 64-bit number at start up, and must form a consensus about the maximum number across all nodes.
- Each node should be modeled as a thread (so pick a programming language that has threads).
- Nodes can only communicate with each other using message passing (so pick a programming language with channels, or model message passing using FIFO queues).
- Nodes can only communicate with 1/10th of the other nodes (you can decide how to configure them).
- Nodes should print out the maximum number when they have it. Each node can only print once. Not all nodes need to print the correct number, but the more, the better.
- The program should be a command-line tool, that accepts the number of nodes as an argument.

Focus on an implementation that achieves consensus consistently. Remember to check all concurrent data access for data-races.
Answered Same Day May 19, 2020

## Solution

Abr Writing answered on May 21 2020
# Importing necessary packages
import random # For generating a random 64-bit number using: random.getrandbits(64)
import sys
class Node():
def __init__(self, node):
# Storing the name of the node
self.name = node
# Storing the nodes idea about the node with maximum numbe
self.max = node
# Storing the value of node that is known to have the maximum value
self.num = random.getrandbits(64)
# The list of all the nodes about which the node have idea
self.checkedList = list()
# The list of all the nodes with which the node have communicated
self.communicatedList = list()

# Changing the node's idea about node with maximum value
def changeMax(self, node):
self.max = node.max
self.num = node.num