https://github.com/mwien/cliquepicking
Algorithms for efficient counting of the size of a Markov equivalence class
https://github.com/mwien/cliquepicking
algorithms causality
Last synced: 4 months ago
JSON representation
Algorithms for efficient counting of the size of a Markov equivalence class
- Host: GitHub
- URL: https://github.com/mwien/cliquepicking
- Owner: mwien
- Created: 2020-09-14T07:24:18.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-10-05T13:45:25.000Z (over 1 year ago)
- Last Synced: 2024-10-12T15:13:45.791Z (8 months ago)
- Topics: algorithms, causality
- Language: Julia
- Homepage: https://arxiv.org/abs/2205.02654
- Size: 28.8 MB
- Stars: 6
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# The Clique-Picking Algorithm
This repository countains multiple implementations of the Clique-Picking algorithm that we have proposed at AAAI 2021 [1] for counting the number of Markov equivalent DAGs in polynomial time.
Moreover, we give implementations of the polynomial-time algorithm for uniformly sampling a DAG from a Markov Equivalence Class, which we refined in [2]. See also chapter 5 of my thesis [3].1. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs* (AAAI 2021) [arXiv version](https://arxiv.org/abs/2012.09679)
2. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs with Applications* [(JMLR)](https://www.jmlr.org/papers/v24/22-0495.html)
3. Marcel Wienöbst: *Algorithms for Markov Equivalence* [(PhD Thesis)](https://mwien.github.io/thesis.pdf)## Implementations
We provide the following implementations:
- ```aaai_experiments/``` contains the original C++ implementation and experiments from the AAAI 2021 conference paper (only counting is implemented here)
- ```cliquepicking_julia/``` contains the subsequent Julia code additionally provides a sampling algorithm
- ```cliquepicking_rs/``` contains a recent Rust implementation for counting and sampling, which is cleaner and slightly more efficient (worst-case n^3)
- ```cliquepicking_python/``` contains a Python wrapper for the Rust implementation. You can install and use the Python implementation easily via ```pip install cliquepicking```.Brief examples of how to install and use the implementations are given in the subdirectories.