![]() |
Sorting Network Search
Backtracking for Small Sorting Networks
|
Second normal form searchable sorting network. More...
#include <2NF.h>
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 | |
| CBinaryGrayCode * | m_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... | |
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.
| C2NF::C2NF | ( | CMatching & | L2Matching, |
| const size_t | index | ||
| ) |
|
virtual |
Initialize and then start a backtracking search for all sorting networks in Second Normal Form of given width and depth.
Reimplemented from CSearchable.
|
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.