Program Listing for File Pseudopolynomial.h
↰ Return to documentation for file (ADS/intractable/Pseudopolynomial.h)
/*--------------------------------------------------------------------------*/
/*------------------------ File Pseudopolynomial.h -------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_Pseudopolynomial
#define __ADS_Pseudopolynomial
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include "ADS/complexity/Problems.h"
#include <algorithm>
#include <map>
#include <numeric>
#include <optional>
#include <utility>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
/*--------------------------------------------------------------------------*/
/*---------------------------- SUBSET SUM ----------------------------------*/
/*--------------------------------------------------------------------------*/
template< class Bits = std::vector< bool > >
bool subsetSumDP( const std::vector< long > & A , long k ,
std::vector< std::vector< bool > > * rows = nullptr );
inline std::optional< Nodes > subsetSumSet( const std::vector< long > & A ,
long k );
inline std::optional< Nodes > partitionDP( const std::vector< long > & A );
/*--------------------------------------------------------------------------*/
/*---------------------------- SCHEDULING ----------------------------------*/
/*--------------------------------------------------------------------------*/
inline std::optional< std::vector< int > > schedulingDP(
const std::vector< long > & t , int m , long d );
struct Piece {
int program;
double start , end;
};
inline std::pair< double , std::vector< std::vector< Piece > > > mcNaughton(
const std::vector< double > & t , int m );
inline std::optional< std::vector< std::vector< Piece > > > realTimeScheduling(
const std::vector< double > & C ,
const std::vector< double > & T , int m );
inline std::optional< std::vector< int > > bottino(
const std::vector< long > & P );
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/intractable/impl/Pseudopolynomial.tpp"
/*--------------------------------------------------------------------------*/
#endif /* Pseudopolynomial.h included */
/*--------------------------------------------------------------------------*/
/*---------------------- End File Pseudopolynomial.h -----------------------*/
/*--------------------------------------------------------------------------*/