Computing Storyline Visualizations with Few Block Crossings Thomas - - PowerPoint PPT Presentation
Computing Storyline Visualizations with Few Block Crossings Thomas - - PowerPoint PPT Presentation
Computing Storyline Visualizations with Few Block Crossings Thomas C. van Dijk Fabian Lipp Peter Markfelder Alexander Wolff Storyline Visualizations [https://xkcd.com/657/] Storyline Visualizations [https://xkcd.com/657/] Design
Storyline Visualizations
[https://xkcd.com/657/]
Storyline Visualizations
[https://xkcd.com/657/]
Design considerations for storyline drawings:
- Line wiggles
- White space gaps
- Line crossings
[Tanahashi & Ma, TVCG12]
Storyline Visualizations
[https://xkcd.com/657/]
Design considerations for storyline drawings:
- Line wiggles
- White space gaps
- Line crossings
[Tanahashi & Ma, TVCG12]
Related Work: Simple Crossings
Aim: Drawing with a minimum number of crossings
Related Work: Simple Crossings
[Kostitsyna et al., GD’15]
- FPT for #characters
- upper and lower bounds for some cases with pairwise
meetings
- NP-hardness
Aim: Drawing with a minimum number of crossings
Related Work: Simple Crossings
[Kostitsyna et al., GD’15]
- FPT for #characters
- upper and lower bounds for some cases with pairwise
meetings
- NP-hardness
Aim: Drawing with a minimum number of crossings [Gronemann et al., GD’16]
- ILP solving the problem
Related Work: Block Crossings
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Alam, Fink, Pupyrev, GD 2016]
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Alam, Fink, Pupyrev, GD 2016] Our Aim: Drawing with a minimum number of block crossings
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Van Dijk et al., GD 2016]
- Storyline Block Crossing Minimization
– NP-hardness – Approximation algorithm – FPT [Alam, Fink, Pupyrev, GD 2016] Our Aim: Drawing with a minimum number of block crossings
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Van Dijk et al., GD 2016]
- Storyline Block Crossing Minimization
– NP-hardness – Approximation algorithm – FPT [Alam, Fink, Pupyrev, GD 2016] Now: Solve SBCM via a SAT formulation Our Aim: Drawing with a minimum number of block crossings
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Van Dijk et al., GD 2016]
- Storyline Block Crossing Minimization
– NP-hardness – Approximation algorithm – FPT [Alam, Fink, Pupyrev, GD 2016] Now: Solve SBCM via a SAT formulation Our Aim: Drawing with a minimum number of block crossings
Related Work: Block Crossings
- Block crossings for metro lines
[Fink, Pupyrev, Wolff; 2015]
- Bundled Crossings
[Fink et al., LATIN 2016] [Van Dijk et al., GD 2016]
- Storyline Block Crossing Minimization
– NP-hardness – Approximation algorithm – FPT [Alam, Fink, Pupyrev, GD 2016] Now: Solve SBCM via a SAT formulation Our Aim: Drawing with a minimum number of block crossings
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7 begin of meeting end of meeting
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7 birth of character
Events
begin of meeting end of meeting death of character
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
No births and deaths in this talk – but in the paper.
birth of character
Events
begin of meeting end of meeting death of character
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
π
Permutation π supports meetings {2, 3, 4} and {5, 6} Sets {2, 3, 4} and {5, 6} each form a contiguous group in π
=
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
π
Permutation π supports meetings {2, 3, 4} and {5, 6} Sets {2, 3, 4} and {5, 6} each form a contiguous group in π
=
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
π
Permutation π supports meetings {2, 3, 4} and {5, 6}
Find a shortest sequence of permutations such that . . . . . . meetings are supported in the right order . . . adjacent permutations differ by at most one block crossing
Sets {2, 3, 4} and {5, 6} each form a contiguous group in π
=
Problem Definition
Meeting: set of characters, start and end time
1 2 3 4 5 6 7
π
Permutation π supports meetings {2, 3, 4} and {5, 6}
Find a shortest sequence of permutations such that . . . . . . meetings are supported in the right order . . . adjacent permutations differ by at most one block crossing
Sets {2, 3, 4} and {5, 6} each form a contiguous group in π
=
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints)
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints) Each event corresponds to a layer
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints) Each event corresponds to a layer Trees describe neighborship between characters
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints) Each event corresponds to a layer Trees describe neighborship between characters
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints) Each event corresponds to a layer Trees describe neighborship between characters Find a permutation for each layer
Approach of Gronemann et al.
Reduce to MLCM-TC (Multi-Layer Crossing Minimization Problem with Tree Constraints) Each event corresponds to a layer Trees describe neighborship between characters Use ILP to solve MLCM-TC Find a permutation for each layer
Describing Permutations
Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
x1
23 = 1
x1
13 = 1
3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
x1
23 = 1
x1
13 = 1
x1
21 = 0
x1
32 = 0
x1
31 = 0
3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
x1
23 = 1
x1
13 = 1
x1
21 = 0
x1
32 = 0
x1
31 = 0
3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
x1
23 = 1
x1
13 = 1
x1
21 = 0
x1
32 = 0
x1
31 = 0
x2
12 = 1
x2
23 = 0
x2
13 = 0
x2
21 = 0
x2
32 = 1
x2
31 = 1
3 1 2 Variables describing the order in each permutation: xr
ij
characters layer
Describing Permutations
1 2 3 π1 π2 x1
12 = 1
x1
23 = 1
x1
13 = 1
x1
21 = 0
x1
32 = 0
x1
31 = 0
x2
12 = 1
x2
23 = 0
x2
13 = 0
x2
21 = 0
x2
32 = 1
x2
31 = 1
3 1 2 Antisymmetry: xr
ij ⇔ ¬xr ji
Transitivity: xr
ij ∨ xr jk ∨ xr ki
¬xr
ij ∨ ¬xr jk ∨ ¬xr ki
Variables describing the order in each permutation: xr
ij
characters layer
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
)
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
Our approach for block crossings: Allow at most one block crossing between two permutations i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
)
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
Our approach for block crossings: Allow at most one block crossing between two permutations Add more permutations i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
)
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
Our approach for block crossings: Allow at most one block crossing between two permutations Add more permutations i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
)
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
Our approach for block crossings: Allow at most one block crossing between two permutations Add more permutations i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
)
Counting Block Crossings
Easy to count pairwise crossings using xr
ij:
Our approach for block crossings: Allow at most one block crossing between two permutations Add more permutations i and j cross after layer r: χr
ij ⇔ (xr ij = xr+1 ij
) Prescribe maximum number of permutations
Describing Block Crossings
F G H F Blocks G and H cross
Describing Block Crossings
F G H F Blocks G and H cross Constraints: Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are contiguous blocks xr
ij ∧ xr jk ∧ g r i ∧ g r k ⇒ g r j
xr
ij ∧ xr jk ∧ hr i ∧ hr k ⇒ hr j
G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Meeting Groups
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Minimize the Number of Block Crossings
Choose a number of permutations λ and construct the clauses.
Minimize the Number of Block Crossings
Choose a number of permutations λ and construct the clauses. There is a satisfying assignment ⇔ ∃ solution for the SBCM instance using λ permutations.
Minimize the Number of Block Crossings
Choose a number of permutations λ and construct the clauses. O(λ(κ2 + µ)) variables, O(λµ(λ + κ3)) clauses λ: number of permutations κ: number of characters µ: number of meeting groups There is a satisfying assignment ⇔ ∃ solution for the SBCM instance using λ permutations.
Minimize the Number of Block Crossings
Choose a number of permutations λ and construct the clauses. Finding the optimum: Repeatedly run the SAT solver with different values for λ (exponential search) O(λ(κ2 + µ)) variables, O(λµ(λ + κ3)) clauses λ: number of permutations κ: number of characters µ: number of meeting groups There is a satisfying assignment ⇔ ∃ solution for the SBCM instance using λ permutations.
Experiments
FPT Breadth-first search a smarter state space; runtime: O(k! · k3 · n)
- FPT are implemented in C++
- Concurrent meetings not implemented for FPT
- SAT clauses generated by Python and solved using MiniSat
Experiments
FPT Breadth-first search a smarter state space; runtime: O(k! · k3 · n)
- FPT are implemented in C++
- Concurrent meetings not implemented for FPT
- SAT clauses generated by Python and solved using MiniSat
- Real-World instances (movies used by Gronemann et al.):
The Matrix, Inception, Star Wars
- Random instances
- Random instances having a solution with few block
crossings Test Data:
SAT: Runtime vs Number of Permutations
20 40 1 2
OPT
↓ The Matrix Permutations Time [s]
SAT: Runtime vs Number of Permutations
20 40 1 2
OPT
↓ The Matrix Permutations Time [s] 20 40 1 2
OPT
↓ Star Wars Permutations
SAT: Runtime vs Number of Permutations
20 40 1 2
OPT
↓ The Matrix Permutations Time [s] 20 40 1 2
OPT
↓ Star Wars Permutations 20 40 1 2
OPT
↓ Inception Permutations
Uniform Random Instances: FPT
200 400 600 800 1,000 10 20 κ = 5 κ = 6 κ = 7 Number of meetings Time on 100 instances [s]
Uniform Random Instances: FPT
200 400 600 800 1,000 10 20 κ = 5 κ = 6 κ = 7 Number of meetings Time on 100 instances [s]
Uniform Random Instances: SAT
20 40 20 40 60 80 100 κ = 9 Number of meetings Time on 1 instance [s]
Small-OPT Random Instances: SAT
50 100 150 200 0.5 1 1.5 2 κ = 10, β ≤ 10 Number of meetings Time on 1 instance [s]
Results
Our approach Gronemann et al. Instance cr bcOPT Time [s] crOPT bc Time [s] Star Wars 54 10 3.77 39 18 0.99 The Matrix 21 4 2.86 12 8 0.77 Inception 51 12 1.54 35 20 2.02
Movie Instances:
Results
Our approach Gronemann et al. Instance cr bcOPT Time [s] crOPT bc Time [s] Star Wars 54 10 3.77 39 18 0.99 The Matrix 21 4 2.86 12 8 0.77 Inception 51 12 1.54 35 20 2.02
Movie Instances:
Results
Our approach Gronemann et al. Instance cr bcOPT Time [s] crOPT bc Time [s] Star Wars 54 10 3.77 39 18 0.99 The Matrix 21 4 2.86 12 8 0.77 Inception 51 12 1.54 35 20 2.02
Movie Instances:
Results
Our approach Gronemann et al. Instance cr bcOPT Time [s] crOPT bc Time [s] Star Wars 54 10 3.77 39 18 0.99 The Matrix 21 4 2.86 12 8 0.77 Inception 51 12 1.54 35 20 2.02
Movie Instances:
Example: The Matrix
Gronemann et al. 12 crossings / 8 block crossings Our approach 21 crossings / 4 block crossings
Example: The Matrix
Gronemann et al. 12 crossings / 8 block crossings Our approach 21 crossings / 4 block crossings
Example: The Matrix
Gronemann et al. 12 crossings / 8 block crossings Our approach 21 crossings / 4 block crossings
Example: The Matrix
Gronemann et al. 12 crossings / 8 block crossings Our approach 21 crossings / 4 block crossings
Conclusion
- Our SAT approach is usable for real-world instances.
- Use SAT instead of ILP – turned out to be much faster!
- Source code is available online.
Conclusion
- Try other (parallel) SAT solvers.
- Find more efficient way to model lifespans.
- Consider additional quality criteria of the drawing,
e.g., minimize wiggles. [Fr¨
- schl & N¨
- llenburg, GD17]
- Perform a user study on the effect of block crossings,
especially for storyline visualizations.
- Our SAT approach is usable for real-world instances.
- Use SAT instead of ILP – turned out to be much faster!
- Source code is available online.
Future work
Appendix
Describing Block Crossings
F G H F Blocks G and H cross
Describing Block Crossings
F G H F Blocks G and H cross Constraints: Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are contiguous blocks xr
ij ∧ xr jk ∧ g r i ∧ g r k ⇒ g r j
xr
ij ∧ xr jk ∧ hr i ∧ hr k ⇒ hr j
G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are contiguous blocks xr
ij ∧ xr jk ∧ g r i ∧ g r k ⇒ g r j
xr
ij ∧ xr jk ∧ hr i ∧ hr k ⇒ hr j
G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are contiguous blocks xr
ij ∧ xr jk ∧ g r i ∧ g r k ⇒ g r j
xr
ij ∧ xr jk ∧ hr i ∧ hr k ⇒ hr j
G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Describing Block Crossings
F G H F Blocks G and H cross Constraints: G and H are contiguous blocks xr
ij ∧ xr jk ∧ g r i ∧ g r k ⇒ g r j
xr
ij ∧ xr jk ∧ hr i ∧ hr k ⇒ hr j
G and H are adjacent xr
ij ∧ xr jk ∧ g r i ∧ hr k ⇒ ¬f r j
G is above H g r
i ∧ hr j ⇒ xr ij
Exactly characters of G and H cross each other χr
ij ⇔ g r i ∧ hr j
Meeting Groups
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4 π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4
q1
1 = 1
qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4
q1
1 = 1
q2
1 = 1
qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4
q1
1 = 1
q2
1 = 1
q3
1 = 1
qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Meeting Groups
{{o, g}} {{p, r, b}, {o, g}} {{p, r, b}} {{o, b}} {{p, g, o}, {b, r}}
π1 π2 π4
q1
1 = 1
q2
1 = 1
q3
1 = 1
q4
4 = 1
q5
4 = 1
qr
ℓ = 1 ⇔
meeting group ℓ is assigned to permutation πr π3
Mapping the Meeting Groups
- Map the meeting groups in the right order:
qr
ℓ ⇒ r u=1 qu ℓ−1
- Map every meeting group exactly once:
λ
r=1 qr ℓ and ¬(qr ℓ ∧ qp ℓ )
- Force meeting characters to be next to each other:
If i and k are part of the same meeting in meeting group ℓ and j is not: qr
ℓ ⇒ (xr ij = xr kj)
Mapping the Meeting Groups
- Map the meeting groups in the right order:
qr
ℓ ⇒ r u=1 qu ℓ−1
- Map every meeting group exactly once:
λ
r=1 qr ℓ and ¬(qr ℓ ∧ qp ℓ )
- Force meeting characters to be next to each other:
If i and k are part of the same meeting in meeting group ℓ and j is not: qr
ℓ ⇒ (xr ij = xr kj)
Mapping the Meeting Groups
- Map the meeting groups in the right order:
qr
ℓ ⇒ r u=1 qu ℓ−1
- Map every meeting group exactly once:
λ
r=1 qr ℓ and ¬(qr ℓ ∧ qp ℓ )
- Force meeting characters to be next to each other:
If i and k are part of the same meeting in meeting group ℓ and j is not: qr
ℓ ⇒ (xr ij = xr kj)
Mapping the Meeting Groups
- Map the meeting groups in the right order:
qr
ℓ ⇒ r u=1 qu ℓ−1
- Map every meeting group exactly once:
λ
r=1 qr ℓ and ¬(qr ℓ ∧ qp ℓ )
- Force meeting characters to be next to each other:
If i and k are part of the same meeting in meeting group ℓ and j is not: qr
ℓ ⇒ (xr ij = xr kj)