80 likes | 279 Views
Minimum Spanning Tree. Kevin Schaffer. Chapter 15.5 from “Distributed Algorithms” by Nancy A. Lynch. GHS. Named for Gallager, Humblet, and Spira Synchronous version is SynchGHS Components are combined into larger components through minimum-weight outgoing edges (MWOEs)
E N D
Minimum Spanning Tree Kevin Schaffer Chapter 15.5 from “Distributed Algorithms” by Nancy A. Lynch
GHS • Named for Gallager, Humblet, and Spira • Synchronous version is SynchGHS • Components are combined into larger components through minimum-weight outgoing edges (MWOEs) • Assuming all weights to be unique ensures a unique MST • Combining is done in levels; at level k all components have at least 2k nodes
Difficulties in GHS • Processes i and j might be in the same component but not realize it since process j might not have received notification • Components might be combined in an unbalanced way leading to a O(n2) message complexity • Possible interference from components at different levels
How GHS Works • Processes in a component work together to find the MWOE • Once found, the component and the one attached to it across the MWOE combine into a new component • Every component has a level, but levels are not synchronized • Initially components are individual nodes with level 0 • Process continues until there is one component
Combining Components • Components C and C’ can combine in one of two ways • Merge: If level(C) = level(C’) and C and C’ share a common MWOE then they form a new component whose level is level(C) + 1 • Absorb: If level(C) < level(C’) and the MWOE of C connects to a node in C’ then C is added to C’ • Ensures that components do not become unbalanced if some lag behind
Messages in GHS • initiate: Starts the process to find an MWOE and carries the component identifier • report: Convergecast MWOE information • test, accept, reject: Test whether neighbors belong to the same component • changeroot, connect: Combine components
Complexity of GHS • Message complexity: O(n log n + |E|) • test messages that lead to rejection and reject messages: O(|E|) • All other messages: O(n log n) • Time complexity: O(n log n(l + d))
SimpleMST • Works more like SynchGHS • Processes wait until all their neighbors are at the same level before continuing • Much simpler than GHS • Higher message complexity: O(|E| log n) • Same time complexity