Sorting Network Search
Backtracking for Small Sorting Networks
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
C2NF Class Reference

Second normal form searchable sorting network. More...

#include <2NF.h>

Inheritance diagram for C2NF:
CSearchable C1NF CSortingNetwork CComparatorNetwork CSettings CAutocomplete CNearsort CNearsort2

Public Member Functions

 C2NF (CMatching &, const size_t)
 Constructor. More...
 
void Backtrack ()
 Backtracking search. More...
 
- Public Member Functions inherited from CSearchable
 CSearchable ()
 Constructor. More...
 
virtual void Backtrack ()
 Backtracking search. More...
 
const size_t GetCount () const
 Get count. More...
 
- Public Member Functions inherited from C1NF
 C1NF ()
 Constructor. More...
 
- Public Member Functions inherited from CSortingNetwork
 CSortingNetwork ()
 Constructor. More...
 
 ~CSortingNetwork ()
 Destructor. More...
 
- Public Member Functions inherited from CComparatorNetwork
 CComparatorNetwork ()
 Constructor. More...
 
virtual ~CComparatorNetwork ()
 Destructor. More...
 
void Save (const std::string &)
 Save to file. More...
 

Protected Member Functions

void Save ()
 Save comparator network. More...
 
- Protected Member Functions inherited from CSearchable
void FirstComparatorNetwork (size_t)
 Set to first comparator network. More...
 
bool NextComparatorNetwork ()
 Change to next comparator network. More...
 
void SynchMatchingRepresentations (size_t)
 Synchronize the two different matching representations. More...
 
void InitMatchingRepresentations (size_t)
 Initialize the two different matching representations. More...
 
virtual void Save ()
 Save comparator network. More...
 
virtual void SetToS ()
 Set top of stack. More...
 
virtual void Process ()
 Process a candidate comparator network. More...
 
void Search ()
 Do the actual search. More...
 
- Protected Member Functions inherited from C1NF
void Initialize ()
 Initialize the sorting test. More...
 
bool Sorts ()
 Does it sort all inputs? More...
 
bool StillSorts (const size_t)
 Does it still sort when a bit is changed? More...
 
bool EvenSorts ()
 Does it sort if there are an odd number of inputs and we fix the value on the last channel? More...
 
- Protected Member Functions inherited from CSortingNetwork
virtual void Initialize ()
 Initialize the sorting test. More...
 
virtual bool Sorts ()
 Does it sort? More...
 
virtual bool StillSorts (const size_t)
 Does it still sort when a bit is changed? More...
 
size_t FlipInput (size_t, const size_t, const size_t)
 Recompute network values when a bit is changed. More...
 
void InitValues (const size_t, const size_t)
 Initialize the network values to the all zero input. More...
 

Protected Attributes

size_t m_nLevel2Index = 0
 Index of current level 2 candidate. More...
 
- Protected Attributes inherited from CSearchable
size_t m_nCount = 0
 Number of comparator networks found that sort. More...
 
CMatching m_cMatching [MAXDEPTH]
 Matchings that make up comparator network in a form that makes searching faster. More...
 
int m_nStack [MAXDEPTH] = {0}
 Stack to remove recursion from search. More...
 
int m_nToS = 0
 Top of stack. More...
 
size_t m_nNumMatchings = 0
 Number of matchings of this size. More...
 
size_t m_nTop = 0
 Topmost level. More...
 
- Protected Attributes inherited from CSortingNetwork
CBinaryGrayCodem_pGrayCode = nullptr
 Gray code generator. More...
 
size_t m_nValue [MAXDEPTH][MAXINPUTS] = {0}
 Values at each level when sorting. More...
 
size_t m_nZeros = 0
 Number of zeros in the input. More...
 
- Protected Attributes inherited from CComparatorNetwork
size_t m_nComparator [MAXDEPTH][MAXINPUTS] = {0}
 Comparator array. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from CSettings
static void SetWidth (const size_t)
 Set width. More...
 
static void SetDepth (const size_t)
 Set depth. More...
 
- Static Protected Attributes inherited from CSettings
static size_t m_nWidth = 9
 Comparator network width. More...
 
static size_t m_nDepth = 6
 Comparator network depth. More...
 

Detailed Description

A first normal form sorting network that will be given its second level from a generator CLevel2Search that provides second level candidates unique up to symmetry.

Definition at line 38 of file 2NF.h.

Constructor & Destructor Documentation

◆ C2NF()

C2NF::C2NF ( CMatching L2Matching,
const size_t  index 
)

Constructor.

Parameters
L2MatchingLevel 2 matching.
indexLexicographic number of level 2 matching.

Definition at line 33 of file 2NF.cpp.

Member Function Documentation

◆ Backtrack()

void C2NF::Backtrack ( )
virtual

Initialize and then start a backtracking search for all sorting networks in Second Normal Form of given width and depth.

Reimplemented from CSearchable.

Definition at line 47 of file 2NF.cpp.

◆ Save()

void C2NF::Save ( )
protectedvirtual

Save a generated sorting network into a file with a suitable name. Save comparator network to a file whose name encodes number of inputs, depth, second level index, and order found. For example, an 8-input comparator network of depth 5 with second level index 99 that is the 20th sorting network found with that second level, would be saved to file w8d5x99n20.txt.

Reimplemented from CSearchable.

Definition at line 61 of file 2NF.cpp.

Member Data Documentation

◆ m_nLevel2Index

size_t C2NF::m_nLevel2Index = 0
protected

Definition at line 40 of file 2NF.h.