Scippy

GCG

Branch-and-Price & Column Generation for Everyone

gcg::Hypergraph< T > Class Template Reference

Detailed Description

template<class T>
class gcg::Hypergraph< T >

Definition at line 54 of file hypergraph.h.

#include <hypergraph.h>

Public Member Functions

 Hypergraph (SCIP *scip)
 
void swap (Hypergraph &other)
 
Hypergraphoperator= (Hypergraph other)
 
 ~Hypergraph ()
 
SCIP_RETCODE addNode (int i, int weight)
 
SCIP_RETCODE addHyperedge (std::vector< int > &edge, int weight)
 
SCIP_RETCODE addNodeToHyperedge (int node, int hedge)
 
int getNNodes ()
 
int getNHyperedges ()
 
int getNNeighbors (int i)
 
std::vector< int > getNeighbors (int i)
 
std::vector< int > getHyperedgeNodes (int i)
 
int getNHyperedgeNodes (int i)
 
void setPartition (int i, int ID)
 
SCIP_RETCODE writeToFile (int fd, SCIP_Bool writeweights)
 
SCIP_RETCODE readPartition (const char *filename)
 
int getWeight (int i)
 
int getHyperedgeWeight (int i)
 
void setDummynodes (int dummynodes_)
 
int getDummynodes () const
 
SCIP_RETCODE flush ()
 
- Public Member Functions inherited from gcg::GraphInterface
 GraphInterface ()
 
virtual ~GraphInterface ()
 
virtual std::vector< int > getPartition () const
 
virtual SCIP_RETCODE createDecompFromPartition (DEC_DECOMP **decomp)
 

Data Fields

std::string name
 

Protected Attributes

SCIP * scip_
 
Graph< T > * graph
 
std::vector< int > nodes
 
std::vector< int > hedges
 
std::vector< int > mapping
 
int lastnode
 
int dummynodes
 
- Protected Attributes inherited from gcg::GraphInterface
std::vector< int > partition
 

Constructor & Destructor Documentation

◆ Hypergraph()

template<class T >
gcg::Hypergraph< T >::Hypergraph ( SCIP *  scip)

Constructor

Parameters
scipSCIP data structure

Definition at line 45 of file hypergraph_def.h.

References gcg::Hypergraph< T >::graph.

◆ ~Hypergraph()

template<class T >
gcg::Hypergraph< T >::~Hypergraph

Destruktor

Definition at line 54 of file hypergraph_def.h.

Member Function Documentation

◆ swap()

◆ operator=()

template<class T >
Hypergraph& gcg::Hypergraph< T >::operator= ( Hypergraph< T >  other)
inline

Definition at line 84 of file hypergraph.h.

References gcg::Hypergraph< T >::swap().

◆ addNode()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::addNode ( int  i,
int  weight 
)

adds the node with the given weight to the graph

Definition at line 75 of file hypergraph_def.h.

◆ addHyperedge()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::addHyperedge ( std::vector< int > &  edge,
int  weight 
)

adds the edge to the graph

Definition at line 89 of file hypergraph_def.h.

◆ addNodeToHyperedge()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::addNodeToHyperedge ( int  node,
int  hedge 
)

adds the edge to the graph

Definition at line 108 of file hypergraph_def.h.

◆ getNNodes()

template<class T >
int gcg::Hypergraph< T >::getNNodes

return the number of nodes

Definition at line 119 of file hypergraph_def.h.

◆ getNHyperedges()

template<class T >
int gcg::Hypergraph< T >::getNHyperedges

return the number of edges (or hyperedges)

Definition at line 124 of file hypergraph_def.h.

Referenced by gcg::GraphAlgorithms< T >::computekMetric(), gcg::GraphAlgorithms< T >::computeMincut(), and gcg::GraphAlgorithms< T >::computeSoed().

◆ getNNeighbors()

template<class T >
int gcg::Hypergraph< T >::getNNeighbors ( int  i)

return the number of neighbor nodes of given node

Parameters
ithe given node

Definition at line 129 of file hypergraph_def.h.

◆ getNeighbors()

template<class T >
std::vector< int > gcg::Hypergraph< T >::getNeighbors ( int  i)

return the neighboring nodes of a given node

Parameters
ithe given node

Definition at line 135 of file hypergraph_def.h.

Referenced by gcg::HyperrowGraph< T >::getNeighbors(), and gcg::HypercolGraph< T >::getNeighbors().

