Compare commits

..

No commits in common. "rawhide" and "f31" have entirely different histories.

5 changed files with 20 additions and 196 deletions

2
.gitignore vendored
View file

@ -1 +1 @@
/azove-*.tar.gz
/azove-2.0.tar.gz

View file

@ -1,11 +0,0 @@
# 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.

View file

@ -1,81 +0,0 @@
--- 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<conBDD*>::iterator Vit = conBDDs.begin(); Vit != conBDDs.end(); ++Vit)
delete *Vit;
- for(vector<__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*> >::iterator Vit = levels.begin(); Vit != levels.end(); ++Vit)
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator Lit = Vit->begin(); Lit != Vit->end(); ++Lit)
+ for(vector<unordered_multimap<unsigned long int, andBDDnode*> >::iterator Vit = levels.begin(); Vit != levels.end(); ++Vit)
+ for(unordered_multimap<unsigned long int, andBDDnode*>::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<dim; ++l){
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator it = levels[l].begin(); it != levels[l].end(); ++it){
+ for(unordered_multimap<unsigned long int, andBDDnode*>::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<unsigned long int, andBDDnode*>::iterator, __gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator> sameZeroSonsRange = levels[actLevel].equal_range((unsigned long int)actZeroEdge);
+ pair<unordered_multimap<unsigned long int, andBDDnode*>::iterator, unordered_multimap<unsigned long int, andBDDnode*>::iterator> sameZeroSonsRange = levels[actLevel].equal_range((unsigned long int)actZeroEdge);
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator searchIt = sameZeroSonsRange.first; searchIt != sameZeroSonsRange.second; ++searchIt){
+ for(unordered_multimap<unsigned long int, andBDDnode*>::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"<<endl;
for(unsigned int l=0; l<=dim; ++l){
cerr<<"========= level "<<l<<" ==========="<<endl;
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::const_iterator it = levels[l].begin(); it != levels[l].end(); ++it)
+ for(unordered_multimap<unsigned long int, andBDDnode*>::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<dim; ++l){
unsigned int abusedCounter = 0;
of<<"{ rank = same; \" "<<level2index[l]<<" \";"<<endl;
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator it = levels[l].begin(); it != levels[l].end(); ++it){
+ for(unordered_multimap<unsigned long int, andBDDnode*>::iterator it = levels[l].begin(); it != levels[l].end(); ++it){
it->second->counter = abusedCounter++;
of<<"\""<<l<<"_"<<it->second->counter<<"\";"<<endl;
}
@@ -611,7 +611,7 @@ void azove::outputDotFile(const char* fi
<<"}"<<endl;
for(unsigned int l=0; l<dim; ++l){
- for(__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*>::iterator it = levels[l].begin(); it != levels[l].end(); ++it){
+ for(unordered_multimap<unsigned long int, andBDDnode*>::iterator it = levels[l].begin(); it != levels[l].end(); ++it){
of<<"\""<<it->second->level<<"_"<<it->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 <stdio.h>
#include <vector>
#include <list>
-#include <ext/hash_map>
+#include <unordered_map>
#include <numeric>
#include "conBDD.hpp"
@@ -75,7 +75,7 @@ private:
unsigned long int sigMDDnodeBaseCounter;
//data structure for the andBDD
- std::vector<__gnu_cxx::hash_multimap<unsigned long int, andBDDnode*> > levels;
+ std::vector<std::unordered_multimap<unsigned long int, andBDDnode*> > levels;
andBDDnode* rootNode;
andBDDnode* leaf0Node;

View file

@ -1,24 +0,0 @@
--- 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."<<endl;
}
+#endif
cerr<<"Allocating "<<sigMDDnodeBaseSize<<" signature nodes... ";
sigMDDnodeBase = new sigMDDnode[sigMDDnodeBaseSize];
cerr<<"done"<<endl;

View file

@ -1,51 +1,43 @@
Name: azove
Version: 2.0
Release: 32%{?dist}
Release: 17%{?dist}
Summary: Another Zero-One Vertex Enumeration tool
License: GPL-2.0-or-later
URL: https://people.mpi-inf.mpg.de/alumni/d1/2019/behle/azove.html
Source0: https://people.mpi-inf.mpg.de/alumni/d1/2019/behle/%{name}-%{version}.tar.gz
License: GPLv2+
URL: http://www.mpi-inf.mpg.de/~behle/azove.html
Source0: http://www.mpi-inf.mpg.de/~behle/%{name}-%{version}.tar.gz
# Man page written by Jerry James from text found in the sources. Therefore,
# the copyright and license of the man page is the same as the sources.
Source1: %{name}2.1
# Sent upstream 2 Mar 2012: add an include that used to be implicit.
Patch: %{name}-include.patch
# Polymake patch to use static node allocation. Dynamic node allocation is
# unreliable on newer Linux kernels.
Patch: %{name}-memory.patch
# Use std::unordered_multimap instead of the deprecated __gnu_cxx::hash_multimap
Patch: %{name}-map.patch
# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
Patch0: %{name}-include.patch
BuildRequires: gcc-c++
BuildRequires: gmp-devel
BuildRequires: make
%description
Azove 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.
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.
%prep
%autosetup -p0
%setup -q
%patch0
%build
%make_build COMPILER_FLAGS='%{build_cflags} %{build_ldflags}'
make %{?_smp_mflags} COMPILER_FLAGS="$RPM_OPT_FLAGS"
%install
mkdir -p %{buildroot}%{_bindir}
install -m 0755 -p %{name}2 %{buildroot}%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_bindir}
install -m 0755 -p %{name}2 $RPM_BUILD_ROOT%{_bindir}
mkdir -p %{buildroot}%{_mandir}/man1
install -m 0644 -p %{SOURCE1} %{buildroot}%{_mandir}/man1
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
install -m 0644 -p %{SOURCE1} $RPM_BUILD_ROOT%{_mandir}/man1
%files
%doc INSTALL README
@ -54,58 +46,6 @@ install -m 0644 -p %{SOURCE1} %{buildroot}%{_mandir}/man1
%{_mandir}/man1/%{name}2.1*
%changelog
* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-32
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-31
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-30
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-29
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Tue Jan 23 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-27
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Jan 16 2024 Jerry James <loganjerry@gmail.com> - 2.0-26
- Stop building for 32-bit x86
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-26
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Wed Jan 18 2023 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-25
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Aug 11 2022 Jerry James <loganjerry@gmail.com> - 2.0-24
- Convert License tag to SPDX
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-22
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-21
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Mar 18 2020 Jerry James <loganjerry@gmail.com> - 2.0-19
- Add -memory and -map patches
- Build with RPM_LD_FLAGS
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2.0-17
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild