Behind the scenes¶
There is more behind the routines which the user can see at first glance. Have a closer look at:
Dependencies Problem-Algorithm-ProxOperators¶
The solving process of a Sudoku puzzle is based on an algorithm and several proximal operators - as intended by the structure of the ProxToolbox. They are all set in the configuration, remember:
config = {
# This is the algorithm we use. RAAR and HPR will work.
'algorithm':'RAAR',
# RAAR requires 2 ProxOperators
'proxoperators':('P_diag','P_parallel'),
# P_parallel requires a sequence of projectors
'projectors':('ProjRow','ProjColumn','ProjSquare','ProjGiven'),
[..]
}
The algorithm RAAR
is contained in the Problems module and inherits from the corresponding interface Problem
.
RAAR requires two proximal operators. The chosen operators, P_diag
and P_parallel
, belong to the ProxOperators module with interface ProxOperator
.
Furthermore, P_parallel processes a sequence of projections which also inherit from the ProxOperators module’s interface. Since these four operators, ‘ProjRow’,’ProjColumn’,’ProjSquare’ and ‘ProjGiven’, work explicitly on the Sudoku data, they are implemented in the sudoku-file and do not belong to the ProxOperators module.