More on signatures
This commit is contained in:
parent
740a2ab6a3
commit
f141526b66
1 changed files with 21 additions and 0 deletions
|
@ -350,6 +350,27 @@ 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.
|
||||
|
||||
\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.
|
||||
|
||||
This memoization, alongside with the exclusive use of elementary operations,
|
||||
makes the computation of a signature very fast. The computation is linear in
|
||||
the number of gates in a circuit, times the order computed; the computation is
|
||||
lazy.
|
||||
|
||||
To keep those memoized values up to date whenever the structure of the circuit
|
||||
is changed (since this is meant to be integrated in a programming language, fl,
|
||||
meaning the structure of the circuit will possibly be created, checked for
|
||||
signature, altered, then checked again), each circuit keeps track of a
|
||||
``timestamp'' of last modification, which is incremented whenever the circuit
|
||||
or its children are modified. A memoized data is always stored alongside with a
|
||||
timestamp of computation, which invalidates a previous result when needed.
|
||||
|
||||
One possible path of investigation for future work, if the computation turns
|
||||
out to be still too slow in real-world cases --- which looks unlikely ---,
|
||||
would be to try to multithread this computation.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Group equality}
|
||||
\todo{}
|
||||
|
|
Loading…
Reference in a new issue