Leaf language
In computational complexity theory, a leaf language is a method of characterizing a complexity class by formalizing what it means for a machine to "accept" an input.
Several complexity classes are typically defined in terms of a polynomial-time nondeterministic Turing machine, where each branch can either accept or reject, and the entire machine accepts or rejects as some function of the branches conditions. For example, a non-deterministic Turing machine accepts if at least one branch accepts, and rejects only if all branches reject. A co-non-deterministic Turing machine, on the other hand, accepts only if all branches accept, and rejects if any branch rejects. Many classes can be defined in this fashion.
We can then formalize this by examining the formal language associated with each acceptance condition. We assume that the tree is ordered, and read the accept/reject strings off the leaves of the computation tree. For example, the nondeterministic machine will accept if the leaf string is in the language {0, 1}*1{0, 1}*, and will reject if the leaf string is in the language 0*.
References
- Papadimitriou, Christos H. (1994). Computational Complexity. Reading, Massachusetts: Addison-Wesley. pp. 504–505. ISBN 0-201-53082-1.
- Bovet, Daniel P.; Pierluigi Crescenzi; Riccardo Silvestri (1992). "A uniform approach to define complexity classes". Theoretical Computer Science. 104 (2): 263–283. doi:10.1016/0304-3975(92)90125-Y.