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
Reduce to bipartite graph Match Reduce to bipartite graph BipartiteMatch Generalize the bipartite matching
Reducing to bipartite graph 1 2 3 4 5 6 7 8 9 A B
Reducing to bipartite graph 2 3 1 𝑜𝑢𝑡 1 𝑖𝑛 4 5 6 7 8 9 A B
Reducing to bipartite graph 3 1 𝑜𝑢𝑡 1 𝑖𝑛 2 𝑜𝑢𝑡 2 𝑖𝑛 4 5 6 7 8 9 A B
Reducing to bipartite graph 1 𝑜𝑢𝑡 1 𝑖𝑛 2 𝑜𝑢𝑡 2 𝑖𝑛 3 𝑜𝑢𝑡 3 𝑖𝑛 4 𝑜𝑢𝑡 5 𝑜𝑢𝑡 4 𝑖𝑛 5 𝑖𝑛 7 𝑜𝑢𝑡 8 𝑖𝑛 6 𝑖𝑛 6 𝑜𝑢𝑡 7 𝑖𝑛 8 𝑜𝑢𝑡 9 𝑖𝑛 9 𝑜𝑢𝑡 𝐴 𝑖𝑛 𝐵 𝑜𝑢𝑡 𝐴 𝑜𝑢𝑡 𝐵 𝑖𝑛
Reducing to bipartite graph 1 𝑜𝑢𝑡 1 𝑖𝑛 2 𝑜𝑢𝑡 2 𝑖𝑛 3 𝑜𝑢𝑡 3 𝑖𝑛 4 𝑜𝑢𝑡 5 𝑜𝑢𝑡 4 𝑖𝑛 5 𝑖𝑛 7 𝑜𝑢𝑡 8 𝑖𝑛 6 𝑖𝑛 6 𝑜𝑢𝑡 7 𝑖𝑛 8 𝑜𝑢𝑡 9 𝑖𝑛 9 𝑜𝑢𝑡 𝐴 𝑖𝑛 𝐵 𝑜𝑢𝑡 𝐴 𝑜𝑢𝑡 𝐵 𝑖𝑛
Reducing to bipartite graph 1 𝑖𝑛 1 𝑜𝑢𝑡 2 𝑖𝑛 2 𝑜𝑢𝑡 1 2 3 3 𝑖𝑛 3 𝑜𝑢𝑡 4 𝑖𝑛 4 5 4 𝑜𝑢𝑡 5 𝑖𝑛 5 𝑜𝑢𝑡 6 7 8 6 𝑖𝑛 6 𝑜𝑢𝑡 7 𝑖𝑛 7 𝑜𝑢𝑡 9 A B 8 𝑖𝑛 8 𝑜𝑢𝑡 9 𝑖𝑛 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
𝑂( log 𝑛 ⋅𝑡(𝐵𝑖𝑝𝑎𝑟𝑡𝑖𝑡𝑒𝑀𝑎𝑡𝑐ℎ)) 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 𝑖 𝐵 𝑖 𝑖𝑠 𝑡ℎ𝑒 𝑏𝑙𝑜𝑐𝑘 𝑖𝑛𝑑𝑢𝑐𝑒𝑑 𝑏𝑦 𝐻 𝑖 𝑒𝑑𝑔𝑒𝑠
Generate blocks Partition 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 ≤ 𝑤 1 𝑤 2 יש רק שידוך אחד לכל היותר מכל בלוק 𝑤 1
Matching a bipartite graph
Generate blocks Partition 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 2 𝑘 𝐵 𝑑 𝐵 𝑣 +1, 𝑤ℎ𝑒𝑟𝑒 𝑘 𝐵 ≔𝑙𝑜𝑔𝐷−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 Generalize the bipartite matching Reduce to bipartite graph BipartiteMatch BipartiteMatch Generate blocks Partition MatchBlock 1 MatchBlock 2 MatchBlock D . Global match MatchBlock Create spanner Match Spanner
Create spanner – 2 decomposition graph 1 2 3 4 5 6 7 8 A 9 B C
Create spanner – 2 decomposition graph 1 1 2 3 4 5 6 7 8 A 9 B C
Create spanner – 2 decomposition graph 1 2 1 2 2 3 4 5 6 7 8 A 9 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 A 9 B C
Create spanner 1 2 3 4 5 6 7 8 A 9 B C
𝑂( log 𝑛 ⋅ log 2 𝑛) =𝑂( log 3 𝑛) 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 Generalize the bipartite matching Reduce to bipartite graph BipartiteMatch BipartiteMatch Generate blocks Partition MatchBlock 1 MatchBlock 2 MatchBlock D . Global match MatchBlock Create spanner Match Spanner