Você está na página 1de 23

Algoritmo gentico

Um algoritmo gentico (AG) uma tcnica de busca utilizada na cincia da computao para
achar solues aproximadas em problemas de otimizao e busca, fundamentado
principalmente pelo americano John Henry Holland. Algoritmos genticos so uma classe
particular de algoritmos evolutivos que usam tcnicas inspiradas pela biologia evolutiva como
hereditariedade, mutao, seleo natural e recombinao (ou crossing over).
ndice
1 Viso Geral
2 O que AG
3 Componentes principais
3.1 funo-objetivo
3.2 indivduo
3.3 seleo
3.4 reproduo
4 Programao Gentica
5 Bibliotecas e Frameworks para Algoritmos Genticos
6 Bibliografia
7 Ver tambm
8 Referncias
9 Ligaes externas
Viso Geral
Algoritmos Genticos (AG) so implementados como uma simulao de computador em que
uma populao de representaes abstratas de soluo selecionada em busca de solues
melhores. A evoluo geralmente se inicia a partir de um conjunto de solues criado
aleatoriamente e realizada por meio de geraes. A cada gerao, a adaptao de cada
soluo na populao avaliada, alguns indivduos so selecionados para a prxima gerao,
e recombinados ou mutados para formar uma nova populao. A nova populao ento
utilizada como entrada para a prxima iterao do algoritmo.
O que AG
Algoritmos genticos diferem dos algoritmos tradicionais de otimizao em basicamente quatro
aspectos:

Baseiam-se em uma codificao do conjunto das solues possveis, e no nos


parmetros da otimizao em si;
os resultados so apresentados como uma populao de solues e no como uma
soluo nica;
no necessitam de nenhum conhecimento derivado do problema, apenas de uma
forma de avaliao do resultado;

usam transies probabilsticas e no regras determinsticas.

funo AlgoritmoGentico(populao, funo-objetivo) sadas: indivduo


entradas: populao uma lista de indivduos
funo-objetivo uma funo que recebe um indivduo e retorna um nmero real.
repetir
lista de pais := seleo(populao, funo-objetivo)
populao := reproduo(lista de pais)
enquanto nenhuma condiao de parada for atingida
retorna o melhor indivduo da populao de acordo com a funo-objetivo
Componentes principais
funo-objetivo
A funo-objetivo o objeto de nossa otimizao. Pode ser um problema de otimizao, um
conjunto de teste para identificar os indivduos mais aptos, ou mesmo uma "caixa preta" onde
sabemos apenas o formato das entradas e nos retorna um valor que queremos otimizar. A
grande vantagem dos algoritmos genticos esta no fato de no precisarmos saber como
funciona esta funo objetivo, apenas t-la disponvel para ser aplicada aos indivduos e
comparar os resultados.
indivduo
O indivduo meramente um portador do seu cdigo gentico. O cdigo gentico uma
representao do espao de busca do problema a ser resolvido, em geral na forma de
seqncias de bits. Por exemplo, para otimizaes em problemas cujos valores de entrada so
inteiros positivos de valor menor que 255 podemos usar 8 bits, com a representao binria
normal, ou ainda uma forma de cdigo gray. Problemas com mltiplas entradas podem
combinar as entradas em uma nica seqncia de bits, ou trabalhar com mais de um
"cromossomo", cada um representando uma das entradas. O cdigo gentico deve ser uma
representao capaz de representar todo o conjunto dos valores no espao de busca, e precisa
ter tamanho finito.2
seleo
A seleo tambm outra parte chave do algoritmo. Em geral, usa-se o algoritmo de seleo
por "roleta", onde os indivduos so ordenados de acordo com a funo-objetivo e lhes so
atribudas probabilidades decrescentes de serem escolhidos - probabilidades essas
proporcionais razo entre a adequao do indivduo e a soma das adequaes de todos os
indivduos da populao. A escolha feita ento aleatoriamente de acordo com essas
probabilidades. Dessa forma conseguimos escolher como pais os mais bem adaptados, sem
deixar de lado a diversidade dos menos adaptados. Outras formas de seleo podem, ainda,
ser aplicadas dependendo do problema a ser tratado.Como exemplos pode-se citar a seleo
por "torneio" (onde so selecionados diversos pequenos subconjuntos da populao, sendo
selecionado o indivduo de maior adequao de cada um desses grupos), a seleo por
"classificao" ou "ranking" (semelhante seleo por "roleta", com a diferena de que a
probabilidade de seleo relacionada sua posio na ordenao dos indivduos da

populao e no sua adequao em si) e a seleo por "truncamento" (onde so selecinados


os N melhores indviduos da populao, descartando-se os outros).3
reproduo
A reproduo, tradicionalmente, divididas em trs etapas: acasalamento, recombinao e
mutao. O acasalamento a escolha de dois indivduos para se reproduzirem (geralmente
gerando dois descendentes para manter o tamanho populacional). A recombinao, ou
crossing-over um processo que imita o processo biolgico homnimo na reproduo
sexuada: os descendentes recebem em seu cdigo gentico parte do cdigo gentico do pai e
parte do cdigo da me. Esta recombinao garante que os melhores indivduos sejam
capazes de trocar entre si as informaes que os levam a ser mais aptos a sobreviver, e assim
gerar descendentes ainda mais aptos. Por ltimo vem as mutaes, que so feitas com
probabilidade a mais baixa possvel, e tem como objetivo permitir maior variabilidade gentica
na populao, impedindo que a busca fique estagnada em um mnimo local.4
Programao Gentica
Artigo principal: Programao gentica
Por ser um algoritmo extremamente simples e eficiente, existem diversas variaes em cima do
algoritmo gentico bsico para se obter resultados melhores ou mesmo tratar novas classes de
problemas. Uma dessas variaes a Programao gentica. Na Programao gentica os
indivduos representam pequenos programas de computador que sero avaliados de acordo
com o resultado de sua execuo. Estes programas podem ser expresses simples, como
frmulas aritmticas ou programas complexos, com operaes de lao e condicionais, tpicas
de uma linguagem de programao comum.

Teoria dos jogos


