𝖂𝖎ƙ𝖎𝖊

Computação: mudanças entre as edições

imported>Ellery Souza
Sem resumo de edição
imported>PauloColacino
Sem resumo de edição
Linha 82: Linha 82:


*[[Biocomputação]]
*[[Biocomputação]]
{{msg:emtraducao2}}
[[ja:計算理論]][[pl:Teoria oblicze%C5%84]][[de:Theoretische Informatik]]
'''Computation''' can be actually defined as finding a solution to a problem from given [[input]]s by means of an [[algorithm]]. This is what the ''theory of computation'', a subfield of [[computer science]] and [[mathematics]], deals with.  For thousands of years, computing was done with pen and paper, or chalk and slate, or mentally, sometimes with the aid of tables.
''The '''theory''' of [[computation]]'' began early in the twentieth century, before modern [[electronic computers]] had been invented.
At that time, [[mathematician]]s were trying to find which math problems can be solved by simple methods and which cannot.  The first step was to define what they meant by a "simple method" for solving a problem.  In other words, they needed a formal model of computation.
Several different computational models were devised by these early researchers.  One model, the [[Turing machine]], stores characters on an infinitely long tape, with one square at any given time being scanned by a read/write head.  Another model, [[recursive function|recursive functions]], uses functions and function composition to operate on numbers. The [[lambda calculus]] uses a similar approach. Still others, including [[Markov algorithm]]s and [[Post system]]s, use grammar-like rules to operate on strings.  All of these formalisms were shown to be equivalent in computational power -- that is, any computation that can be performed with one can be performed with any of the others.  They are also equivalent in power to the familiar electronic
computer, if one pretends that electronic computers have infinite memory. Indeed, it is widely believed that all "proper" formalizations of the concept of algorithm will be equivalent in power to Turing machines; this is known as the [[Church-Turing thesis]]. In general, questions of what can be computed by various machines are investigated in [[computability theory]].
The theory of computation studies these models of general computation, along with the limits of computing: Which problems are (provably) unsolvable by a computer?  (See the [[Halting Problem|halting problem]] and the [[Post correspondence problem]].) Which problems are solvable by a computer, but require such an enormously long time to compute that the solution is impractical? (See [[Presburger arithmetic]].) Can it be harder to solve a problem than to check a given solution? (See [[complexity classes P and NP]]). In general, questions concerning the time or space requirements of given problems are investigated in [[Computational complexity theory| complexity theory]].
In addition to the general computational models, some simpler computational models are useful for special, restricted applications.  [[Regular expressions]], for example, are used to specify string patterns in [[UNIX]] and in some programming languages such as [[Perl]]. Another formalism mathematically equivalent to regular expressions, [[finite state machines|Finite automata]] are used in circuit design and in some kinds of problem-solving. [[Context-free grammar|Context-free grammars]] are used to specify programming language syntax.  Non-deterministic [[pushdown automaton|pushdown automata]] are another formalism equivalent to context-free grammars. [[primitive recursive function|Primitive recursive functions]] are a defined subclass of the recursive functions.
Different models of computation have the ability to do different tasks. One way to measure the power of a computational model is to study the class of
[[formal language|formal languages]] that the model can generate; this leads to the [[Chomsky hierarchy]] of languages.
The following table shows some of the classes of problems (or languages, or
grammars) that are considered in computability theory (blue) and complexity theory (green).  If class '''X''' is a strict subset of '''Y''', then '''X''' is shown below '''Y''', with a dark line connecting them.  If '''X''' is a subset, but it is unknown whether they are equal sets, then the line is lighter and is dotted.
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr align="center">
<td colspan=2></td>
<td colspan=4><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[decision problem|Decision Problem]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=2></td>
<td>[[image:solidLine.png]]</td>
<td colspan=2></td>
<td>[[image:solidLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[recursively enumerable language|Type 0 (Recursively enumerable)]]</td></tr></table></td>
<td></td>
<td colspan=4><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[Undecidable]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=3>[[image:solidLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[Decidable language|Decidable]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=3>[[image:solidLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[EXPSPACE]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=3>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[EXPTIME]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=3>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td colspan=8><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[PSPACE]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td width=40>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[context-sensitive grammar|Type 1 (Context Sensitive)]]</td></tr></table></td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td border="1">[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td colspan=1><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[PSPACE-Complete]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[Co-NP]]</td></tr></table></td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[NP (complexity)|NP]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[BPP]]</td></tr></table></td>
<td width=10></td>
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[BQP]]</td></tr></table></td>
<td width=10></td>
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[NP-Complete]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td></td>
<td>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td colspan=6><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[P]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td>[[image:solidLine.png]]</td>
<td>[[image:dottedLine.png]]</td>
<td colspan=4></td>
<td>[[image:dottedLine.png]]</td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td colspan=2><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[Class NC|NC]]</td></tr></table></td>
<td colspan=4></td>
<td><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightGreen" width="100%" height="100%"><tr><td align="center">[[P-Complete]]</td></tr></table></td>
</tr>
<tr align="center">
<td>[[image:solidLine.png]]</td>
<td colspan=2>[[image:solidLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[context-free grammar|Type 2 (Context Free)]]</td></tr></table></td>
</tr>
<tr align="center">
<td colspan=3>[[image:solidLine.png]]</td>
</tr>
<tr align="center">
<td colspan=3><table cellpadding="0" cellspacing="0" border="1" bgcolor="lightBlue" width="100%" height="100%"><tr><td align="center">[[regular grammar|Type 3 (Regular)]]</td></tr></table></td>
</tr>
</table>
==For Further Reading==
*Garey, Michael R., and David S. Johnson: ''Computers and Intractability: A Guide to the Theory of NP-Completeness.'' New York: W. H. Freeman & Co., 1979.  The standard reference on NP-Complete problems - an important category of problems whose solutions appear to require an impractically long time to compute.
*Hein, James L:  ''Theory of Computation.''  Sudbury, MA: Jones & Bartlett, 1996.  A gentle introduction to the field, appropriate for second-year undergraduate computer science students.
*Hopcroft, John E., and Jeffrey D. Ullman: ''Introduction to Automata Theory, Languages, and Computation.''  Reading, MA: Addison-Wesley, 1979.  One of the standard references in the field.
*Taylor, R. Gregory: ''Models of Computation.''  New York: Oxford University Press, 1998.  An unusually readable textbook, appropriate for upper-level undergraduates or beginning graduate students.
*[http://www.cs.berkeley.edu/~aaronson/zoo.html The Complexity Zoo]: A huger list of complexity classes, as reference for experts.
----
This article contains some content from an [http://www.nupedia.com/article/567/ article by Nancy Tinkham], originally posted on [[Nupedia]]. This article is [[open content]].

Edição das 18h58min de 29 de março de 2004

Computação é tudo que envolve computadores.

Predefinição:Emtraducao2

ja:計算理論pl:Teoria obliczeńde:Theoretische Informatik

Computation can be actually defined as finding a solution to a problem from given inputs by means of an algorithm. This is what the theory of computation, a subfield of computer science and mathematics, deals with. For thousands of years, computing was done with pen and paper, or chalk and slate, or mentally, sometimes with the aid of tables.

The theory of computation began early in the twentieth century, before modern electronic computers had been invented.

At that time, mathematicians were trying to find which math problems can be solved by simple methods and which cannot. The first step was to define what they meant by a "simple method" for solving a problem. In other words, they needed a formal model of computation.

Several different computational models were devised by these early researchers. One model, the Turing machine, stores characters on an infinitely long tape, with one square at any given time being scanned by a read/write head. Another model, recursive functions, uses functions and function composition to operate on numbers. The lambda calculus uses a similar approach. Still others, including Markov algorithms and Post systems, use grammar-like rules to operate on strings. All of these formalisms were shown to be equivalent in computational power -- that is, any computation that can be performed with one can be performed with any of the others. They are also equivalent in power to the familiar electronic computer, if one pretends that electronic computers have infinite memory. Indeed, it is widely believed that all "proper" formalizations of the concept of algorithm will be equivalent in power to Turing machines; this is known as the Church-Turing thesis. In general, questions of what can be computed by various machines are investigated in computability theory.

The theory of computation studies these models of general computation, along with the limits of computing: Which problems are (provably) unsolvable by a computer? (See the halting problem and the Post correspondence problem.) Which problems are solvable by a computer, but require such an enormously long time to compute that the solution is impractical? (See Presburger arithmetic.) Can it be harder to solve a problem than to check a given solution? (See complexity classes P and NP). In general, questions concerning the time or space requirements of given problems are investigated in complexity theory.

In addition to the general computational models, some simpler computational models are useful for special, restricted applications. Regular expressions, for example, are used to specify string patterns in UNIX and in some programming languages such as Perl. Another formalism mathematically equivalent to regular expressions, Finite automata are used in circuit design and in some kinds of problem-solving. Context-free grammars are used to specify programming language syntax. Non-deterministic pushdown automata are another formalism equivalent to context-free grammars. Primitive recursive functions are a defined subclass of the recursive functions.

Different models of computation have the ability to do different tasks. One way to measure the power of a computational model is to study the class of formal languages that the model can generate; this leads to the Chomsky hierarchy of languages.

The following table shows some of the classes of problems (or languages, or grammars) that are considered in computability theory (blue) and complexity theory (green). If class X is a strict subset of Y, then X is shown below Y, with a dark line connecting them. If X is a subset, but it is unknown whether they are equal sets, then the line is lighter and is dotted.

Decision Problem
SolidLine.png SolidLine.png
Type 0 (Recursively enumerable)
Undecidable
SolidLine.png
Decidable
SolidLine.png
EXPSPACE
DottedLine.png
EXPTIME
DottedLine.png
PSPACE
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png DottedLine.png
Type 1 (Context Sensitive)
SolidLine.png DottedLine.png DottedLine.png DottedLine.png
PSPACE-Complete
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png
Co-NP
DottedLine.png
NP
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png DottedLine.png
BPP
BQP
NP-Complete
SolidLine.png SolidLine.png DottedLine.png DottedLine.png DottedLine.png
SolidLine.png SolidLine.png
P
SolidLine.png SolidLine.png DottedLine.png DottedLine.png
SolidLine.png
NC
P-Complete
SolidLine.png SolidLine.png
Type 2 (Context Free)
SolidLine.png
Type 3 (Regular)

For Further Reading

  • Garey, Michael R., and David S. Johnson: Computers and Intractability: A Guide to the Theory of NP-Completeness. New York: W. H. Freeman & Co., 1979. The standard reference on NP-Complete problems - an important category of problems whose solutions appear to require an impractically long time to compute.
  • Hein, James L: Theory of Computation. Sudbury, MA: Jones & Bartlett, 1996. A gentle introduction to the field, appropriate for second-year undergraduate computer science students.
  • Hopcroft, John E., and Jeffrey D. Ullman: Introduction to Automata Theory, Languages, and Computation. Reading, MA: Addison-Wesley, 1979. One of the standard references in the field.
  • Taylor, R. Gregory: Models of Computation. New York: Oxford University Press, 1998. An unusually readable textbook, appropriate for upper-level undergraduates or beginning graduate students.
  • The Complexity Zoo: A huger list of complexity classes, as reference for experts.

This article contains some content from an article by Nancy Tinkham, originally posted on Nupedia. This article is open content.

talvez você goste