Welcome

This is a supplementary website to our paper O’Reach: Even Faster Reachability in Large Graphs and provides the source code as well as all instances. Please cite our work if you use materials provided here.

Abstract

One of the most fundamental problems in computer science is the reachability problem: Given a directed graph and two vertices s and t, can s reach t via a path? We revisit existing techniques and combine them with new approaches to support a large portion of reachability queries in constant time using a linear-sized reachability index. Our new algorithm O’Reach can be easily combined with previously developed solutions for the problem or run standalone.

In a detailed experimental study, we compare a variety of algorithms with respect to their index- building and query times as well as their memory footprint on a diverse set of instances. Our experiments indicate that the query performance often depends strongly not only on the type of graph, but also on the result, i.e., reachable or unreachable. Furthermore, we show that previous algorithms are significantly sped up when combined with our new approach in almost all scenarios. Surprisingly, due to cache effects, a higher investment in space doesn’t necessarily pay off: Reachability queries can often be answered even faster than single memory accesses in a precomputed full reachability matrix.

Software

We implemented all algorithms in C++. The source code as well as instructions on how to build and run are publicly available on Github (MIT license).

Instances

We used the following seven collections of acyclic instances for our experiments. Each instance comes with four query files, containing random, only positive (“true”), only negative (“false”), and 50:50 positive and negative queries (“mixed”).

Kronecker

Generated with the RMAT generator for the Graph500 benchmark in different sizes. Instance kron_logni has 2i vertices. Edges were oriented according to vertex ID from smaller to larger.

Instance #Vertices #Edges Density Reachability (%) Download
kron_logn12 4096 116952 28.552734 27.475973 kron_logn12.tar.xz
kron_logn16 65536 2456071 37.476669 21.218687 kron_logn16.tar.xz
kron_logn17 131071 5113985 39.016907 19.454443 kron_logn17.tar.xz
kron_logn20 1048576 44619402 42.552378 5.819534 kron_logn20.tar.xz
kron_logn21 2097152 91040932 43.411699 1.214995 kron_logn21.tar.xz

Random

Generated according to the Erdős-Renyí model G(n, m). Instance randni-j has 2i vertices and 2j edges. Edges were oriented according to vertex ID from smaller to larger.

Instance #Vertices #Edges Density Reachability (%) Download
randn20-21 1048576 2097152 2 0.001185 randn20-21.tar.xz
randn20-22 1048576 4194304 4 0.035192 randn20-22.tar.xz
randn20-23 1048576 8388608 8 1.906711 randn20-23.tar.xz
randn23-24 8388608 16777216 2 0.000148 randn23-24.tar.xz
randn23-25 8388608 33554432 4 0.004418 randn23-25.tar.xz

Delaunay

Delaunay instances adapted from the 10th DIMACS Implementation Challenge. delaunay_ni: Delaunay triangulation of 2i random points in the unit square.

Instance #Vertices #Edges Density Reachability (%) Download
delaunay_n15 32768 98274 2.999084 0.438026 delaunay_n15.tar.xz
delaunay_n20 1048576 3145686 2.999960 0.009307 delaunay_n20.tar.xz
delaunay_n22 4194304 12582869 2.999990 0.002037 delaunay_n22.tar.xz

Large Real

Different kinds of networks, adapted from the GRAIL Code Repository.

Instance #Vertices #Edges Density Reachability (%) Download
citeseer.scc 693947 312282 0.450008 0.000150 citeseer.scc.tar.xz
citeseerx 6540401 15011260 2.295159 0.136736 citeseerx.tar.xz
cit-Patents 3774768 16518947 4.376149 0.040911 cit-Patents.tar.xz
go_uniprot 6967956 34769339 4.989891 0.000378 go_uniprot.tar.xz
uniprotenc_22m 1595444 1595442 0.999999 0.000065 uniprotenc_22m.tar.xz
uniprotenc_100m 16087295 16087293 1.000000 0.000008 uniprotenc_100m.tar.xz
uniprotenc_150m 25037600 25037598 1.000000 0.000005 uniprotenc_150m.tar.xz

Small Real Dense

Different kinds of networks, adapted from the GRAIL Code Repository.

Instance #Vertices #Edges Density Reachability (%) Download
go_sub 6793 13361 1.966878 0.225796 go_sub.tar.xz
pubmed_sub 9000 40028 4.447556 0.645796 pubmed_sub.tar.xz
yago_sub 6642 42392 6.382415 0.150623 yago_sub.tar.xz
citeseer_sub 10720 44258 4.128545 0.367247 citeseer_sub.tar.xz
arXiv 6000 66707 11.117833 15.464258 arXiv.tar.xz

Small Real Sparse

Different kinds of networks, adapted from the GRAIL Code Repository.

Instance #Vertices #Edges Density Reachability (%) Download
amaze 3710 3600 0.970350 17.233661 amaze.tar.xz
kegg 3617 4395 1.215095 20.163640 kegg.tar.xz
nasa 5605 6538 1.166459 0.528449 nasa.tar.xz
xmark 6080 7051 1.159704 1.451254 xmark.tar.xz
vchocyc 9491 10345 1.089980 0.151740 vchocyc.tar.xz
mtbrv 9602 10438 1.087065 0.151073 mtbrv.tar.xz
anthra 12499 13104 1.048404 0.095099 anthra.tar.xz
ecoo 12620 13350 1.057845 0.108791 ecoo.tar.xz
agrocyc 12684 13408 1.057080 0.106041 agrocyc.tar.xz
human 38811 39576 1.019711 0.023111 human.tar.xz

SNAP

Different kinds of networks, adapted from the Stanford Large Network Dataset Collection.

Instance #Vertices #Edges Density Reachability (%) Download
p2p-Gnutella31 48438 55349 1.142677 0.772494 p2p-Gnutella31.tar.xz
email-EuAll 230795 223004 0.966243 5.073220 email-EuAll.tar.xz
web-Google 371764 517805 1.392833 14.809034 web-Google.tar.xz
soc-LiveJournal1 970270 1024140 1.055521 5.378105 soc-LiveJournal1.tar.xz
wiki-Talk 2281879 2311570 1.013012 0.811697 wiki-Talk.tar.xz

License and Bibliography

Our implementation of the algorithms is available under the MIT license.

If you publish results using our algorithms, instances, or implementation, please acknowledge our work by citing our paper as follows:

@inproceedings{hst-oreach-2021,
  author    = {Hanauer, Kathrin and Schulz, Christian and Trummer, Jonathan},
  editor    = {Coudert, David and Natale, Emanuele},
  title     = {O'Reach: Even Faster Reachability in Large Graphs},
  booktitle = {19th International Symposium on Experimental Algorithms, {SEA} 2021,
               June 7-9, 2021, Valrose, France},
  series    = {LIPIcs},
  volume    = {190},
  pages     = {13:1--13:24},
  publisher = {Schloss Dagstuhl - Leibniz-Zentrum f{\"{u}}r Informatik},
  year      = {2021},
  url       = {https://doi.org/10.4230/LIPIcs.SEA.2021.13},
  doi       = {10.4230/LIPIcs.SEA.2021.13},
}

For the full version:

@article{hst-oreachfull-2021,
  author        = {Hanauer, Kathrin and Schulz, Christian and Trummer, Jonathan},
  title         = {O'Reach: Even Faster Reachability in Large Graphs},
  journal       = {CoRR},
  volume        = {abs/2008.10932},
  year          = {2021},
  url           = {https://arxiv.org/abs/2008.10932},
  archivePrefix = {arXiv},
  eprint        = {2008.10932},
  primaryClass  = {cs.DS},
}