Teoria dos jogos um ramo da matemtica aplicada que estuda situaes estratgicas onde
jogadores escolhem diferentes aes na tentativa de melhorar seu retorno. Inicialmente
desenvolvida como ferramenta para compreender comportamento econmico e depois usada
pela Corporao RAND para definir estratgias nucleares, a teoria dos jogos hoje usada em
diversos campos acadmicos. A partir de 1970 a teoria dos jogos passou a ser aplicada ao
estudo do comportamento animal, incluindo evoluo das espcies por seleo natural. Devido
a interesse em jogos como o dilema do prisioneiro iterado, no qual interesses prprios e
racionais prejudicam a todos, a teoria dos jogos vem sendo aplicada nas cincias polticas,
cincias militares, tica, economia, filosofia e, recentemente, no jornalismo, rea que apresenta
inmeros e diversos jogos, tanto competitivos como cooperativos. Finalmente, a teoria dos
jogos despertou a ateno da cincia da computao que a vem utilizando em avanos na
inteligncia artificial e ciberntica.
A teoria dos jogos tornou-se um ramo proeminente da matemtica nos anos 30 do sculo XX,
especialmente depois da publicao em 1944 de The Theory of Games and Economic Behavior
de John von Neumann e Oskar Morgenstern. A teoria dos jogos distingue-se na economia na
medida em que procura encontrar estratgias racionais em situaes em que o resultado
depende no s da estratgia prpria de um agente e das condies de mercado, mas tambm
das estratgias escolhidas por outros agentes que possivelmente tm estratgias diferentes ou
objetivos comuns.
Os resultados da teoria dos jogos tanto podem ser aplicados a simples jogos de entretenimento
como a aspectos significativos da vida em sociedade. Um exemplo deste ltimo tipo de
aplicaes o Dilema do prisioneiro (esse jogo teve sua primeira anlise no ano de 1953)
popularizado pelo matemtico Albert W. Tucker, e que tem muitas implicaes no estudo da
cooperao entre indivduos. Os bilogos utilizam a teoria dos jogos para compreender e
prever o desfecho da evoluo de certas espcies. Esta aplicao da teoria dos jogos teoria
da evoluo produziu conceitos to importantes como o conceito de Estratgia
Evolucionariamente Estvel, introduzida pelo bilogo John Maynard Smith no seu ensaio Game
Theory and the Evolution of Fighting.
Na economia, a teoria dos jogos tem sido usada, segundo Joseph Lampel, para examinar a
concorrncia e a cooperao dentro de pequenos grupos de empresas. A partir da, era apenas
um pequeno passo at a estratgia. Pesquisadores de administrao de estratgia tm
procurado tirar proveito da teoria dos jogos, pois ela prov critrios valiosos quando lida com
situaes que permitem perguntas simples, no fornecendo respostas positivas ou negativas,
mas ajuda a examinar de forma sistemtica vrias permutaes e combinaes de condies
que podem alterar a situao. As questes estratgicas da vida real do origem a um nmero
imenso de variaes, impossibilitando o tratamento exaustivo de todas as possibilidades. Assim
o objetivo no resolver as questes estratgicas, mas sim ajudar a ordenar o pensamento
estratgico - provendo um conjunto de conceitos para a compreenso das manobras dinmicas
contra os concorrentes.
Em complemento ao interesse acadmico, a teoria dos jogos vem recebendo ateno da
cultura popular. Um pesquisador da Teoria dos Jogos e ganhador do Prmio de Cincias
Econmicas em Memria de Alfred Nobel, John Nash, foi sujeito, em 1998, de biografia por
Sylvia Nasar e de um filme em 2001 Uma mente brilhante. A teoria dos Jogos tambm foi tema
em 1983 do filme Jogos de Guerra.
Embora similar teoria da deciso, a teoria dos jogos estuda decises que so tomadas em
um ambiente onde vrios jogadores interagem. Em outras palavras, a teoria dos jogos estuda

as escolhas de comportamentos timos quando o custo e beneficio de cada opo no fixo,


