algoritmo genético

23
Algoritmo genético Um algoritmo genético (AG) é uma técnica de busca utilizada na ciência da comp achar soluções aproximadas em problemas de otimização e busca,undamentado principalmente pelo americano !ohn "enr# "olland$ Algoritmos genéticos particular de algoritmos e%oluti%os &ue usam técnicas inspiradas pela biologia hereditariedade, mutação, seleção natural e recombinação (ou crossing o%er)$ 'ndice isão Geral * + &ue é AG -omponentes principais $ unção.ob/eti%o $* indi%0duo $ seleção $1 reprodução 1 2rogramação Genética 3 4ibliotecas e 5rame6or7s para Algoritmos Genéticos 8 4ibliograia 9 er também : ;eerências < =igações externas isão Geral Algoritmos Genéticos (AG) são implementados como uma simulação de computador uma população de representações abstratas de solução é selecionada em busca de melhores$ A e%olução geralmente se inicia a partir de um con/unto d aleatoriamente e é realizada por meio de gerações$ A cada geração, a adaptação solução na população é a%aliada, alguns indi%0duos são selecionados para a pr> e recombinados ou mutados para ormar uma no%a população$ A no%a população ent utilizada como entrada para a pr>xima iteração do algoritmo$ + &ue é AG Algoritmos genéticos dierem dos algoritmos tradicionais de otimização em bas aspectos? 4aseiam.se em uma codiicação do con/unto das soluções poss0%eis par@metros da otimização em si os resultados são apresentados como uma população de soluções e não como solução Bnica não necessitam de nenhum conhecimento deri%ado do problema, apenas de um orma de a%aliação do resultado

Upload: luciano-peres

Post on 02-Nov-2015

222 views

Category:

Documents


1 download

DESCRIPTION

compilação feita do wikipédia

TRANSCRIPT

Algoritmo genticoUm 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 Geral2 O que AG3 Componentes principais3.1 funo-objetivo3.2 indivduo3.3 seleo3.4 reproduo4 Programao Gentica5 Bibliotecas e Frameworks para Algoritmos Genticos6 Bibliografia7 Ver tambm8 Referncias9 Ligaes externasViso GeralAlgoritmos 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 AGAlgoritmos 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-objetivoComponentes principaisfuno-objetivoA 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.indivduoO 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.2seleoA 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).3reproduoA 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.4Programao GenticaArtigo principal: Programao genticaPor 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 jogosTeoria 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 jogos1.1 Forma normal1.2 Forma extensiva2 Tipos de jogos2.1 Simtricos e assimtricos2.2 Soma zero e soma diferente zero2.3 Simultneos e sequencial2.4 Informao perfeita e informao imperfeita2.5 Jogos infinitamente longos3 Usos da teoria dos jogos3.1 Economia e negcios3.1.1 Descritivo3.1.2 Normativo3.2 Biologia3.3 Cincia da computao e lgica3.4 Cincia poltica3.5 Filosofia3.6 Jornalismo4 Histria da teoria dos jogos5 Notas6 Bibliografia7 Ligaes externasRepresentao dos jogosOs 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 jogosForma normal[editar Ver artigo principal: Forma normal (teoria dos jogos)Um jogo na forma normalJogador 2 escolhe esquerdaJogador 2 escolhe direitaJogador 1 escolhe para cima4, 3-1, -1Jogador 1 escolhe para baixo0, 03, 4O 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 extensivaA 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 assimtricosUm jogo assimtricoEFE1, 20, 0F0, 01, 2Um 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 seduoJooJoanaJoo2, 2-1, 1Joana1, -13, 3No 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 sequencialJogos 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 longosPor 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 jogosJogos 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 negciosOs 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.DescritivoO 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.NormativoO Dilema do PrisioneiroCooperateDefectCooperate1/2, 1/210, 0Defect0, 105, 5Por 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.BiologiaHawk-DoveHawkDoveHawk(V-C)/2, (V-C)/2V, 0Dove0, VV/2, V/2Diferente 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 lgicaA 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 polticaPesquisas 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).FilosofiaA 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 veadoVeadolebreVeado3, 30, 2Lebre2, 02, 2Na 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)JornalismoA 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 jogosA 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 adotadasEm 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 sub-jogo, 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 computvelFunes 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 Turing-computveis 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 Definio2 Caractersticas3 Conjuntos computveis4 Linguagens formais5 Exemplos6 Tese de ChurchTuring7 Funes incomputveis e problemas insolveis8 Extenses de computabilidade8.1 Computabilidade relativa8.2 Teoria da recurso superior8.3 Hipercomputao9 Ver tambm10 RefernciasDefinioA classe de funes computveis pode ser definida em vrios modelos de computao diferentes, incluindoMquinas de TuringFunes -recursivasLambda clculoMquinas de Post (mquinas de PostTuring e sistemas de tags).Mquinas registradorasEmbora 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) .CaractersticasVer artigo principal: AlgoritmoA 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 computveisUm 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 formaisVer artigo principal: Linguagem formalEm 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.ExemplosAs 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 + n2A 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 linearSe 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-TuringA 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 insolveisVer artigo principal: Lista de problemas indecidveisToda funo computvel tem um um procedimento finito definindo instrues explcitas e no-ambguas 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 computabilidadeComputabilidade relativaA 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 superiorA 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.

HipercomputaoEmbora 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 palavras-chave 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:

: : vetor "[""]" de

Na , os nomes das variveis esto separados por vrgulas. Na , os so separados por vrgulas, e tm a seguinte sintaxe:

: ..

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

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