digraph "gin" { layout=dot; node [label="", shape=box, style=filled, fillcolor=gray, width=1.4]; m1 [label="meta page"]; subgraph cluster01 { label="entry tree"; subgraph egroup1 { rank=same; e1; } subgraph egroup2 { rank=same; e2 -> e3 -> e4; } subgraph egroup3 { rank=same; e5 -> e6 -> e7 -> e8 -> e9; } e1 -> e4; e1 -> e3; e1 -> e2; e2 -> e5; e2 -> e6; e3 -> e7; e4 -> e8; e4 -> e9; e6 [fillcolor=green, label="posting list"]; e8 [fillcolor=green, label="posting list"]; e9 [fillcolor=green, label="posting list"]; } subgraph cluster02 { label="posting tree"; subgraph pgroup1 { rank=same; p1; } subgraph pgroup2 { rank=same; p2 -> p3; } p1 -> p2; p1 -> p3; p2 [fillcolor=green, label="heap ptr"]; p3 [fillcolor=green, label="heap ptr"]; } subgraph cluster03 { label="posting tree"; subgraph pgroup3 { rank=same; p4; } p4 [fillcolor=green, label="heap ptr"]; } subgraph cluster04 { label="posting tree"; subgraph pgroup4 { rank=same; p5; } subgraph pgroup5 { rank=same; p6 -> p7; } p5 -> p6; p5 -> p7; p6 [fillcolor=green, label="heap ptr"]; p7 [fillcolor=green, label="heap ptr"]; } subgraph cluster05 { label="pending list"; node [style=filled, fillcolor=red]; n1 -> n2 -> n3 -> n4; } m1 -> e1; e5 -> p1; e7 -> p4; e7 -> p5; m1 -> n1; e5 [style=filled, fillcolor=green4]; e7 [style=filled, fillcolor=green4]; }