Date of Award


Document Type

Thesis (Undergraduate)


Department of Computer Science

First Advisor

Thomas Cormen


In many different areas of computing, problems can arise which are too large to fit in main memory. For these problems, the I/O cost of moving data between main memory and secondary storage (for example, disks) becomes a significant bottleneck affecting the performance of the program. Since most algorithms do not take into account the size of main memory, new algorithms have been developed to optimize the number of I/O's performed. This paper details the implementation of one such algorithm, for external-memory depth-first search. Depth-first search is a basic tool for solving many problems in graph theory, and since graph theory is applicable for many large computational problems, it is important to make sure that such a basic tool is designed to avoid the bottleneck of main memory to secondary storage I/O's. The algorithm whose implementation is described in this paper is sketched out in an extended abstract by Chiang et al. We attempt to improve the given algorithm by minimizing I/O's performed, and to extend the algorithm by finding disjoint trees, and by classifying all the edges in the problem.


Originally posted in the Dartmouth College Computer Science Technical Report Series, number PCS-TR98-333.