On the distributed complexity of computing maximal matching

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