On the distributed complexity of computing maximal matching Michal Hanckowiak, Michal Karonski, Allesandro Panconesi Presented by Maya Levy January 2016 Maximal Matching The model Undirected graph- vertices correspond to processors, edges to bidirectional communication links. Synchronous – in each round every processor receives messages from its neighbors, does any amount of calculations and sends messages to its neighbors. Each node has an integer from 1 to 𝑛 as a unique identifier and it knows it. Time complexity is determined by the number of rounds. The approach Definitions Definitions Definitions 𝐺𝑖𝑣𝑒𝑛 𝑎 𝑔𝑟𝑎𝑝ℎ 𝐺 = 𝑉, 𝐸 , 𝑀 ⊆ 𝐸 , 𝑒 ∈ 𝐸 : 𝑡𝑜𝑢𝑐ℎ 𝑀 𝑖𝑠 𝑎 𝑢𝑛𝑖𝑜𝑛 𝑜𝑓 𝑀 𝑎𝑛𝑑 𝑡ℎ𝑒 𝑠𝑒𝑡 𝑜𝑓 𝑒𝑑𝑔𝑒𝑠 "𝑡𝑜𝑢𝑐ℎ𝑒𝑑" 𝑏𝑦 𝑀 𝑤𝐺 𝑒 𝑖𝑠 𝑡ℎ𝑒 𝑛𝑢𝑚𝑏𝑒𝑟 𝑜𝑓 𝑒𝑑𝑔𝑒𝑠 "𝑡𝑜𝑢𝑐ℎ𝑒𝑑" 𝑏𝑦 𝑒 Definitions Match Reduce to bipartite graph BipartiteMatch Generalize the bipartite matching Reducing to bipartite graph 2 1 4 3 5 6 7 8 9 A B Reducing to bipartite graph 2 1𝑜𝑢𝑡 1𝑖𝑛 4 3 5 6 7 8 9 A B Reducing to bipartite graph 1𝑜𝑢𝑡 1𝑖𝑛 3 2𝑜𝑢𝑡 2𝑖𝑛 4 5 6 7 8 9 A B Reducing to bipartite graph 1𝑜𝑢𝑡 1𝑖𝑛 2𝑜𝑢𝑡 2𝑖𝑛 4𝑜𝑢𝑡 4𝑖𝑛 6𝑖𝑛 6𝑜𝑢𝑡 3𝑜𝑢𝑡 3𝑖𝑛 5𝑜𝑢𝑡 7𝑜𝑢𝑡 7𝑖𝑛 5𝑖𝑛 8𝑖𝑛 8𝑜𝑢𝑡 9𝑖𝑛 9𝑜𝑢𝑡 𝐴𝑖𝑛 𝐵𝑜𝑢𝑡 𝐴𝑜𝑢𝑡 𝐵𝑖𝑛 Reducing to bipartite graph 1𝑜𝑢𝑡 1𝑖𝑛 2𝑜𝑢𝑡 2𝑖𝑛 4𝑜𝑢𝑡 4𝑖𝑛 6𝑖𝑛 6𝑜𝑢𝑡 3𝑜𝑢𝑡 3𝑖𝑛 5𝑜𝑢𝑡 7𝑜𝑢𝑡 7𝑖𝑛 5𝑖𝑛 8𝑖𝑛 8𝑜𝑢𝑡 9𝑖𝑛 9𝑜𝑢𝑡 𝐴𝑖𝑛 𝐵𝑜𝑢𝑡 𝐴𝑜𝑢𝑡 𝐵𝑖𝑛 Reducing to bipartite graph 1𝑖𝑛 1𝑜𝑢𝑡 2𝑖𝑛 2𝑜𝑢𝑡 3𝑖𝑛 3𝑜𝑢𝑡 4𝑖𝑛 4𝑜𝑢𝑡 5𝑖𝑛 6𝑖𝑛 7𝑖𝑛 8𝑖𝑛 9𝑖𝑛 𝐴𝑖𝑛 𝐵𝑖𝑛 5𝑜𝑢𝑡 2 1 4 3 5 6 7 8 9 A B 6𝑜𝑢𝑡 7𝑜𝑢𝑡 8𝑜𝑢𝑡 9𝑜𝑢𝑡 𝐴𝑜𝑢𝑡 𝐵𝑜𝑢𝑡 Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Reducing to bipartite graph Match Reduce to bipartite graph by splitting to in and out vertices BipartiteMatch Generalize the bipartite matching: - Remove degree 1 vertices - calculate maximal matching of degree 2 graph - Drop matched edges - Choose which edges to keep 𝑂(log 𝑛 ⋅ 𝑡(𝐵𝑖𝑝𝑎𝑟𝑡𝑖𝑡𝑒𝑀𝑎𝑡𝑐ℎ)) Matching a bipartite graph 𝐺 = (𝐿, 𝑅, 𝐸) Matching a bipartite graph 𝐺 = (𝐿, 𝑅, 𝐸) 𝑯𝒍𝒐𝒈𝒏 𝐻𝑖 = 𝑢 ∈ 𝐿: 𝑯𝟎 𝑛 2𝑖+1 𝑛 <𝑑 𝑢 ≤ 𝑖 2 Matching a bipartite graph 𝐺 = (𝐿, 𝑅, 𝐸) 𝑯𝒍𝒐𝒈𝒏 𝐻𝑖 = 𝑢 ∈ 𝐿: 𝑛 2𝑖+1 𝑛 <𝑑 𝑢 ≤ 𝑖 2 𝐵𝑖 𝑖𝑠 𝑡ℎ𝑒 𝑏𝑙𝑜𝑐𝑘 𝑖𝑛𝑑𝑢𝑐𝑒𝑑 𝑏𝑦 𝐻𝑖 𝑒𝑑𝑔𝑒𝑠 𝑯𝟎 Matching a bipartite graph 𝐺 = (𝐿, 𝑅, 𝐸) 𝐻𝑖 = 𝑢 ∈ 𝐿: 𝑛 2𝑖+1 𝑛 <𝑑 𝑢 ≤ 𝑖 2 𝐵𝑖 𝑖𝑠 𝑡ℎ𝑒 𝑏𝑙𝑜𝑐𝑘 𝑖𝑛𝑑𝑢𝑐𝑒𝑑 𝑏𝑦 𝐻𝑖 𝑒𝑑𝑔𝑒𝑠 Matching a bipartite graph 𝐺 = (𝐿, 𝑅, 𝐸) 𝐻𝑖 = 𝑢 ∈ 𝐿: 𝑛 2𝑖+1 𝑛 <𝑑 𝑢 ≤ 𝑖 2 𝐵𝑖 𝑖𝑠 𝑡ℎ𝑒 𝑏𝑙𝑜𝑐𝑘 𝑖𝑛𝑑𝑢𝑐𝑒𝑑 𝑏𝑦 𝐻𝑖 𝑒𝑑𝑔𝑒𝑠 BipartiteMatch Generate blocks Partition MatchBlock 1 MatchBlock 2 . . . MatchBlock D Global match Matching a bipartite graph Matching a bipartite graph Matching a bipartite graph Matching a bipartite graph 𝑤𝑘 𝑤3 𝑤2 𝑘 𝑖=2 𝑤𝑖 2 𝑤1 ≤ 𝑤1 Matching a bipartite graph BipartiteMatch Generate blocks Partition MatchBlock 1 MatchBlock 2 . . . MatchBlock D Global match 𝑂(𝑡 𝑀𝑎𝑡𝑐ℎ𝐵𝑙𝑜𝑐𝑘(𝑛) ) Matching a block Matching a block Matching a block Matching a block Spanner 𝑩 (𝐵𝑙𝑜𝑐𝑘) Spanner 𝑩 (𝐵𝑙𝑜𝑐𝑘) 𝑺 (Spanner) Spanner 𝐴𝑛 𝒂, 𝒅 − 𝒔𝒑𝒂𝒏𝒏𝒆𝒓 𝑜𝑓 𝑎 𝑏𝑙𝑜𝑐𝑘 𝐵 = 𝐻𝑖 , 𝑁 𝐻𝑖 , 𝐸 𝑖𝑠 𝑎 𝑠𝑢𝑏𝑔𝑟𝑎𝑝ℎ 𝑆 ⊆ 𝐵 𝑠. 𝑡: • 𝑓𝑜𝑟 𝑒𝑣𝑒𝑟𝑦 𝑢 ∈ 𝑙 𝑆 , 𝑑𝑆 𝑢 ∈ 1, 𝑑 • 𝑓𝑜𝑟 𝑒𝑣𝑒𝑟𝑦 𝑢 ∈ 𝑟, 1 𝑑𝑆 𝑢 ≤ 𝑘 𝐵 𝑑𝐵 𝑣 + 1, 2 𝑤ℎ𝑒𝑟𝑒 𝑘 𝐵 ≔ 𝑙𝑜𝑔𝐷 − 4 • 𝑙 𝑆 ≥ 𝑎 𝐻𝑖 𝑩 (𝐵𝑙𝑜𝑐𝑘) 𝑺 (Spanner) Spanner 𝑩 (𝐵𝑙𝑜𝑐𝑘) 𝑺 (Spanner) 𝑷 (Proposal) Spanner 𝑩 (𝐵𝑙𝑜𝑐𝑘) 𝑺 (Spanner) 𝑷 (Proposal) 𝑴 (Matching) Matching a block – correctness 𝒗∈𝒓(𝑷) 𝒅𝑩 𝑩 𝑺 𝒗 ≥𝒃𝑬 𝑩 ? 𝑷 𝑴 Matching a block – correctness |𝒍 𝑴 | = 𝑙 𝑃 − (𝑑𝑃 𝑣 − 1) 𝑣∈𝑟(𝑃) ≥ 𝑎|𝑙 𝐵 | − (𝑑𝑃 𝑣 − 1) 𝑣∈𝑟(𝑃) 1 ≥ 𝑎|𝑙 𝐵 | − 𝑣∈𝑟(𝑃) ≥ 𝑎|𝑙 𝐵 | − 2𝑘 𝐵 𝑑𝐵 (𝑣) 1 𝑏𝑚 2𝑘 𝐵 1 ≥ 𝑎|𝑙 𝐵 | − 𝑘 𝐵 𝑏𝐷|𝑙 𝐵 | 2 ≥ (𝒂 − 𝟏𝟔𝒃)|𝒍 𝑩 | 𝑩 𝑺 𝑷 𝑴 Matching a block – correctness 𝒍 𝑴 ≥ 𝒄|𝒍 𝑩 | 𝐷 ∀𝑢 ∈ 𝐿: ≤ 𝑑𝐵 𝑢 ≤ 𝐷 2 𝐷 𝑡𝑜𝑢𝑐ℎ 𝑀 ≥ 𝑙 𝑀 ⋅ 2 ≥ 𝑎 − 16𝑏 𝐷|𝑙 𝐵 | 2 𝑎 − 16𝑏 ≥ |𝐸 𝑏 | 2 𝑩 𝑺 𝑷 𝑴 Match BipartiteMatch MatchBlock Generate blocks Partition Reduce to bipartite graph MatchBlock 1 Create spanner MatchBlock 2 BipartiteMatch Generalize the bipartite matching . . . MatchBlock D Global match Match Spanner Create spanner – 2 decomposition graph 1 2 3 4 5 6 7 8 9 A B C Create spanner – 2 decomposition graph 1 1 2 3 4 5 6 7 8 9 A B C Create spanner – 2 decomposition graph 1 2 1 2 3 4 5 6 7 8 9 A B C Create spanner – long arrows Create spanner – long arrows Create spanner – long arrows Create spanner – long arrows Create spanner – long arrows Create spanner – long arrows Create spanner – long arrows Create spanner Create spanner Create spanner 1 2 3 4 5 6 7 8 9 A B C Create spanner 1 2 3 4 5 6 7 8 9 A B C Create spanner Create 2- decomposition graph Create long arrows and partition to segments Perfect/near perfect match inside the segments Remove matched/bad edges 𝑂(log 𝑛 ⋅ log 2 𝑛) = 𝑂(log 3 𝑛) Match BipartiteMatch MatchBlock Generate blocks Partition Reduce to bipartite graph MatchBlock 1 Create spanner MatchBlock 2 BipartiteMatch Generalize the bipartite matching . . . MatchBlock D Global match Match Spanner
© Copyright 2026 Paperzz