mas depende, sobretudo, da escolha dos outros indivduos.
ndice
1 Representao dos jogos
1.1 Forma normal
1.2 Forma extensiva
2 Tipos de jogos
2.1 Simtricos e assimtricos
2.2 Soma zero e soma diferente zero
2.3 Simultneos e sequencial
2.4 Informao perfeita e informao imperfeita
2.5 Jogos infinitamente longos
3 Usos da teoria dos jogos
3.1 Economia e negcios
3.1.1 Descritivo
3.1.2 Normativo
3.2 Biologia
3.3 Cincia da computao e lgica
3.4 Cincia poltica
3.5 Filosofia
3.6 Jornalismo
4 Histria da teoria dos jogos
5 Notas
6 Bibliografia
7 Ligaes externas
Representao dos jogos
Os jogos estudados pela teoria so objetos matemticos bem definidos. Um jogo consiste de
jogadores, um conjunto de movimentos (ou estratgias) disponveis para estes jogadores, e
uma definio de pagamento para cada combinao de estratgia. Existem duas formas de
representao de jogos que so comuns na literatura.
Ver artigo principal: Lista de jogos na teoria dos jogos
Forma normal[editar

Ver artigo principal: Forma normal (teoria dos jogos)


Um jogo na forma normal
Jogador 2 escolhe esquerda

Jogador 2 escolhe direita

Jogador 1 escolhe para cima

4, 3

-1, -1

Jogador 1 escolhe para baixo

0, 0

3, 4

O jogo (ou modo estratgia) normal uma matriz a qual mostra os jogadores, estratgias, e
pagamentos (veja o exemplo a direita). Onde existem dois jogadores, um escolher as linhas e
o outro escolher as colunas. Os pagamentos so registrados no seu interior. O primeiro
nmero o pagamento recebido pelo jogador da linha (Jogador 1 em nosso exemplo); e o
segundo o pagamento para o jogador da coluna (Jogador 2 em nosso exemplo). Suponha
que o Jogador 1 obteve para cima e que o Jogador 2 obteve esquerda, ento o Jogador 1
ganha 4, e o Jogador 2 ganha 3.
Quando um jogo apresentado na forma normal, presume-se que cada jogador atue
simultaneamente ou, ao menos, sem conhecer a ao dos outros. Se os jogadores tm alguma
informao acerca das escolhas dos outros jogadores, o jogo habitualmente apresentado na
forma extensiva.
Forma extensiva[editar
Um jogo na forma extensiva
A forma extensiva de um jogo tenta capturar jogos onde a ordem importante. Os jogos aqui
so apresentados como rvores (como apresentado na figura a esquerda). Onde cada vrtice
(ou nodo) representa um ponto de deciso para um jogador. O jogador especificado por um
nmero listado no vrtice. Os pagamentos so especificados na parte inferior da rvore.
No jogo mostrado aqui, existem dois jogadores, Jogador 1 move primeiro escolhendo entre F
ou U. O Jogador 2 v o movimento do Jogador 1 e ento escolhe entre A ou R. Suponha que o
Jogador 1 escolha U e ento o Jogador 2 escolha A, ento o Jogador 1 obter 8 e o Jogador 2
obter 2.
A forma extensiva tambm pode capturar jogos que se movem simultaneamente. Isto pode ser
representado com uma linha tracejada ou um crculo que desenhado contornando dos
diferente vrtices (isto , os jogadores no sabem a qual ponto eles esto).
Tipos de jogos
Simtricos e assimtricos
Um jogo assimtrico
E

1, 2

0, 0

0, 0

1, 2

Um jogo simtrico aquele no qual os pagamentos para os jogadores em uma estratgia


particular dependem somente da estratgia escolhida, e no de quem est jogando. Se as
identidades dos jogadores puderem ser trocadas sem alterar os pagamentos obtidos pela
aplicao das suas estratgias, ento este um jogo simtrico. Muitos dos jogos 22

comumente estudados so simtricos. As representaes padres do Jogo da Galinha, do


Dilema do prisioneiro, e da caa ao veado so todos jogos simtricos. Certos acadmicos
estudam variaes assimtricas destes jogos, contudo, a maioria dos pagamentos deste jogos
so simtricos.
Os jogos assimtricos mais comuns so jogos onde existem grupos de estratgias diferentes
para cada jogador. Por exemplo, o jogo do ultimato e seu similar, o jogo do ditador tem
estratgias diferentes para ambos os jogadores. possvel, contudo, para jogos que tenham
estratgicas idnticas para ambos os jogadores, que ainda assim sejam assimtricos. Por
exemplo, o jogo representado na figura direita assimtrico, a despeito de possuir
estratgias idnticas para ambos os jogadores.
Soma zero e soma diferente zero[editar | editar cdigo-fonte]
Um jogo de seduo
Joo

Joana

Joo

2, 2

-1, 1

Joana 1, -1

3, 3

No jogo de soma-zero o benefcio total para todos os jogadores, para cada combinao de
estratgias, sempre somam zero (ou falando mais informalmente, um jogador s lucra com
base no prejuzo de outro). O Poker exemplifica um jogo de soma zero (ignorando possveis
vantagens da mesa), porque o vencedor recebe exatamente a soma das perdas de seus
oponentes. A maioria dos jogos clssicos de tabuleiro de soma zero, incluindo o Go e o
Xadrez.
Muitos dos jogos estudados pelos pesquisadores da teoria dos jogos (incluindo o famoso
Dilema do prisioneiro) so jogos de soma diferente de zero, porque algumas sadas tm
resultados combinados maior ou menor que zero. Informalmente, em jogos de soma diferente
de zero, o ganho de um dos jogadores no necessariamente corresponde perda dos outros.
possvel transformar qualquer jogo em um jogo de soma zero pela adio de jogadores
esprios (frequentemente chamados de o tabuleiro), para o qual as perdas compensam o total
alcanado pelos vencedores.
Simultneos e sequencial
Jogos simultneos so jogos onde ambos os jogadores movem-se simultaneamente, ou se
eles no se movem simultaneamente, ao menos os jogadores desconhecem previamente as
aes de seus adversrios (tornando-os efetivamente simultneos). Jogos sequenciais (ou
dinmicos) so jogos onde o prximo jogador tem conhecimento da jogada de seu antecessor.
Isto no necessita ser conhecimento perfeito a cerca de cada ao do jogador antecessor; ele
necessita de muito pouca informao. Por exemplo, um jogador deve saber que o jogador
anterior no pode realizar uma ao em particular, enquanto ele no sabe quais das outras
aes disponveis o primeiro jogador ira realmente realizar.
A diferena entre jogos simultneos e sequenciais capturada nas diferentes representaes
discutidas acima. Forma normal usada para representar jogos simultneos, e a forma
extensiva usada para representar jogos sequenciais.
Informao perfeita e informao imperfeita[editar | editar cdigo-fonte]

Um jogo de informao imperfeita (as linhas tracejadas representam a parte ignorada pelo
jogador 2)
Um importante subconjunto dos jogos sequenciais consiste dos jogos de informao perfeita.
Um jogo de informao perfeita se todos os jogadores conhecem os movimentos prvios
feitos por todos os outros jogadores. Portanto, somente jogos sequenciais podem ser jogos de
informao perfeita, uma vez que nos jogos simultneos nenhum jogador conhece a ao do
outro. A maioria dos jogos estudados na teoria dos jogos so de informao imperfeita, embora
alguns jogos interessantes sejam de informao perfeita, incluindo o jogo centipede. Muitos dos
jogos populares so jogos de informao perfeita incluindo xadrez, go e mancala.
Informao perfeita frequentemente confundida com informao completa, que um conceito
similar. Informao completa requer que cada jogador conhea as estratgias e pagamentos
dos outros jogadores, mas no necessariamente suas aes.
Jogos infinitamente longos
Por razes bvias, jogos como estudados por economista e jogadores no mundo real
geralmente terminam em um nmero finito de movimentos. Matemticos puros no esto
restritos a isto, e na teoria de conjuntos em particular estudam jogos que se prolongam por um
nmero infinito de movimentos, com os vencedores (ou prmios) no so conhecidos at aps
todos estes movimentos tenham sido completados.
O foco da ateno usualmente no tanto qual o melhor caminho para o jogador em tal jogo,
mas simplesmente se um ou outro jogador tem uma estratgia vencedora. (Isto pode ser
provado, usando o axioma da escolha, que h jogos mesmo com informao perfeita, e onde
as nicas sadas so vencedor ou perdedor para o qual nenhum jogador tem uma estratgia
vencedora.) A existncias de tais estratgias, para jogos projetados especificamente para este
fim, tem consequncias importantes na teoria descritiva dos conjuntos.
Usos da teoria dos jogos
Jogos de uma forma ou de outra so vastamente usados em diversas disciplinas acadmicas.
O uso da Teoria dos Jogos para se conhecer, previamente, o melhor resultado para os
jogadores diante das estratgias praticadas.
Economia e negcios
Os economistas tm usado a teoria dos jogos para analisarem um vasto leque de fenmenos
econmicos, incluindo leiles, barganhas, oligoplios, formao de rede social, e sistemas de
votao. Estas pesquisas usualmente se focam em um conjunto particular de estratgias
conhecidas como equilbrio no jogo. Este conceito de soluo usualmente baseado naquilo
que requerido pelas normas de racionalidade. A mais famosa destas o equilbrio de Nash.
Um conjunto de estratgias um equilbrio de Nash se cada uma representa a melhor resposta
para as outras estratgias. Ento, se todos os jogadores estiverem jogando a estratgia em um
equilbrio de Nash, eles no tero nenhum incentivo a se desviar dela, desde suas estratgias
a melhor que eles podem obter dado que os outros faam.
Os valores na matriz de ganhos (payoffs) dos jogos so geralmente definidos pela funo de
utilidade de cada jogador individual. Frequentemente na modelagem de situaes em que os
ganhos representam dinheiro, o qual presumivelmente corresponde a uma funo de utilidade
individual. Esta presuno, contudo, pode ser falha.
Um papel tpico da teoria dos jogos na economia seria a utilizao de um jogo como uma
abstrao de alguma situao econmica em particular. Uma ou mais situaes conceituais

so escolhidas, e o autor demonstra qual conjunto de estratgias apresentados pelo jogo so


um equilbrio para o tipo apropriado para o problema. Economistas sugerem dois usos
primrios para estas estratgias.
Descritivo
O primeiro uso para nos informar acerca de como as populaes humanas se comportam
realmente. Algumas escolas acreditam que se encontrando o equilbrio dos jogos ele pode
predizer como realmente populaes humanas iro se comportar quando confrontar com
situaes anlogas a do jogo estudado. Esta viso particular da teoria dos jogos possui
atualmente certa descrena. Primeiro, ela criticada porque prcondies assumidas pelos
tericos dos jogos so frequentemente violadas. Eles devem assumir que os jogadores sempre
agem com racionalidade para maximizar seus ganhos (modelo do Homos economicus), mas
seres humanos reais frequentemente agem de forma irracional, ou agem racionalmente para
maximizar o ganho de um grande grupo de pessoas (altrusmo). Tericos dos jogos respondem
comparando suas suposies aquelas usadas pelos fsicos. Portanto enquanto suas
suposies no sempre se concretizam, eles podem tratar a teoria dos jogos como uma
razovel idealizao ligado aos modelos usados por fsicos. Porem, criticas adicionais deste
usos da teoria dos jogos tem sido criadas porque alguns experimentos tem demonstrado que
indivduos no jogam por estratgias de equilbrio. Por exemplo, no jogo Centpede, Jogo da
adivinhao em 2/3 da mdia e no Jogo do ditador, as pessoas habitualmente no jogam no
equilbrio de Nash. H um debate em andamento relativo a importncia deste experimento.1 .
Alternativamente, alguns autores afirmam que o equilbrio de Nash no produz predies para
populaes humanas, mas prove uma explicao de porque populaes que jogam no
equilbrio de Nash permanecem neste estado. Contudo, a questo de como as populaes
alcanam este ponto permanece em aberto.
Alguns tericos dos jogos tm buscado teoria de jogos evolucionaria de forma a resolver estas
diferenas. Estes modelos presumem nenhuma racionalidade ou limite de racionalidade por
parte dos jogadores. A despeito do nome, a teoria dos jogos evolucionria no presume
necessariamente a evoluo natural no sentido biolgico. A Teoria dos jogos evolucionria
inclui tanto a evoluo cultural como a biolgica e tambm modelos de aprendizagem individual
(por exemplo, dinmica de jogos de fico).
Na soluo de determinados jogos, utiliza-se tambm uma explicao racional alm de
encontrar o equilbrio de Nash, encontra-se o timo de pareto na soluo destes jogos sem que
haja perda de ambos os lados dos jogadores envolvidos no jogo.
Normativo
O Dilema do Prisioneiro
Cooperate

Defect

Cooperate

1/2, 1/2 10, 0

Defect 0, 10

5, 5

Por outro lado, alguns estudiosos vem a teoria dos jogos no como uma ferramenta para
prever o comportamento humano, mas como uma sugesto de como as pessoas devem se
comportar. Desde um equilbrio de Nash de um jogo constituem umas das melhores respostas
para as aes dos outros jogadores, utilizar uma estratgia que faa parte de um equilbrio de
Nash parece apropriado. Porem, isto expem a teoria dos jogos a algumas criticas. Primeiro,
em alguns casos apropriado jogar em uma estratgia de no equilbrio se espera que os

outros jogadores adotem estratgias de no equilbrio tambm. Por exemplo, veja Jogo 2/3 na
mdia.
Segundo, o Dilema do prisioneiro apresenta outro contra-exemplo em potencial. No Dilema do
prisioneiro, cada jogador persegue seus prprios interesses levando outros jogadores em
estado pior do que eles no tivessem perseguindo seus prprios interesses. Alguns estudiosos
acreditam que isto demonstra a teoria dos jogos como uma recomendao para
comportamento.
Biologia
Hawk-Dove
Hawk

Dove

Hawk

(V-C)/2, (V-C)/2 V, 0

Dove

0, V

V/2, V/2

Diferente economista, os pagamentos para jogos na biologia so frequentemente interpretados


como uma medida da adaptao. Em acrscimo, o foco esta menos voltado para um equilbrio
que corresponde a noo de racionalidade, mas para aquilo que pode ser mantido pela foras
evolucionrias. Este o equilbrio mais bem conhecido na biologia como Estratgia
evolucionria estvel ou (EEE), que foi criada por John Maynard Smith (descrita em seu livro
em 1982). Embora sua motivao inicial no envolva qualquer pr-requisito metal do equilbrio
de Nash, cada EEE esta em um equilbrio de Nash.
Na biologia, a teoria dos jogos foi usada para compreender muitos fenmenos diferentes, Ela
foi primeiramente usada para explicar a estabilidade de aproximadamente 1:1 da razo dos
sexos. Ronald Fisher (1930) sugeriu que a razo dos sexos de 1:1 como resultados das forcas
evolucionrias atuando para que indivduos, que pode ser vista como uma tentativa de
maximizar o nmero de seus netos.
Alm disto, bilogos tm usado a teoria dos jogos evolucionrios e a EEE para explicar o
surgimento da comunicao nos animais (Maynard Smith & Harper, 2003) e para explicar a
evoluo do altrusmo recproco (Robert Trivers).
As analises dos jogos de sinalizao e outros jogos de comunicao tem proporcionado
alguma inspirao no campo da evoluo da comunicao entre animais.
Finalmente, os bilogos tm usado o Jogo da galinha para analisar o comportamento de luta e
territorialidade.
Cincia da computao e lgica
A teoria dos Jogos veio a impulsionar importantes leis na lgica e na cincia da computao.
Vrias teorias lgicas tm uma base na semntica dos jogos. Alm disso, os cientistas da
computao tm usado os jogos para modelar computao interativa.
Cincia poltica
Pesquisas na cincia poltica tambm tm usado a teoria dos jogos. Uma explicao baseada
na teoria dos jogos para a paz democrtica que o debate pblico e aberto da democracia
envia informaes claras e confiveis a respeito da sua opinio em relao a outros estados.
Em contraste, existe a dificuldade de se conhecer as intenes de lderes no democrticos, o
que afeta as concesses a serem feitas, e se as promessas iro ser mantidas. Portanto haver

desconfiana e m vontade efetuar concesses se ao menos uma das partes na disputa no


democrtica.
A teoria dos jogos tambm pode ser utilizada na poltica na formao de coalizes (alianas)
entre partidos. O poder de cada uma dessas coalizes pode ser determinado atravs do
clculo do Valor de Shapley (Shapley value).
Filosofia
A teoria dos jogos tem demonstrado vrias aplicaes na filosofia. Respondendo a dois
trabalhos de Willard van Orman Quine (1960, 1967), David Lewis (1969) usou a teoria dos
jogos para desenvolver uma explicao filosfica da conveno. Fazendo isto, ele provou a
primeira analise do senso comum e empregou nisto a analise utilizada no jogo da coordenao.
Alem disto, ele primeiro sugeriu destes pode compreender o significado em termos de jogos de
sinalizao. Esta ultima sugesto foi ampliada por vrios filsofos desde Lewis (Skyrms 1996,
Grim et al. 2004).
A caada ao veado
Veado lebre
Veado 3, 3

0, 2

Lebre 2, 0

2, 2

Na tica, alguns autores tm tentado impulsionar o projeto, comeando por Thomas Hobbes,
para derivar a moralidade do auto-interesse. Desde jogos como o Dilema do prisioneiro
apresenta um aparente conflito entre a moralidade e o auto-interesse, explicando porque a
cooperao requerida pelo auto-interesse, sendo um importante componente neste projeto.
Esta estratgia comum um componente da viso contrato social geral (para exemplos, veja
Gauthier 1987 e Kavka 1986)
Finalmente, outros autores tm tentado usar a teoria dos jogos evolucionaria de modo a
explicar o surgimento de atitudes humanas a cerca da moralidade e comportamentos animais
correspondentes. Este autor utilizou vrios jogos incluindo o Dilema do prisioneiro, a Caada ao
veado, e o jogo da barganha de Nash como provas de uma explicao para o surgimento de
atitudes a cerca da moralidade (veja, por exemplo, Skyrms 1996, 2004; Sober and Wilson
1990)
Jornalismo
A Teoria dos jogos tem muitas e importantes aplicaes no jornalismo. Um caso o jogo do off,
uma cooperao entre fonte annima e reprter ou veculo jornalstico. Outros jogos, tanto
cooperativos como competitivos, podem ser, por exemplo: veculo jornalstico x anunciante,
governo x veculo, movimento popular x veculo.
Os resultados dos jogos, esquematizados (descrio de jogadores, estratgias, ganhos e
perdas) e descritos tanto na forma normal (matrizes) ou na forma extensiva (rvores de
deciso) so capazes de demonstrar com extrema objetividade o que na maioria das vezes
somente avaliado subjetivamente, impedindo uma compreenso cientfica das interaes
estratgicas. Tambm pode ser aplicada na assessoria de imprensa.
Histria da teoria dos jogos
A primeira discusso conhecida da teoria dos jogos ocorreu em uma carta escrita por James
Waldegrave em 1713. Nesta carta, Waldegrave propem uma soluo de estratgia mista de

minmax para a verso de duas-pessoas do jogo le Her. Isto foi tudo at a publicao de Antoine
Augustin Cournot Researches into the Mathematical Principles of the Theory of Wealth em
1838 que estabeleceu os princpios tericos da teoria dos jogos. Neste trabalho Cournot
considera uma duplio e apresentava uma soluo que uma verso restrita do equilbrio de
Nash.
Embora a analise de Cournot seja mais geral do que a de Waldegrave, a teoria dos jogos
realmente no existiu como um campo unificado at que John von Neumann publicou uma
srie de trabalhos em 1928. Enquanto o matemtico Francs Borel possua alguns trabalhos
anteriores na teoria dos jogos, von Neumann pode com justia ser creditado com o inventor da
teoria dos jogos. Von Neumann foi um brilhante matemtico cujo trabalho longo alcance desde
a teoria dos conjunto at seus clculos que foram chave para o desenvolvimento bomba
atmica e de hidrognio e finalmente o seu trabalho para desenvolvimento de computadores. O
trabalho de Von Neumann culminou no livro lanado em 1944 The Theory of Games and
Economic Behavior com a co-autoria de Oskar Morgenstern. Este profundo trabalho contem o
mtodo para encontrar solues timas para jogos de duas pessoas de soma zero. Durante
este perodo, trabalhos na teoria dos jogos eram primariamente focados na teoria jogos
cooperativos, a qual analisa estratgias timas para grupos de indivduos, presumindo que eles
possam conjugar seus esforos no que diz respeito a suas estratgias adotadas
Em 1950, a primeira discusso do Dilema do prisioneiro aparece, e um experimento foi
conduzido neste jogo pela corporao RAND. Neste mesmo perodo, John Nash desenvolveu
uma definio de uma estratgia tima para jogos com vrios jogadores onde nenhuma
soluo tima ainda tinha sido definida, conhecido como equilbrio de Nash. Este equilbrio
suficientemente geral, permitindo sua utilizao na anlise de jogos no cooperativos alm dos
cooperativos.
A teoria dos jogos experimentou um atividade intensa nos anos 50, durante a qual conceitos de
jogos na forma extensiva, jogador fictcio, jogos repetidos, e o valor de Shapley foi
desenvolvido. Alm disto, as primeiras aplicaes da teoria dos jogos para filosofia e cincia
poltica ocorreram durante este perodo.
Em 1965, Reinhard Selten introduziu seu conceito de soluo do equilbrio perfeito em subjogo, o qual foi depois refinado para o equilbrio de Nash. Em 1967, John Harsanyi desenvolveu
o conceito de informao completa e jogos Bayesianos. Ele juntamente com John Nash e
Reinhard Selten ganharam o Prmio Nobel de Economia em 1994.
Na dcada de 70, a teoria dos jogos foi extensivamente aplicadas na biologia, principalmente
como resultado de John Maynard Smith e sua estratgia evolucionaria estvel. Alem disto, o
conceito de equilbrio correlato, e conhecimento comum foram introduzidos e analisados.
Em 2005, cientista da teoria dos jogos Thomas Schelling e Robert Aumann venceram o Prmio
Nobel. Schelling trabalhou no modelos dinmicos, o primeiro exemplo da teoria jogos
evolucionrio.

Funo computvel
Funes computveis so os objetos bsicos de estudo na teoria da computabilidade. Funes
computveis so uma analogia formalizada da noo intuitiva de algoritmos. Elas so usadas
para discutir a computabilidade sem se referir a algum modelo de computao concreto, como
a mquina de Turing e a mquina registradora. Entretanto, o conjunto das funes computveis
equivalente ao conjunto de funes computveis numa mquina de Turing. No entanto,
qualquer definio precisa fazer referncia a algum modelo especfico de computao, mas
todas as referncias vlidas geram a mesma classe de funes. Modelos particulares de
computabilidade que do origem ao conjunto de funes computveis so as funes Turingcomputveis e as funes -recursivas.
Antes de uma definio precisa do termo, matemticos usavam informalmente o termo
"efetivamente computvel". Desde ento, esse termo vem sendo identificado como funo
computvel. Note que a computabilidade efetiva de tais funes no implica que elas so
eficientemente computveis, isto , a execuo em certa quantidade tolervel de tempo. De
fato, pode-se mostrar que para algumas funes computveis, qualquer algoritmo que a
implemente ser ineficiente na medida em que seu tempo de execuo crescer
exponencialmente (ou mesmo superexponencialmente) de acordo com o tamanho da entrada.
Os campos da computao factvel e complexidade computacional estudam funes que
podem ser computadas eficientemente.
De acordo com a tese de Church-Turing, funes computveis so exatamente as funes que
podem ser calculadas usando um dispositivo mecnico de calculo dado uma quantidade
ilimitada de espao de armazenamento e de tempo de execuo. De maneira equivalente, a
mesma tese define que qualquer funo que possui um algoritmo computvel. Observe que
um algoritmo, neste sentido, interpretado como sendo uma sequncia de passos que uma
pessoa, com tempo ilimitado e caneta e papis infinitos, pode seguir.
Os axiomas de Blum podem ser usados para definir uma teoria de complexidade
computacional abstrato, sobre o conjunto de funes computveis. Na teoria da complexidade
computacional, o problema de se determinar a complexidade de uma funo computvel
conhecido como problema de funo.
ndice
1 Definio
2 Caractersticas
3 Conjuntos computveis
4 Linguagens formais
5 Exemplos
6 Tese de ChurchTuring
7 Funes incomputveis e problemas insolveis
8 Extenses de computabilidade
8.1 Computabilidade relativa
8.2 Teoria da recurso superior
8.3 Hipercomputao

9 Ver tambm
10 Referncias
Definio
A classe de funes computveis pode ser definida em vrios modelos de computao
diferentes, incluindo
Mquinas de Turing
Funes -recursivas
Lambda clculo
Mquinas de Post (mquinas de PostTuring e sistemas de tags).
Mquinas registradoras
Embora esses modelos utilizem diferentes representaes para as funes, suas entradas e
suas sadas, existem tradues entre quaisquer par de modelos. Durante o restante deste
artigo, sero utilizadas funes de nmeros naturais para nmeros naturais (como o caso de
funes -recursivas, por exemplo).
Cada funo computvel f leva um nmero fixo e finito de nmeros naturais como argumentos.
Como, em geral, as funes so parciais, elas podem no ser definidas para toda escolha de
entrada possvel. Se uma funo computvel for definida para uma certa entrada, ento ela
retornar um nmero natural simples como sada (esta sada pode ser interpretada como uma
lista de nmeros usando uma funo de emparelhamento). Estas funes tambm so
chamadas funes recursivas parciais. Na teoria da computabilidade, o domnio de uma funo
dado como o conjunto de todas as entradas para o qual a funo definida.
Uma funo que definida para todos os argumentos possveis chamada total. Se uma
funo computvel for total, ela ser chamada funo computvel total ou funo recursiva
total.
A notao f(x1, ..., xk) indica que a funo parcial f definida sobre os argumentos x1, ..., xk,
e a notao f(x1, ..., xk) = y indica que f definida sobre os argumentos x1, ..., xk e o valor
retornado y. O caso em que a funo f indefinida para os argumentos x1, ..., xk denotada
por f(x1, ..., xk) .
Caractersticas
Ver artigo principal: Algoritmo
A caracterstica bsica de uma funo computvel a disponibilidade de um algoritmo, um
procedimento finito que descreve como comput-la. A interpretao do significado de
procedimento e como ele usado cabe ao modelo de computao, mas cada interpretao
compartilha algumas propriedades. O fato de tais modelos proverem classes equivalentes de
funes computveis vem do fato de que cada modelo capaz de ler e reproduzir um
procedimento de qualquer outro modelo, assim como um compilador capaz de ler instrues
em uma linguagem de computador e transform-las noutra linguagem.
Herbert Enderton [1977] define as seguintes caractersticas de um procedimento para uma
funo computvel. Caractersticas similares forem definidas por Turing [1936], Rogers [1967],
entre outros.

H instrues exatas para o procedimento, numa quantidade finita. Portanto, cada funo
computvel deve ter um programa finito que descreve completamente como ele deve ser
computada.
Se o procedimento alimentado por uma k-tupla x no domnio de f, ento aps uma quantidade
finita de passos discretos o procedimento deve terminar e produzir f(x). Intuitivamente, o
procedimento executado passo a passo, com uma regra especfica para definir o que deve
ser feito em cada passo. Aps uma quantidade finita de passos, o valor da funo retornado.
Se o procedimento alimentado por uma k-tupla x que no est no domnio de f, ento o
procedimento pode executar infinitamente, nunca retornando um valor. Ou ele pode parar em
certo passo, mas no pode produzir um valor para f em x. Portanto, se um valor para f(x)
encontrado, ele deve ser correto. No usado para que se distingua um valor de retorno
incorreto porque o procedimento sempre estar correto se produzir algum resultado qualquer.
Enderton tambm lista diversas clarificaes para tais requisitos de procedimentos para
funes computveis:
Em teoria, o procedimento deve trabalhar para uma grande quantidade de argumentos. No se
assume a quantidade mxima de argumentos que podem alimentar o procedimento.
O procedimento deve retornar aps uma quantidade finita de passos para produzir um
resultado, mas pode levar uma quantidade indeterminada de passos para parar a execuo.
No se assume uma limitao de tempo.
Apesar do procedimento poder usar somente uma quantidade finita de espao de
armazenamento durante a computao, no h limitao nesse sentido. Assume-se que
espao adicional para armazenamento pode ser fornecido ao procedimento sempre que
requerido.
O campo da complexidade computacional estuda funes com limitaes previstas sobre o
tempo e/ou espao permitidos em uma computao bem sucedida.
Conjuntos computveis
Um conjunto A de nmeros naturais chamada computvel (ou ainda, recursivo ou decidvel)
se h uma funo computvel f de forma que para cada nmero n, f(n) \downarrow = 1 se n
est em A e f(n) \downarrow = 0 se n no est em A.
Um conjunto de nmeros naturais chamado computacionalmente enumervel (ou ainda,
recursivamente numervel ou semidecidvel) se h uma funo computvel f de forma que para
cada nmero n, f(n) definida se e somente se n est no conjunto. Portanto, um conjunto
computacionalmente enumervel se e somente se ele est no domnio de alguma funo
computvel. O termo enumervel usado neste contexto por conta da seguinte equivalncia de
um subconjunto no vazio B dos nmeros naturais:
B est no domnio de uma funo computvel.
B est no intervalo de uma funo computvel. Se B infinito ento a funo pode ser
assumida como injetora.
Se um conjunto B est no intervalo de uma funo f ento a funo pode ser vista como uma
enumerao de B, pois a lista f(0), f(1), \cdots incluir cada elemento de B.
Como cada relao finitria sobre os nmeros naturais pode ser identificada como um conjunto
correspondente das sequncias finitas de nmeros naturais, as noes de relao computvel

e relao computacionalmente enumervel podem ser definidas a partir dos seus anlogos
para conjuntos.
Linguagens formais
Ver artigo principal: Linguagem formal
Em teoria da computabilidade comum se considerar linguagens formais. Um alfabeto um
conjunto arbitrrio. Uma palavra sobre um alfabeto uma sequncia finita de smbolos de um
alfabeto, que podem ser usados mais de uma vez na mesma sequncia. Por exemplo, cadeias
binrias so palavras do alfabeto \{0,1\}. Uma linguagem passa a ser um subconjunto da
coleo de todas as palavras do alfabeto. Por exemplo, a coleo de todas as cadeias binrias
que contm exatamente trs elementos uma linguagem do alfabeto binrio.
Um propriedade relevante de uma linguagem formal o nvel de dificuldade requerido para
decidir se uma palavra pertence linguagem. Alguns sistemas de codificao devem ser
desenvolvidos para permitir que uma funo computvel ser alimentada por uma palavra
qualquer; isso geralmente considerado uma rotina. Uma linguagem chamada computvel
(ou ainda, recursiva ou decidvel) se h uma funo computvel f de forma que para cada
palavra w do alfabeto, f(w) \downarrow = 1 se a palavra pertence linguagem e f(w)\downarrow
= 0 se a palavra no pertence linguagem. Portanto, a linguagem computvel somente se h
um procedimento que pode computar de palavras pertencem linguagem.
Uma linguagem computacionalmente enumervel (ou ainda, recursivamente enumervel, ou
semidecidvel) se h uma funo computvel f de forma que f(w) definida se e somente se a
palavra w est na linguagem. O termo enumervel possui a mesma etimologia dos conjuntos
enumerveis dos nmeros naturais.
Exemplos
As seguintes funes so computveis:
Cada funo com um domnio finito; por exemplo, qualquer sequncia finita dos nmeros
naturais.
Cada funo constante f : Nk N, f(n1,...nk) := n.
Adio f : N2 N, f(n1,n2) := n1 + n2
A funo que d a lista de fatores primos de um nmero.
O mximo divisor comum de dois nmeros.
A identidade de Bzout, uma equao diofantina linear
Se f e g so computveis, ento tambm so computveis: f + g, f * g, f \circ g se f for unria,
max(f,g), min(f,g), arg max{y f(x)} e muitas outras combinaes.
Os exemplos a seguir ilustram que uma funo pode ser computvel mesmo se no se
conhece um algoritmo que a computa.
A funo f tal que f(n) = 1 se existe uma sequncia de pelo menos n cincos consecutivos em
uma expanso decimal de , e f(n) = 0 caso contrrio, computvel. (A funo f ou a funo
1 constante, que computvel, ou existe um k tal que f(n) = 1 se n < k e f(n) = 0 se n k. Todas
essas funes so computveis. No se sabe se existem execues arbitrariamente longas de
cincos na expanso decimal de , ento ns no sabemos qual dessas funes f. Mesmo
assim, ns sabemos que a funo f deve ser computvel.)

Cada segmento finito de uma sequncia incomputvel dos nmeros naturais (como a funo do
castor ) computvel. Por exemplo, para cada nmero natural n, existe um algoritmo que
computa uma sequncia finita (0), (1), (2), ..., (n) em contraste com o fato de que no
h algoritmo que compute a sequncia- completamente, ou seja, (n) para todo n. Portanto,
"Imprima 0, 1, 4, 6, 13" um algoritmo trivial para computar (0), (1), (2), (3), (4);
similarmente, para qualquer valor dado de n, um algoritmo existe (mesmo que ele nunca seja
conhecido ou produzido por algum) para computar (0), (1), (2), ..., (n).
Tese de ChurchTuring[editar | editar cdigo-fonte]
Ver artigo principal: Tese de Church-Turing
A tese de ChurchTuring afirma que qualquer funo computvel de um procedimento
possuindo as trs propriedades listadas acima uma funo computvel. Como essas trs
propriedades no so formalmente definidas, a tese de ChurchTuring no pode ser provada.
Os seguintes fatos so frequentemente tomados como evidncias para a tese:
Muitos modelos de computao equivalentes so conhecidos, e todos eles do a mesma
definio de funo computvel (ou uma verso mais fraca, em algumas instncias).
Nenhum modelo de computao mais forte, que geralmente considerado como sendo
efetivamente calculvel foi proposto.
A tese de ChurchTuring , algumas vezes, usada em provas para justificar que uma funo
particular computvel, dando uma descrio concreta de um procedimento para a
computao. Isto permitido porque acredita-se que todos os usos da tese podem ser
removidos pelo processo tedioso de escrever um procedimento formal para a funo em algum
modelo de computao.
Funes incomputveis e problemas insolveis
Ver artigo principal: Lista de problemas indecidveis
Toda funo computvel tem um um procedimento finito definindo instrues explcitas e noambguas sobre como computar. Alm disso, este procedimento tem que ser codificado em um
alfabeto finito usado pelo modelo computacional, assim existem somente contavelmente muitas
funes computveis. Por exemplo, funes podem ser codificadas usando uma cadeia de bits
(o alfabeto = {0, 1} ).
O conjunto dos nmeros reais incontvel. Assim, muitos nmeros reais no so computveis.
Veja nmero computvel. O conjunto de funes finitrias sobre os nmeros naturais
incontvel, por isso a maior parte no computvel. Exemplos concretos de tais funes so o
algoritmo do castor, a complexidade de Kolmogorov, ou qualquer funo que gere como sada
os dgitos de um nmero no computvel, como a constante de Chaitin.
De maneira similar, a maior parte dos subconjuntos dos nmeros naturais no computvel. O
problema da parada foi o primeiro conjunto do tipo a ser construdo. O Entscheidungsproblem
(termo alemo para "problema de deciso"), proposto por David Hilbert, perguntava se existe
um procedimento efetivo para se determinar quais declaraes matemticas (codificadas como
nmeros naturais) so verdadeiras. Turing e Church mostraram, independentemente, na
dcada de 1930 que este conjunto dos nmeros naturais no computvel. De acordo com a
tese de ChurchTuring, no h procedimento efetivo (com um algoritmo) que possa realizar tais
computaes.
Extenses de computabilidade

Computabilidade relativa
A noo de computabilidade de uma funo pode ser relativizada para um conjunto arbitrrio
de nmeros naturais A. Uma funo f definida como sendo computvel em A
(equivalentemente, A-computvel ou computvel relativa a A) quando ela satisfaz a definio
de uma funo computvel com modificaes permitindo o acesso a A como um orculo. Tal
como acontece com o conceito de uma funo computvel, a computabilidade relativa pode ter
definies equivalentes em muitos modelos de computao diferentes. Geralmente, isto
alcanado complementando o modelo de computao com uma operao primitiva adicional
que pergunta se um dado inteiro um membro de A. Ns tambm podemos falar sobre f ser
computvel em g identificando g com seu grafo.
Teoria da recurso superior
A teoria hiperaritimtica estuda aqueles conjuntos que podem ser computados a partir de um
nmero ordinal computvel de iteraes de salto de Turing do conjunto vazio. Isto equivalente
aos conjuntos definidos por ambas frmulas existenciais e universais na linguagem da
aritmtica de segunda ordem e em alguns modelos da Hipercomputao. Teorias de recurso
ainda mais gerais tm sido estudadas, como a teoria da E-recurso aonde qualquer conjunto
pode ser usado como um argumento para uma funo E-recursiva.

Hipercomputao
Embora a tese de Church-Turing afirme que as funes computveis incluem todas as funes
com algoritmos, possvel considerar classes mais amplas de funes que relaxem os
requerimentos que os algoritmos possuem. O campo da hipercomputao estuda modelos de
computao que vo alm da computao de Turing normal. Estas no violam a tese de
Church-Turing, j que elas permitem operaes que, mesmo que possam (ou no) ser
implementadas em um dispositivo fsico, no podem ser realizadas por uma pessoa usando
lpis e papel.

A Linguagem de Programao do VisuAlg (1)

Introduo

A linguagem que o VisuAlg interpreta bem simples: uma verso portuguesa dos
pseudocdigos largamente utilizados nos livros de introduo programao, conhecida como
"Portugol". Tomei a liberdade de acrescentar-lhe alguns comandos novos, com o intuito de criar
facilidades especficas para o ensino de tcnicas de elaborao de algoritmos. Inicialmente,
pensava em criar uma sintaxe muito simples e "liberal", para que o usurio se preocupasse
apenas com a lgica da resoluo dos problemas e no com as palavras-chave, pontos e
vrgulas, etc. No entanto, cheguei depois concluso de que alguma formalidade seria no s
necessria como til, para criar um sentido de disciplina na elaborao do "cdigo-fonte".

A linguagem do VisuAlg permite apenas um comando por linha: desse modo, no h


necessidade de tokens separadores de estruturas, como o ponto e vrgula em Pascal. Tambm
no existe o conceito de blocos de comandos (que correspondem ao begin e end do Pascal e
ao { e } do C), nem comandos de desvio incondicional como o goto. Na verso atual do
VisuAlg, com exceo das rotinas de entrada e sada, no h nenhum subprograma embutido,
tal como Inc(), Sqr(), Ord(), Chr(), Pos(), Copy() ou outro.

Importante: para facilitar a digitao e evitar confuses, todas as palavras-chave do VisuAlg


foram implementadas sem acentos, cedilha, etc. Portanto, o tipo de dados lgico definido
como logico, o comando se..ento..seno definido como se..entao..senao, e assim por diante.
O VisuAlg tambm no distingue maisculas e minsculas no reconhecimento de palavraschave e nomes de variveis.

Formato Bsico do Pseudocdigo e Incluso de Comentrios

O formato bsico do nosso pseudocdigo o seguinte:

algoritmo "semnome"
// Funo :
// Autor :
// Data :
// Seo de Declaraes
inicio
// Seo de Comandos

fimalgoritmo

A primeira linha composta pela palavra-chave algoritmo seguida do seu nome delimitado por
aspas duplas. Este nome ser usado como ttulo nas janelas de leitura de dados (nas futuras
verses do VisuAlg, talvez utilizemos este dado de outras formas). A seo que se segue a
de declarao de variveis, que termina com a linha que contm a palavra-chave inicio. Deste
ponto em diante est a seo de comandos, que continua at a linha em que se encontre a
palavra-chave fimalgoritmo. Esta ltima linha marca o final do pseudocdigo: todo texto
existente a partir dela ignorado pelo interpretador.

O VisuAlg permite a incluso de comentrios: qualquer texto precedido de "//" ignorado, at


se atingir o final da sua linha. Por este motivo, os comentrios no se estendem por mais de
uma linha: quando se deseja escrever comentrios mais longos, que ocupem vrias linhas,
cada uma delas dever comear por "//".

Tipos de Dados

O VisuAlg prev quatro tipos de dados: inteiro, real, cadeia de caracteres e lgico (ou
booleano). As palavras-chave que os definem so as seguintes (observe que elas no tm
acentuao):

inteiro: define variveis numricas do tipo inteiro, ou seja, sem casas decimais.
real: define variveis numricas do tipo real, ou seja, com casas decimais.
caractere: define variveis do tipo string, ou seja, cadeia de caracteres.
logico: define variveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.
O VisuAlg permite tambm a declarao de variveis estruturadas atravs da palavra-chave
vetor, como ser explicado a seguir.

Nomes de Variveis e sua Declarao

Os nomes das variveis devem comear por uma letra e depois conter letras, nmeros ou
underline, at um limite de 30 caracteres. As variveis podem ser simples ou estruturadas (na
verso atual, os vetores podem ser de uma ou duas dimenses). No pode haver duas
variveis com o mesmo nome, com a natural exceo dos elementos de um mesmo vetor.

A seo de declarao de variveis comea com a palavra-chave var, e continua com as


seguintes sintaxes:

<lista-de-variveis> : <tipo-de-dado>
<lista-de-variveis> : vetor "["<lista-de-intervalos>"]" de <tipo-de-dado>

Na <lista-de-variveis>, os nomes das variveis esto separados por vrgulas. Na <lista-deintervalos>, os <intervalo> so separados por vrgulas, e tm a seguinte sintaxe:

<intervalo>: <valor-inicial> .. <valor-final>

Na verso atual do VisuAlg, tanto <valor-inicial> como <valor-final> devem ser inteiros. Alm
disso, exige-se evidentemente que <valor-final> seja maior do que <valor-inicial>.

Exemplos:

var a: inteiro
Valor1, Valor2: real
vet: vetor [1..10] de real
matriz: vetor [0..4,8..10] de inteiro
nome_do_aluno: caractere
sinalizador: logico

Note que no h a necessidade de ponto e vrgula aps cada declarao: basta pular linha. A
declarao de vetores anloga linguagem Pascal: a varivel vet acima tem 10 elementos,
com os ndices de [1] a [10], enquanto matriz corresponde a 15 elementos com ndices [0,8],
[0,9], [0,10], [1,8], [1,9], [1,10], ... at [4,10]. O nmero total de variveis suportado pelo VisuAlg
500 (cada elemento de um vetor contado individualmente).

Constantes e Comando de Atribuio

O VisuAlg tem trs tipos de constantes:

Numricos: so valores numricos escritos na forma usual das linguagens de programao.


Podem ser inteiros ou reais. Neste ltimo caso, o separador de decimais o ponto e no a

vrgula, independente da configurao regional do computador onde o VisuAlg est sendo


executado. O VisuAlg tambm no suporta separadores de milhares.
Caracteres: qualquer cadeia de caracteres delimitada por aspas duplas (").
Lgicos: admite os valores VERDADEIRO ou FALSO.
A atribuio de valores a variveis feita com o operador <-. Do seu lado esquerdo fica a
varivel qual est sendo atribudo o valor, e sua direita pode-se colocar qualquer expresso
(constantes, variveis, expresses numricas), desde que seu resultado tenha tipo igual ao da
varivel.

Alguns exemplos de atribuies, usando as variveis declaradas acima:

a <- 3
Valor1 <- 1.5
Valor2 <- Valor1 + a
vet[1] <- vet[1] + (a * 3)
matriz[3,9] <- a/4 - 5
nome_do_aluno <- "Jos da Silva"
sinalizador <- FALSO