azove(1)

πŸ“¦ version 2.0, in fedora 43, fedora 44

πŸ’– azove(1) β€” another zero-one vertex enumeration tool, and yes bestie it's iconic

okay so real talk, the manual page name is azove(1) and it lives in the User Commands section, which is giving "I'm a tool, I'm useful, I'm THAT girl" energy. it's called azove which stands for Another Zero-One Vertex Enumeration tool. "another"?? humble queen. anyway let's get into it πŸ’…


✨ SYNOPSIS ✨

azove [-c] [-r] [-e] FILE

that's it. that's the whole vibe. three little flags and a file. so clean, so demure πŸŽ€


🌸 DESCRIPTION 🌸

okay so azove is a tool built for two things, and only two things, no notes:

  1. counting 0/1 vertices (and doing it without explicitly enumerating them β€” she's efficient like that)
  2. enumerating 0/1 vertices

here's the setup, bestie. someone hands you a polytope as a linear relaxation or facet description:

P = {x | Ax <= b}

and you want all the 0/1 points that lie inside P. azove can count them, or it can list them out one by one. your choice, your moment, main character energy either way ✨

the way it does this?? it intersects the polytope P with the unit-hypercube [0,1]^d. and then β€” here's the part that ate β€” it enumerates the integral vertices of that intersection. no fractional ones. we do not do fractions here. not on this page. not today πŸ™ˆ

so if P happens to be a 0/1 polytope, then congratulations, azove just solves the vertex enumeration problem for you. periodt. πŸ’…

and it doesn't stop there, no ma'am. it can also solve:

  • the 0/1 knapsack problem
  • the 0/1 subset sum problem

like, oh you thought she was a one-trick pony? she is not. she's a whole stable πŸ¦‹

now about FILE β€” that's your input, and it has to be a file in the cddlib .ine format. keep that extension in mind, iykyk.

and here's where the output goes, because this part is important and you will absolutely lose your mind if you don't read it:

  • statistics and timings get written to stderr
  • output in cddlib .ext format gets written to stdout

so if you're staring at your terminal like "where are my numbers??" β€” check your streams, babe. they're going to different places. it's giving divorced parents. 🫢


πŸ’œ OPTIONS πŸ’œ

three flags. short. sweet. slay.

  • -c β€” only count the number of 0/1 vertices. that's it, no listing, no scroll, just a number. default is enumeration, so if you don't pass this, azove is gonna give you the whole roster. ✨
  • -r β€” generate a random variables order for the BDDs. the default is the variable order given by input. and like, why would you want random?? because this may help in case of hard instances πŸ”₯ β€” sometimes you gotta shake the box and see what falls out, no cap.
  • -e β€” exact arbitrary precision. big numbers? irrational behavior from your floats?? not here. exact, arbitrary precision, the way nature intended πŸ‘‘
πŸ’€ heads up bestie: that's literally the entire option list. all three. i'm not hiding any. this manpage is short and that is its whole brand.

🧚 a lil sign-off 🧚

and that's the page, babe!! this is Azove version 2.0, so go forth and enumerate (or -c and just count, you do you) πŸ’–

stay exact, stay integral, and may all your vertices be 0/1 βœ¨πŸŒˆπŸ’…

πŸ“¦ where this page comes from