2.3k likes | 2.44k Vues
This mini-course explores the foundations of locality-sensitive distributed computing, focusing on distributed network algorithms and locality-preserving network representations. It covers key structures like clustered representations, covers, and sparse partitions, and delves into the evaluation criteria for locality and sparsity trade-offs. With a fundamental approach using skeletal representations to optimize the complexity of distributed algorithms, learners will gain insights into the application of these concepts across various scenarios, enhancing computational efficiency in large networks.
E N D
Locality Sensitive Distributed Computing David PelegWeizmann Institute
Structure of mini-course • Basics of distributed network algorithms • Locality-preserving network representations • Constructions and applications
Part 2: Representations • Clustered representations • Basic concepts: clusters, covers, partitions • Sparse covers and partitions • Decompositions and regional matchings • Skeletal representations • Spanning trees and tree covers • Sparse and light weight spanners
Basic idea of locality-sensitive distributed computing • Utilize locality to both • simplify control structures and algorithms and • reduce their costs • Operation performed in large network may concern fewprocessors in small region • (Global operation may have local sub-operations) • Reduce costs by utilizing “locality of reference”
Components of locality theory • General framework, complexity measures and algorithmic methodology • Suitable graph-theoretic structures and efficient construction methods • Adaptation to wide variety of applications
Fundamental approach • Clustered representation: • Impose clustered hierarchical organization on given network • Use it efficiently for bounding complexity of distributed algorithms. • Skeletal representation: • Sparsify given network • Execute applications on remaining skeleton, reducing complexity
Clusters, covers and partitions Cluster = connected subset of vertices S V
Cover of G(V,E,w) = collection of clusters S={S1,...,Sm} containing all vertices of G (i.e., s.t. [S = V). Clusters, covers and partitions
Partial partition of G = collection of disjoint clusters S ={S1,...,Sm}, i.e., s.t. SiÅ Sj= Partition = cover & partial partition Partitions
Evaluation criteria Locality and Sparsity Locality level: cluster radius Sparsity level: vertex / cluster degrees
Evaluation criteria Locality - sparsity tradeoff: • localityand sparsity parameters • go opposite ways: • better sparsity ⇔ worse locality • (and vice versa)
Evaluation criteria Locality measures Weighted distances: Length of path (e1,...,es) = ∑1≤i≤sw(ei) dist(u,w,G) = (weighted) length of shortest path dist(U,W) = min{ dist(u,w) | uU, wW }
Evaluation criteria • Diameter, radius: As before, except weighted • Denote logD = dlog Diam(G)e • For collection of clusters S: • Diam(S) = maxi Diam(Si) • Rad (S) = maxi Rad (Si)
Neighborhoods G(v) = neighborhood of v = set of neighbors in G (including v itself) G(v)
Gl(v) = l-neighborhood of v = vertices at distance l or less from v Neighborhoods G0(v) G1(v) G2(v)
Neighborhood covers For W V: Gsl(W) = l-neighborhood cover of W = { Gl(v) | vW } (collection of l-neighborhoods of W vertices)
Neighborhood covers E.g: Gs0(V) = partition into singleton clusters
Neighborhood covers E.g: Gs1(W) = cover of W nodes by neighborhoods W = colored nodes Gs1(W)
Sparsity measures Different representations Different ways to measure sparsity
deg(v,S) = # occurrences of v in clusters SS i.e., degree of v in hypergraph (V,S) Cover sparsity measure - overlap DC(S) = maximum degree of cover S AvD(S) = average degree of S = ∑vV deg(v,S) / n = ∑SS|S| / n v deg(v) = 3
Intuition: “contract” clusters into super-nodes, look at resulting cluster graph of S, G(S)=(S, E) Partition sparsity measure - adjacency
G(S)=(S, E) : E={(S,S') | S,S‘S, G contains edge (u,v) for u S and v S'} Partition sparsity measure - adjacency E edges =inter-cluster edges
Cluster-neighborhood Def: Given partition S, cluster S S, integer l≥0: Cluster-neighborhood of S = neighborhood of S in cluster graph G(S) Gcl(S,G) = Gl(S,G(S)) Gc(S,G) S
Sparsity measure Average cluster-degree of partition S: AvDc(S) = SSS |Gc(S)| / n Note: AvDc(S) ~# inter-cluster edges
Example: A basic construction Goal: produce a partition S with: 1. clusters of radius ≤ k 2. few inter-cluster edges (or, low AvDc(S)) Algorithm BasicPart Algorithm operates in iterations, each constructing one cluster
Example: A basic construction At end of iteration: - Add resulting cluster S to output collection S - Discard it from V - If V is not empty then start new iteration
Arbitrarily pick a vertex v from V • Grow cluster S around v, adding layer by layer • Vertices added to S are discarded from V Iteration structure
Iteration structure • Layer merging process is carried repeatedly until reaching required sparsity condition: • next iteration increases # vertices by a factor of < n1/k (I.e., |G(S)| < |S| · n1/k)
Analysis • Av-Deg-Partition Thm: • Given n-vertex graph G(V,E), integer k≥1, • Alg. BasicPart creates a partition S satisfying: • Rad(S) ≤ k-1, • # inter-cluster edges in G(S) ≤ n1+1/k • (or, AvDc(S) ≤ n1/k)
Analysis (cont) • Proof: • Correctness: • Every S added to S is (connected) cluster • The generated clusters are disjoint • (Alg erases from V every v added to cluster) • S is a partition (covers all vertices)
Property (2): [E(G(S)) ≤ n1+1/k ] By termination condition of internal loop, the resulting S satisfies |G(S)| ≤ n1/k·|S| (# inter-cluster edges touching S) ≤ n1/k·|S| Number can only decrease in later iterations, if adjacent vertices get merged into same cluster |E| ≤ ∑SS n1/k ·|S| = n1+1/k Analysis (cont)
Property (1): [ Rad(S) ≤ k-1] Consider iteration of main loop. Let J = # times internal loop was executed Let Si= S constructed on i'th internal iteration |Si| > n(i-1)/k for 2≤i≤J (By induction on i) Analysis (cont)
J ≤ k (otherwise, |S| > n) Note:Rad(Si) ≤ i-1 for every 1≤i≤J (S1 is composed of a single vertex, each additional layer increases Rad(Si) by 1) Rad(SJ) ≤ k-1 Analysis (cont)
Sep(S) = Separation of partial partition S = minimal distance between any two S clusters Variant - Separated partial partitions When Sep(S)=s, we say S is s-separated Example: 2-separated partial partition
Cover T={T1,...,Tq}coarsens S ={S1,...,Sp} if S clusters are fully subsumed in T clusters Coarsening S T
r R Coarsening (cont) The radius ratio of the coarsening = Rad(T) / Rad(S) = R / r S T
Coarsening (cont) • Motivation: • Given “useful” S with high overlaps: • Coarsen S by merging some clusters together, getting a coarsening cover T with • larger clusters • better sparsity • increased radii
Goal: For initial cover S, construct coarsening T with low overlaps, paying little in cluster radii Sparse covers Inherent tradeoff: lower overlap higher radius ratio (and vice versa) Simple Goal: Low average degree
Algorithm AvCover • Operates in iterations • Each iteration merges together some S clusters • into one output cluster ZT • At end of iteration: • Add resulting cluster Z to output collection T • Discard merged clusters from S • If S is not empty then start new iteration Sparse covers
Algorithm AvCover – high-level flow Sparse covers
Arbitrarily pick cluster S0 in S(as kernelY of cluster Z constructed next) • Repeatedly merge cluster with intersecting clusters from S(adding one layer at a time) • Clusters added to Z are discarded from S Iteration structure
- Layer merging process is carried repeatedly until reaching required sparsity condition: Iteration structure adding next layer increases # vertices by a factor of ≤ n1/k (|Z| ≤ |Y| · n1/k)
Thm: Given graph G(V,E,w), cover S, int k≥1, • Algorithm AvCover constructs a cover T s.t.: • T coarsens S • Rad(T) ≤ (2k+1) Rad(S) (radius ratio≤ 2k+1) • AvD(T) ≤ n1/k (low average sparsity) Analysis
Analysis (cont) • Corollary for l-neighborhood cover: • Given G(V,E,w), integers k,l≥1, • there exists cover T = Tl,k s.t. • T coarsens the neighborhood cover Gsl(V) • Rad(T) ≤ (2k+1)l • AvD(T) ≤ n1/k
Proof of Thm: Property (1):[TcoarsensS] Holds directly from construction (Each Z added to T is a (connected) cluster, since at the beginning S contained clusters) Analysis (cont)
Claim:The kernelsY corresponding to clusters Z generated by the algorithm are mutually disjoint. Analysis (cont) Proof: By contradiction. Suppose there is a vertex v s.t. v YÅY' W.l.o.g. suppose Y was created before Y' v Y' There is a cluster S' s.t. vS' and S' was still in S when algorithm started constructing Y'.
Analysis (cont) But S' satisfies S'ÅY ≠ ∅ The final merge creating Zfrom Y should have added S' into Zand eliminated it from S; contradiction.
Output clusters and kernels kernels coverT
Property (2): [ Rad(T) ≤ (2k+1)·Rad(S) ] Consider some iteration of main loop (starting with clusterSS) J = # times internal loop was executed. Z0= initial set Z Zi = Z constructed on i'th internal iteration (1≤i≤J) Respectively Zi,Yi Analysis (cont)
Analysis (cont) Note 1: |Zi| > ni/k, for every 1≤i≤J-1, J ≤ k Note 2: Rad(Yi) ≤ (2i-1)Rad(S), for every 1≤i≤J Rad (YJ) ≤ (2k-1)Rad(S)