Incremental evaluation of computational circuits

The incremental circuit value problem arises in diverse interactive computational problems, including the semantic checking done by structure-based editors and such tasks as timing analysis performed by computeraided design systems. An efficient incremental algorithm for updating the values of gates in a circuit (after a change in circuit parameters and/or topology) would have many uses. Ideally, the time to process the change should be polynomially bounded in terms of the size of the change rather than the size of the entire circuit. This ided has been obtained by others in special cases, but this paper shows that the general problem is Q(26) under one reasonable model of incremental computation, where 6 is an appropriate measure of the size of the change. On the other hand, this paper also shows that there is an O(r2 logy) algorithm for the related problem of maintaining a correct assignment of priorities to nodes in a directed acycJic graph, where y is an appropriate measure of the size of the priority change. This leads to an O(y2 logy + S log 6) algorithm for the incremental circuit value problem. The algorithm solves the problem without restricting the circuits or how they may change; it even tests for the accidental introduction of cycles when changing topology.