Book contents
- Frontmatter
- Contents
- Foreword
- Preface
- Figures
- 1 Introduction
- I Formalisms for Computation: Register Machines, Exponential Diophantine Equations, & Pure LISP
- II Program Size, Halting Probabilities, Randomness, & Metamathematics
- 5 Conceptual Development
- 6 Program Size
- 7 Randomness
- 8 Incompleteness
- 9 Conclusion
- A Implementation Notes
- B The Number of S-expressions of Size N
- Bibliography
5 - Conceptual Development
Published online by Cambridge University Press: 23 November 2009
- Frontmatter
- Contents
- Foreword
- Preface
- Figures
- 1 Introduction
- I Formalisms for Computation: Register Machines, Exponential Diophantine Equations, & Pure LISP
- II Program Size, Halting Probabilities, Randomness, & Metamathematics
- 5 Conceptual Development
- 6 Program Size
- 7 Randomness
- 8 Incompleteness
- 9 Conclusion
- A Implementation Notes
- B The Number of S-expressions of Size N
- Bibliography
Summary
The purpose of this chapter is to introduce the notion of program-size complexity. We do this by giving a smoothed-over story of the evolution of this concept, giving proof sketches instead of formal proofs, starting with program size in LISP. In Chapter 6 we will start over, and give formal definitions and proofs.
Complexity via LISP Expressions
Having gone to the trouble of defining a particularly clean and elegant version of LISP, one in which the definition of LISP in LISP really is equivalent to running the interpreter, let's start using it to prove theorems! The usual approach to program-size complexity is rather abstract, in that no particular programming language is directly visible. Eventually, we shall have to go a little bit in this direction. But we can start with a very straightforward concrete approach, namely to consider the size of a LISP expression measured by the number of characters it has. This will help to build our intuition before we are forced to use a more abstract approach to get stronger theorems. The path we shall follow is similar to that in my first paper [CHAITIN (1966,1969a)], except that there I used Turing machines instead of LISP.
So we shall now study, for any given LISP object, its program-size complexity, which is the size of the smallest program (i.e., S-expression) for calculating it. As for notation, we shall use HLISP (“information content measured using LISP”), usually abbreviated in this chapter by omitting the subscript for LISP. And we write |S| for the size in characters of an S-expression S.
- Type
- Chapter
- Information
- Algorithmic Information Theory , pp. 92 - 106Publisher: Cambridge University PressPrint publication year: 1987