Sampath Kannan

Learn More
A <italic>program correctness checker</italic> is an algorithm for checking the output of a computation. This paper defines the concept of a program checker. It designs program checkers for a few specific and carefully chosen problems in the class <italic>P</italic> of problems solvable in polynomial time. It also applies methods of modern cryptography,(More)
How to represent a graph in memory is a fundamental data structuring question. In the usual representations of an <italic>n</italic>-node graph, the names of the nodes (i.e. integers from 1 to <italic>n</italic>) betray nothing about the graph itself. Indeed, the names (or labels) on the <italic>n</italic> nodes are just log<italic>n</italic> bit place(More)
We formalize a potentially rich new streaming model, the semi-streaming model, that we believe is necessary for the fruitful study of efficient algorithms for solving problems on massive graphs whose edge sets cannot be stored in memory. In this model, the input graph, G = (V,E), is presented as a stream of edges (in adversarial order), and the storage(More)
We extend the notion of program checking to include programs which alter their environment. In particular, we consider programs which store and retrieve data from memory. The model we consider allows the checker a small amount of reliable memory. The checker is presented with a sequence of requests (on-line) to a data structure which must reside in a large(More)
We describe Java-MaC, a prototype implementation of the Monitoring and Checking (MaC) architecture for Java programs. The MaC architecture provides assurance that the target program is running correctly with respect to a formal requirements specification by monitoring and checking the execution of the target program at run-time. MaC bridges the gap between(More)
Constructing evolutionary trees for species sets is a fundamental problem in computational biology. One of the standard models assumes the ability to compute distances between every pair of species, and seeks to find an edge-weighted treeT in which the distanced ij T in the tree between the leaves ofT corresponding to the speciesi andj exactly equals the(More)
We investigate the importance of space when solving problems based on graph distance in the streaming model. In this model, the input graph is presented as a stream of edges in an arbitrary order. The main computational restriction of the model is that we have limited space and therefore cannot store all the streamed data; we are forced to make(More)
We describe Java-MaC, a prototype implementation of the Monitoring and Checking (MaC) architecture for Java programs. The MaC architecture provides assurance about the correct execution of target programs at run-time. Monitoring and checking is performed based on a formal speci cation of system requirements. MaC bridges the gap between formal veri cation,(More)
We show that the class of all circuits is exactly learnable in randomized expected polynomial time using subset and superset queries. This is a consequence of the following result which we consider to be of independent interest: circuits are exactly learnable in randomized expected polynomial time with equivalence queries and the aid of an NP-oracle. We(More)