|
James A. Foster
|
|
|
Lecture notes for CS 490/Ma 485This document contains notes for the following lectures
Formal Languages (28 Aug 1996, Lecture 2)We need a mathematical model of input and output, and a definition of a problem, in order to build a general, abstract mathematical models of computation. Our tool will be formal languages. We used the following definitions:
For example, assume we're using the alphabet SIGMA={a,b}. The characters are: a and b. Some words are: Lambda (the word with zero characters), aaabb, a, and aaaaaaaaaaaaaaaaa. Some languages are: {} (a set with no words), {lambda} (the set with a single word, where the word has no characters), {a,aa,aaa,aaaa,...}, and {a,b,aa,bb,ab,ba,bb}. Here are some operations on words:
Here are some operations on languages:
The power set of a set L is the set of all subsets of L. We will denote this 2L. We distinguish between a language, and a set of languages by calling the latter a class of languages. Each formal language L has an associated decision problem, namely: Given a word x, is x in L? A decision problem is solveable if there is an algorithm which solves it. Otherwise, it is unsolvable. There are many interesting questions which we can now pose and answer with this terminology. For example:
This approach characterizes "computation" as "solution of decision problems with algorithms". This seems highly artificial. We usually think of computation as a functional transformation of inputs into outputs. However, note that the problem of computing a function f(x)=f is very similar to recognizing the set of pairs {< x,y > : f(x) = y} in that if we could write a program to recognise this set, we could compute f(x) with the following algorithm:
|
|
Last Updated 01/13/2003 15:56 -0800 |