From f141526b667967d68928adbd895cc6c3610f051b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophile=20Bastian?= Date: Sun, 20 Aug 2017 16:55:13 +0200 Subject: [PATCH] More on signatures --- report/report.tex | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/report/report.tex b/report/report.tex index 7f42016..e1be200 100644 --- a/report/report.tex +++ b/report/report.tex @@ -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{}