Abstract

Locally decodable codes are a class of error-correcting codes. Errorcorrecting codes help ensure reliable transmission of information over noisy channels. Such codes allow one to add redundancy, or bit strings, to messages, encoding them into longer bit strings, called codewords, in a way that the message can still be recovered even if a certain fraction of the codeword bits are corrupted. In typical applications of errorcorrecting codes the message is first partitioned into small blocks, each of which is then encoded separately. This encoding strategy allows efficient random-access retrieval of the information, since one must decode only the portion of data in which one is interested. Unfortunately, this strategy yields poor noise resilience, since, when even a single block is completely corrupted, some information is lost. In view of this limitation it would seem preferable to encode the whole message into a single codeword of an error-correcting code. Such a solution improves the robustness to noise but is hardly satisfactory, since one needs to look at the whole codeword in order to recover any particular bit of the message. Locally decodable codes are codes that simultaneously provide efficient random-access retrieval and high noise resilience by allowing reliable reconstruction of an arbitrary bit of the message from looking at only a small number of randomly chosen codeword bits. Local decodability comes at the price of certain loss in terms of code efficiency. Specifically, locally decodable codes require longer codeword lengths than their classical counterparts. This book introduces and motivates locally decodable codes, and discusses the central results of the subject, with the main focus on the recent constructions of codes from families of “matching” vectors.