We investigate the design of algorithms resilient to memory faults, i.e., algorithms that, despite the corruption of some memory values during their execution, are able to produce a correct output on the set of uncorrupted values. In this framework, we consider two fundamental problems: sorting and searching. In particular, we prove that any O(n log n) comparison-based sorting algorithm can tolerate at most O((n log n)1/2 ) memory faults. Furthermore, we present one comparison-based sorting algorithm with optimal space and running time that is resilient to O((n log n)1/3 ) faults. We also prove polylogarithmic lower and upper bounds on faulttolerant searching. Categories and Subject Descriptors F.2.2 [Analysis of algorithms and problem complexity]: Nonnumerical algorithms and problems--sorting and searching; E.1 [Data]: Data structures. General Terms Algorithms, reliability, theory. Keywords Combinatorial algorithms, sorting, searching, memory faults, memory models.
Irene Finocchi, Giuseppe F. Italiano