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
2
.gitignore
vendored
|
|
@ -1 +1 @@
|
|||
/azove-*.tar.gz
|
||||
/azove-2.0.tar.gz
|
||||
|
|
|
|||
11
README.md
11
README.md
|
|
@ -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.
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
98
azove.spec
98
azove.spec
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue