First content on group equality
This commit is contained in:
parent
f141526b66
commit
1621d258f9
1 changed files with 37 additions and 1 deletions
|
@ -350,6 +350,11 @@ The ``IO adjacency'' term is an additional term in the signatures of order
|
|||
above $0$, indicating what input and output pins of the circuit group
|
||||
containing the current gate are adjacent to it.
|
||||
|
||||
The default order of signature used in all computations, unless more is useful,
|
||||
is 2, after a few benchmarks.
|
||||
|
||||
\todo{explain range of $n$}
|
||||
|
||||
\paragraph{Efficiency.} Every circuit memoizes all it can concerning its
|
||||
signature: the inner signature, the IO adjacency, the signatures of order $n$
|
||||
already computed, etc.
|
||||
|
@ -373,7 +378,33 @@ would be to try to multithread this computation.
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Group equality}
|
||||
\todo{}
|
||||
|
||||
Given two circuit group gates, the task of group equality is to determine
|
||||
whether the two groups are structurally equivalent, as discussed above.
|
||||
|
||||
Group equality itself is handled as a simple backtracking algorithm, trying to
|
||||
establish a match (an isomorphism, that is, a permutation of the gates of one
|
||||
of the groups) between the two groups given.
|
||||
|
||||
The gates of the two groups are matched by equal signatures, equal number of
|
||||
inputs and outputs, based on the signature of default order (that is, 2). A few
|
||||
checks are made, \eg{} every matching group must have the same size on both
|
||||
sides (if not, then, necessary, the two groups won't match). Then, the worst
|
||||
case of number of permutations to check is evaluated.
|
||||
|
||||
If this number is too high, the signature order will be incremented, and the
|
||||
matching groups re-created accordingly, until a satisfyingly low number of
|
||||
permutations is reached (or the diameter of the circuit is reached, meaning
|
||||
that increasing the order of signature won't have any additional impact). This
|
||||
order increase ``on-demand'' proved itself very efficient, effectively lowering
|
||||
the number of permutations examined to no more than $4$ in studied cases.
|
||||
|
||||
Once a permutation is judged worth to be examined, the group equality is run
|
||||
recursively on all its matched gates. If this step succeeds, the graph
|
||||
structure is then checked. If both steps succeeds, the permutation is correct
|
||||
and an isomorphism has been found; if not, we move on to the next permutation.
|
||||
|
||||
\todo{Anything more to tell here?}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Pattern-match}
|
||||
|
@ -381,6 +412,11 @@ would be to try to multithread this computation.
|
|||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Performance}
|
||||
|
||||
\todo{}
|
||||
|
||||
\subsection{Corner cases}
|
||||
|
||||
\todo{}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
|
Loading…
Reference in a new issue