Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
64 views

Introduction To The Theory of Computation-L1

The document provides an introduction to the theory of computation. It discusses that the theory of computation is concerned with how problems can be solved using algorithms and how efficiently they can be solved. It also describes the three main branches of the theory of computation: automata theory which uses abstract models to simplify computation, computability theory which determines whether problems are solvable, and complexity theory which studies the resources like time and space required to solve problems.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views

Introduction To The Theory of Computation-L1

The document provides an introduction to the theory of computation. It discusses that the theory of computation is concerned with how problems can be solved using algorithms and how efficiently they can be solved. It also describes the three main branches of the theory of computation: automata theory which uses abstract models to simplify computation, computability theory which determines whether problems are solvable, and complexity theory which studies the resources like time and space required to solve problems.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

Introduction to the Theory of Computation

Theory of computation (TOC) is a branch of Computer Science that is concerned


with how problems can be solved using algorithms and how efficiently they can be
solved.

Real-world computers perform computations that by nature run like mathematical


models to solve problems in systematic ways. The essence of the theory of
computation is to help develop mathematical and logical models that run
efficiently and to the point of halting. Since all machines that implement logic
apply TOC, studying TOC gives learners an insight into computer hardware and
software limitations.

Key considerations of computational problems

 What can and cannot be computed.

 Speed of such computations.

 The amount of memory in use during such computations.

Importance of Theory of computation


The theory of computation forms the basis for:

 Writing efficient algorithms that run in computing devices.

 Programming language research and their development.

 Efficient compiler design and construction.


The Theory of Computation is made up of 3 branches.

They are:

1. Automata Theory.

2. Computability Theory.

3. Complexity Theory.

Automata Theory
Mathematicians and Computer Scientists developed this theoretical computer
science branch to simplify the logic of computation by using well defined
abstract computational devices (models).
Computability theory
The Computability theory defines whether a problem is “solvable” by any
abstract machine. Some problems are computable while others are not.

Computation is done by various computation models depending on the nature


of the problem at hand, examples of these machines are: the Turing machine,
Finite state machines, and many others.
Complexity theory
This theoretical computer science branch is all about studying the cost of
solving problems while focusing on resources (time & space) needed as the
metric. The running time of an algorithm varies with the inputs and usually
grows with the size of the inputs.

Measuring Complexity

Measuring complexity involves an algorithm analysis to determine how much


time it takes while solving a problem (time complexity). To evaluate an
algorithm, a focus is made on relative rates of growth as the size of the input
grows.

Since the exact running time of an algorithm often is a complex expression,


we usually just estimate it. We measure an algorithm’s time requirement as a
function of the input size (n) when determining the time complexity of an
algorithm.

As T(n), the time complexity is expressed using the Big O notation where


only the highest order term in the algebraic expressions are considered while
ignoring constant values.

The common running times when analyzing algorithms are:

 O(1) - Constant time or constant space regardless of the input size.

 O(n) - Linear time or linear space, where the requirement increases


uniformly with the size of the input.
 O(log n) - Logarithmic time, where the requirement increases in a
logarthimic nature.

 O(n^2) - Quadratic time, where the requirement increases in a quadratic


nature.

This analysis is based on 2 bounds that can be used to define the cost of each
algorithm.

They are:

1. Upper (Worst Case Scenario)

2. Lower (Best Case Scenario)

The major classifications of complexities include:

 Class P: The class P consists of those problems that are solvable in


polynomial time. These are problems that can be solved in time O(n^k)
for some constant k where n is the input size to the problem. It is
devised to capture the notion of efficient computation.

 Class NP: It forms the class of all problems whose solution can be
achieved in polynomial time by non-deterministic Turing machine. NP
is a complexity class used to classify decision problems.

You might also like