diff --git a/.gitignore b/.gitignore index ecbd044..d648bd5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/azove-2.0.tar.gz +/azove-*.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..09a85d9 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# azove + +[Azove](http://people.mpi-inf.mpg.de/alumni/d1/2019/behle/azove.html) is a +tool designed for counting (without explicit enumeration) and enumeration of +`0/1` vertices. Given a polytope by a linear relaxation or facet description +`P = {x | Ax <= b}`, all `0/1` points lying in P can be counted or enumerated. +This is done by intersecting the polytope P with the unit-hypercube `[0,1] d`. +The integral vertices (no fractional ones) of this intersection will be +enumerated. If P is a `0/1` polytope, azove solves the vertex enumeration +problem. In fact it can also solve the `0/1` knapsack problem and the `0/1` +subset sum problem. diff --git a/azove-map.patch b/azove-map.patch new file mode 100644 index 0000000..d38cd20 --- /dev/null +++ b/azove-map.patch @@ -0,0 +1,81 @@ +--- azove.cpp.orig 2020-03-18 16:24:44.740182853 -0600 ++++ azove.cpp 2020-03-18 16:36:01.379150406 -0600 +@@ -212,8 +212,8 @@ azove::~azove(){ + delete[] sigMDDnodeBase; + for(vector::iterator Vit = conBDDs.begin(); Vit != conBDDs.end(); ++Vit) + delete *Vit; +- for(vector<__gnu_cxx::hash_multimap >::iterator Vit = levels.begin(); Vit != levels.end(); ++Vit) +- for(__gnu_cxx::hash_multimap::iterator Lit = Vit->begin(); Lit != Vit->end(); ++Lit) ++ for(vector >::iterator Vit = levels.begin(); Vit != levels.end(); ++Vit) ++ for(unordered_multimap::iterator Lit = Vit->begin(); Lit != Vit->end(); ++Lit) + delete Lit->second; + } + +@@ -422,7 +422,7 @@ void azove::countPathsToLeaf1(void){ + rootNode->counter *= 2; + + for(unsigned int l=0; l::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ ++ for(unordered_multimap::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ + it->second->zeroEdge->counter += it->second->counter / 2; + it->second->oneEdge->counter += it->second->counter / 2; + } +@@ -437,9 +437,9 @@ void azove::countPathsToLeaf1(void){ + andBDDnode* azove::findNodeWithSameSuccessors(const int actLevel, const andBDDnode* actZeroEdge, const andBDDnode* actOneEdge){ + andBDDnode* foundNode = NULL; + +- pair<__gnu_cxx::hash_multimap::iterator, __gnu_cxx::hash_multimap::iterator> sameZeroSonsRange = levels[actLevel].equal_range((unsigned long int)actZeroEdge); ++ pair::iterator, unordered_multimap::iterator> sameZeroSonsRange = levels[actLevel].equal_range((unsigned long int)actZeroEdge); + +- for(__gnu_cxx::hash_multimap::iterator searchIt = sameZeroSonsRange.first; searchIt != sameZeroSonsRange.second; ++searchIt){ ++ for(unordered_multimap::iterator searchIt = sameZeroSonsRange.first; searchIt != sameZeroSonsRange.second; ++searchIt){ + if(actOneEdge == searchIt->second->oneEdge){ + foundNode = searchIt->second; + break; +@@ -465,7 +465,7 @@ void azove::outputBDD(void){ + cerr<<"levels of BDD"<::const_iterator it = levels[l].begin(); it != levels[l].end(); ++it) ++ for(unordered_multimap::const_iterator it = levels[l].begin(); it != levels[l].end(); ++it) + cerr<<*(it->second); + } + } +@@ -597,7 +597,7 @@ void azove::outputDotFile(const char* fi + for(unsigned int l=0; l::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ ++ for(unordered_multimap::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ + it->second->counter = abusedCounter++; + of<<"\""<second->counter<<"\";"<::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ ++ for(unordered_multimap::iterator it = levels[l].begin(); it != levels[l].end(); ++it){ + of<<"\""<second->level<<"_"<second->counter<<"\" -> "; + if(it->second->oneEdge == leaf0Node) + of<<"\"leaf0\""; +--- azove.hpp.orig 2007-03-01 09:12:27.000000000 -0700 ++++ azove.hpp 2020-03-18 16:39:17.921850480 -0600 +@@ -25,7 +25,7 @@ + #include + #include + #include +-#include ++#include + #include + + #include "conBDD.hpp" +@@ -75,7 +75,7 @@ private: + unsigned long int sigMDDnodeBaseCounter; + + //data structure for the andBDD +- std::vector<__gnu_cxx::hash_multimap > levels; ++ std::vector > levels; + + andBDDnode* rootNode; + andBDDnode* leaf0Node; diff --git a/azove-memory.patch b/azove-memory.patch new file mode 100644 index 0000000..68f8c13 --- /dev/null +++ b/azove-memory.patch @@ -0,0 +1,24 @@ +--- azove.cpp.orig 2007-04-07 07:16:25.000000000 -0600 ++++ azove.cpp 2020-03-18 16:24:44.740182853 -0600 +@@ -300,6 +300,7 @@ void azove::buildConstraintBDDs(void){ + //----------------------------------------------------------------------------------- + + void azove::andBDDs(void){ ++#if 0 + FILE* pf = fopen("/proc/meminfo", "r"); + if(pf){ + unsigned int memtotal = 0; +@@ -324,10 +325,13 @@ void azove::andBDDs(void){ + fclose(pf); + } + else{ ++#endif + #define FIXED_MDDNODEBASESIZE 10000000 + sigMDDnodeBaseSize = FIXED_MDDNODEBASESIZE; ++#if 0 + cerr<<"/proc/meminfo not found! Using fixed number of signature nodes."< - 2.0-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 2.0-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 2.0-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 2.0-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jan 23 2024 Fedora Release Engineering - 2.0-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.0-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Tue Jan 16 2024 Jerry James - 2.0-26 +- Stop building for 32-bit x86 + +* Wed Jul 19 2023 Fedora Release Engineering - 2.0-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 2.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Thu Aug 11 2022 Jerry James - 2.0-24 +- Convert License tag to SPDX + +* Wed Jul 20 2022 Fedora Release Engineering - 2.0-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 2.0-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 2.0-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Tue Jan 26 2021 Fedora Release Engineering - 2.0-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 2.0-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Mar 18 2020 Jerry James - 2.0-19 +- Add -memory and -map patches +- Build with RPM_LD_FLAGS + +* Tue Jan 28 2020 Fedora Release Engineering - 2.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Wed Jul 24 2019 Fedora Release Engineering - 2.0-17 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild