segunda-feira, 16 de março de 2015

Pensando Sobre Matemática #8

Esse post é melhor visualizado na versão para web com javascript ativado!

Mais um patrocínio gratuito da galera do MathJax, te auxiliando a exibir conteúdo matemático na web.

Hoje vamos falar um pouco mais sobre linguagens.

Mas linguagem? O que diabos isso tem a ver com matemática?

Bom vamos começar pelo fato de que a matemática é uma linguagem, e não uma ciência. As ciências se valem da linguagem matemática pois ela é muito mais sucinta para exprimir aquilo que os cientistas querem, que são basicamente medidas e relacionamentos entre elas. Quando Newton falou: F=ma
Ele só quis dizer que a força resultante em um objeto é diretamente proporcional ao produto de sua massa e sua aceleração. Só que de uma forma extremamente sucinta. Diga-se de passagem a expressão matemática ali nos diz até como a proporcionalidade entre as dimensões se comporta. Então para isso a matemática é extremamente poderosa.

Mas saibam que o operador de igualdade que relaciona duas expressões surgiu apenas no século dezesseis. Imagina como devia ser um inferno pra Euclides, Aristóteles, Arquimedes, Pitágoras, e aquela galera toda pra poder fazer matemática!

Isso tudo evoluiu. E uma coisa nova que surgiu, foi um jeito completamente diferente de se tratar linguagens. Surgiu no início do século vinte, com a parceira de quatro caras bastante influentes. Obviamente deve ter tido mais gente, mas esses quatro tiveram maior peso no que diz respeito a linguagens e a teoria da computabilidade. São eles: Alan Turing, Alonzo Church, Stephen Kleene e Emil Post. Provavelmente já haviam estudos sendo feito antes pelos irmãos Bernoulli(esses caras estão em todas!) e Ada Lovelace.

Qual é a brincadeira aqui? É um jeito até relativamente curioso de se pensar. Se você exclui os acentos, você pode dizer que todas as palavras podem ser escritas usando as vinte e seis letras do alfabeto. Agora só falta a gente dizer exatamente o que é uma palavra, o que se tornou relativamente fácil desde que a gente começou a utilizar notação posicional para os números. Se os número são um bando de algarismos posicionados uns ao lado dos outros, com uma ordem pra dizer quem é o mais significativo, palavras são letras dispostas ordenadamente umas ao lado das outras!

Daí a gente chega a uma definição matemática de alfabeto. É só um conjunto de símbolos! Um conjunto eu suponho que vocês já saibam o que é. Por exemplo: A={a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}
Como todo bom conjunto, não há elementos, repetidos. Diferentemente da palavra, que é uma sequência ordenada de símbolos do alfabeto. Note que até um símbolo sozinho pode significar uma palavra. Daí você pode ter conjuntos de palavras e pode até fazer operações com elas. Por exemplo vamos pegar dois conjuntos simples de palavras: P0={de}
P1={va,ve}
E você opera sobre eles! Similarmente a números e conjuntos! P0P1={de,va,ve}
P0P1={}
P0+P1={deva,deve}
Note aqui que isso não é uma adição e sim uma concatenação. Logo esse operador não é comutativo! Ou seja: P1+P0={vade,vede}
Isso tudo já é bastante coisa e já da pra manipular bastante algumas linguagens, porém os caras foram ainda mais fundo e criaram um operador sobre um único conjunto que é específico para o estudo de linguagens. A estrela de Kleene. Que nada mais é do que um "*", mas o efeito dela é fazer concatenações recursivas do conjunto com ele mesmo. pra exemplificar isso a gente vai precisar de um alfabeto menor. Vejamos esse alfabeto aqui: Σ={a,b}
Muito mais simples. Agora nós vamos pegar um conjunto de palavras, dentro desse alfabeto. A gente pode começar com: W={a,b}
Daí você começa a unir as concatenações do conjunto com ele mesmo. Se eu concateno W com W eu tenho: W2=W+W={aa,ab,ba,bb}
Mas a estrela de Kleene vai além! W3=W+W2={aaa,aab,aba,abb,baa,bab,bba,bbb}
Simplificando: Wi+1=W+Wi
E agora você junta tudo: Wu=i>1Wi
W*=WWu
Algumas pessoas definem a estrela de Kleene junto com uma definição a mais que é a da palavra vazia. A palavra vazia é uma palavra que não contém nenhuma letra no alfabeto. Ela não é particularmente útil aqui, mas é muito interessante quando você define gramáticas.

Essa forma de entender as palavras é o que dá as bases da computação, e fez surgir uma série de problemas muito curiosos a respeito de computação e decisão. Vale a pena dar uma explorada sobre essa forma de enxergar as coisas.

Por hoje é só!

Nenhum comentário:

Postar um comentário