removing not used methods

This commit is contained in:
aletempiac 2023-11-19 18:53:54 +01:00
parent f7a520b957
commit 672fd1b629
1 changed files with 0 additions and 165 deletions

View File

@ -367,171 +367,6 @@ private:
// return multiplicity;
// }
template<typename Fn>
std::tuple<STT, std::vector<uint32_t>, uint32_t> enumerate_iset_combinations( uint32_t free_set_size, Fn&& fn, bool verbose = false )
{
/* works up to 16 input truth tables */
assert( num_vars <= 16 );
/* special case */
STT tt = best_tt;
if ( num_vars <= free_set_size || free_set_size == 0 )
{
return { tt, permutations, UINT32_MAX };
}
/* select k */
// free_set_size = std::min( free_set_size, num_vars - free_set_size );
/* init permutation array */
std::array<uint32_t, 16> perm, best_perm;
std::copy( permutations.begin(), permutations.begin() + num_vars, perm.begin() );
best_perm = perm;
/* TT with best cost */
STT best = tt;
uint32_t best_cost = UINT32_MAX;
/* enumerate combinations */
if ( free_set_size == 1 )
{
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
for ( uint32_t i = 1; i < num_vars; ++i )
{
std::swap( perm[0], perm[i] );
kitty::swap_inplace( tt, 0, i );
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
}
}
else if ( free_set_size == 2 )
{
for ( uint32_t i = 0; i < num_vars - 1; ++i )
{
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
for ( uint32_t j = 2; j < num_vars - i; ++j )
{
std::swap( perm[1], perm[j] );
kitty::swap_inplace( tt, 1, j );
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
}
std::swap( perm[0], perm[num_vars - i - 1] );
kitty::swap_inplace( tt, 0, num_vars - i - 1 );
}
}
else if ( free_set_size == 3 )
{
for ( uint32_t i = 0; i < num_vars - 2; ++i )
{
for ( uint32_t j = i; j < num_vars - 2; ++j )
{
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
for ( uint32_t k = 3; k < num_vars - j; ++k )
{
std::swap( perm[2], perm[k] );
kitty::swap_inplace( tt, 2, k );
uint32_t cost = fn( tt );
if ( cost < best_cost )
{
best = tt;
best_cost = cost;
best_perm = perm;
}
if ( verbose )
{
kitty::print_hex( tt );
std::cout << " " << cost << " ";
print_perm( perm.begin(), free_set_size );
}
}
std::swap( perm[1], perm[num_vars - j - 1] );
kitty::swap_inplace( tt, 1, num_vars - j - 1 );
}
std::swap( perm[0], perm[num_vars - i - 1] );
kitty::swap_inplace( tt, 0, num_vars - i - 1 );
}
}
std::vector<uint32_t> res_perm( num_vars );
std::copy( best_perm.begin(), best_perm.begin() + num_vars, res_perm.begin() );
return std::make_tuple( best, res_perm, best_cost );
}
inline bool combinations_offset_next( uint32_t k, uint32_t offset, uint32_t *pComb, uint32_t *pInvPerm, STT& tt )
{
uint32_t i;