dzufferey / mtidd

A C++ library for multi-terminal (reduced ordered) interval decision diagrams

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MTIDD

A C++ library for multi-terminal (reduced ordered) interval decision diagrams.

Compiling

You need to install bazel and have a modern C++ compiler.

With Bazelisk you can build an run with:

bazelisk build //...
bazelisk test //...

clangd

To generate a compile_commands.json for clangd:

bazelisk run @hedron_compile_commands//:refresh_all

Status

Started to work on it. Nothing concrete yet.

Design Choices

  • The code is parametric on the type of variables and terminal elements.
  • The terminal elements must form a lattice.
  • The variable ordering is implicitly given by an internalizer which maps each variable to a unique index. The order on the indices becomes the variable order.

ToDo

  • reordering void reorder(std::map<int, int> const & var_idx_bijection) { ... }
    • swap operation for two variables adjacent in the ordering
    • partial lookup for two steps in the variable order (needed in the swap)
    • reordering is like bubble sort with the new order and using swap
  • implement proper reference counting to manage the memory
  • map operation to transform the type of variables and terminal

About

A C++ library for multi-terminal (reduced ordered) interval decision diagrams

License:Apache License 2.0


Languages

Language:C++ 97.1%Language:Starlark 2.9%