◆ getHyperedgeNodes()

template<class T >
std::vector< int > gcg::Hypergraph< T >::getHyperedgeNodes ( int  i)

◆ getNHyperedgeNodes()

template<class T >
int gcg::Hypergraph< T >::getNHyperedgeNodes ( int  i)

return the number of nodes spanned by hyperedge

Definition at line 170 of file hypergraph_def.h.

◆ setPartition()

template<class T >
void gcg::Hypergraph< T >::setPartition ( int  i,
int  ID 
)
virtual

assigns partition to a given node

Implements gcg::GraphInterface.

Definition at line 178 of file hypergraph_def.h.

References partition().

◆ writeToFile()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::writeToFile ( int  fd,
SCIP_Bool  writeweights 
)
virtual

writes the hypergraph to the given file. The format is hypergraph dependent

write the hypergraph to a file

Parameters
fdfilename where the graph should be written to
writeweightswhether to write weights

Implements gcg::GraphInterface.

Definition at line 185 of file hypergraph_def.h.

◆ readPartition()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::readPartition ( const char *  filename)
virtual

reads the partition from the given file. The format is hypergraph dependent. The default is a file with one line for each node a

read in the partition from a file

Parameters
filenamefilename where the partition is stored

Implements gcg::GraphInterface.

Definition at line 218 of file hypergraph_def.h.

References partition().

Referenced by gcg::HyperrowGraph< T >::readPartition(), and gcg::HypercolGraph< T >::readPartition().

◆ getWeight()

template<class T >
int gcg::Hypergraph< T >::getWeight ( int  i)

return the weight of given node

Parameters
ithe given node

Definition at line 246 of file hypergraph_def.h.

◆ getHyperedgeWeight()

template<class T >
int gcg::Hypergraph< T >::getHyperedgeWeight ( int  i)

return the weight of given hyperedge

Parameters
ithe given hyperedge

Definition at line 255 of file hypergraph_def.h.

Referenced by gcg::GraphAlgorithms< T >::computekMetric(), gcg::GraphAlgorithms< T >::computeMincut(), and gcg::GraphAlgorithms< T >::computeSoed().

◆ setDummynodes()

template<class T >
void gcg::Hypergraph< T >::setDummynodes ( int  dummynodes_)
inline

set the number of dummy nodes

Definition at line 160 of file hypergraph.h.

References gcg::Hypergraph< T >::dummynodes.

◆ getDummynodes()

template<class T >
int gcg::Hypergraph< T >::getDummynodes ( ) const
inline

Definition at line 166 of file hypergraph.h.

References gcg::Hypergraph< T >::dummynodes.

◆ flush()

template<class T >
SCIP_RETCODE gcg::Hypergraph< T >::flush
virtual

Implements gcg::GraphInterface.

Definition at line 265 of file hypergraph_def.h.

Field Documentation

◆ name

template<class T >
std::string gcg::Hypergraph< T >::name

Definition at line 56 of file hypergraph.h.

◆ scip_

template<class T >
SCIP* gcg::Hypergraph< T >::scip_
protected

Definition at line 58 of file hypergraph.h.

Referenced by gcg::Hypergraph< T >::swap().

◆ graph

template<class T >
Graph<T>* gcg::Hypergraph< T >::graph
protected

Definition at line 59 of file hypergraph.h.

Referenced by gcg::Hypergraph< T >::Hypergraph(), and gcg::Hypergraph< T >::swap().

◆ nodes

template<class T >
std::vector<int> gcg::Hypergraph< T >::nodes
protected

Definition at line 60 of file hypergraph.h.

Referenced by gcg::Hypergraph< T >::swap().

◆ hedges

template<class T >
std::vector<int> gcg::Hypergraph< T >::hedges
protected

Definition at line 61 of file hypergraph.h.

Referenced by gcg::Hypergraph< T >::swap().

◆ mapping

template<class T >
std::vector<int> gcg::Hypergraph< T >::mapping
protected

Definition at line 62 of file hypergraph.h.

◆ lastnode

template<class T >
int gcg::Hypergraph< T >::lastnode
protected

Definition at line 63 of file hypergraph.h.

Referenced by gcg::Hypergraph< T >::swap().

◆ dummynodes

template<class T >
int gcg::Hypergraph< T >::dummynodes
protected