A bounded-space tree traversal algorithm
Information Processing Letters
The power of a pebble: exploring and mapping directed graphs
STOC '98 Proceedings of the thirtieth annual ACM symposium on Theory of computing
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Backing up in singly linked lists
STOC '99 Proceedings of the thirty-first annual ACM symposium on Theory of computing
Synopsis data structures for massive data sets
Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms
Reducing sweep time for a nearly empty heap
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Password authentication with insecure communication
Communications of the ACM
An efficient machine-independent procedure for garbage collection in various list structures
Communications of the ACM
The BiBa one-time signature and broadcast authentication protocol
CCS '01 Proceedings of the 8th ACM conference on Computer and Communications Security
Maintaining stream statistics over sliding windows: (extended abstract)
SODA '02 Proceedings of the thirteenth annual ACM-SIAM symposium on Discrete algorithms
Advances in Pebbling (Preliminary Version)
Proceedings of the 9th Colloquium on Automata, Languages and Programming
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
PayWord and MicroMint: Two Simple Micropayment Schemes
Proceedings of the International Workshop on Security Protocols
Efficient pebbling for list traversal synopses
ICALP'03 Proceedings of the 30th international conference on Automata, languages and programming
Almost optimal hash sequence traversal
FC'02 Proceedings of the 6th international conference on Financial cryptography
Forward-secure signatures with fast key update
SCN'02 Proceedings of the 3rd international conference on Security in communication networks
Fractal Merkle tree representation and traversal
CT-RSA'03 Proceedings of the 2003 RSA conference on The cryptographers' track
LTS: the list-traversal synopses system
NGITS'06 Proceedings of the 6th international conference on Next Generation Information Technologies and Systems
LTS: the list-traversal synopses system
NGITS'06 Proceedings of the 6th international conference on Next Generation Information Technologies and Systems
Hi-index | 5.23 |
We show how to support efficient back traversal in a unidirectional list, using small memory and with essentially no slowdown in forward steps. Using O(lgn) memory for a list of size n, the i'th back-step from the farthest point reached so far takes O(lgi) time in the worst case, while the overhead per forward step is at most @e for arbitrary small constant @e0. An arbitrary sequence of forward and back steps is allowed. A full trade-off between memory usage and time per back-step is presented: k vs. kn^1^/^k and vice versa. Our algorithms are based on a novel pebbling technique which moves pebbles on a virtual binary, or n^1^/^k-ary, tree that can only be traversed in a pre-order fashion. The compact data structures used by the pebbling algorithms, called list traversal synopses, extend to general directed graphs, and have other interesting applications, including memory efficient hash-chain implementation. Perhaps the most surprising application is in showing that for any program, arbitrary rollback steps can be efficiently supported with small overhead in memory, and marginal overhead in its ordinary execution. More concretely: let P be a program that runs for at most T steps, using memory of size M. Then, at the cost of recording the input used by the program, and increasing the memory by a factor of O(lgT) to O(MlgT), the program P can be extended to support an arbitrary sequence of forward execution and rollback steps: the i'th rollback step takes O(lgi) time in the worst case, while forward steps take O(1) time in the worst case, and 1+@e amortized time per step.