Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

15
SISTEMAS DE INFORMAÇÃO SISTEMAS INTELIGENTES ADRIANO RÉGIS - 2006103696 ERIVAN DE SENA RAMOS - 2006103675 IMPLEMENTAÇÃO PROJETO LIFE

description

O desenvolvimento do presente trabalho nos levou a concluir que a vida pode ser simulada em ambientes computacionais. Sistemas Autômatos são uma forma de implementar modelos onde se espera encontrar complexidade da simplicidade. O Jogo da Vida de Conway cria um universo complicado a partir de poucas regras. Ele é interessante para biólogos, matemáticos, economistas, filósofos e outros a observar o modo como imagens complexas podem surgir de implementações de regras muito simples.

Transcript of Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

Page 1: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

SISTEMAS DE INFORMAÇÃOSISTEMAS INTELIGENTES

ADRIANO RÉGIS - 2006103696ERIVAN DE SENA RAMOS - 2006103675

IMPLEMENTAÇÃO PROJETO LIFE

FORTALEZA2008

ADRIANO RÉGIS - 2006103696

Page 2: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

ERIVAN DE SENA RAMOS - 2006103675

IMPLEMENTAÇÃO GAME OF LIFE

Trabalho acadêmico apresentado à disciplina de Sistemas Inteligentes, do curso de Sistemas de Informação da Faculdade Integrada do Ceará como requisito para a obtenção de parte da nota de AV2. Sob a orientação do Professor Cláudio Olany.

FORTALEZA2008

2

Page 3: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

SUMÁRIO

1. INTRODUÇÃO 4

2. OBJETIVO 5

3. DESENVOLVIMENTO 6

3.1 REGRAS 7

3.2 CÓDIGOS FONTE 8

4. CONCLUSÃO 11

5. BIBLIOGRAFIA 12

3

Page 4: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

1. INTRODUÇÃO

Na década de 40, um dos problemas matemáticos mais famoso era o de

achar uma máquina que fosse capaz de construir cópias de si mesma, que teve

uma solução baseada em um autômato celular extremamente engenhoso e

complicado inventado pelo renomado matemático John von Neumann. John

Conway inventou o Jogo da Vida (ou Game of Life) ao utilizar suas descobertas

anteriores relacionadas com o problema de encontrar um grupo simétrico de

esferas em 24 dimensões proposto por John Leech para simplificar a solução de

Von Neumann.

O jogo fez sua primeira aparição na edição de Outubro de 1970 da

Scientific American, na coluna de jogos matemáticos de Martin Gardner. De um

ponto de vista teórico, ele é interessante pois tem o poder de uma máquina de

Turing universal: tudo pode ser computado através de algoritmos no Jogo da Vida

de John Conway. Também era dito desde 1970 que foi destinado mais tempo de

computação ao Jogo da Vida do que à qualquer outra atividade.

O jogo fez John Conway famoso instantaneamente, mas ele também abriu

um novo campo na pesquisa matemática, ao campo dos autômatos celulares. Por

causa das analogias de Life com o aumento, redução e alteração de uma

sociedade de organismos vivos, isto pertence a uma classe crescente que é

chamada "jogos de simulação" - jogos que recriam processos do mundo-real.

Desde sua publicação, ele tem atraído muito interesse devido aos

caminhos surpreendentes que pode tomar. Life é um exemplo de auto-

organização.

4

Page 5: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

2. OBJETIVO

Este "jogo" é na realidade um jogo sem jogador, o que quer dizer que sua

evolução é determinada pelo seu estado inicial, não necessitando de nenhuma

entrada de jogadores humanos. Ele é jogado em um conjunto de células

quadradas que seguem ao infinito em todas as direções. Cada célula tem oito

"vizinhos", que são as células adjacentes, incluindo as diagonais. Cada célula

pode estar em dois estados: "viva" ou "morta". (Também são usados os termos

"ligado" e "desligado".) O estado do tabuleiro evolui e se modifica em pequenas

passagens de tempo.

Os estados de todas as células em um instante são considerados para

calcular o estado de todas as células no instante seguinte. Todas as células são

atualizadas simultaneamente. As transições dependem apenas do número de

vizinhos vivos

A idéia básica do "jogo" é começar com uma configuração simples de

células vivas (organismos) que são colocadas em um tabuleiro 2D de vários

métodos. Isto constitui a primeira geração. As "leis genéticas" de Conway para

nascimentos, mortes e sobrevivência são então aplicadas e a nova geração é

então colocada de acordo. Geração a geração os "jogador(es)" observam as

várias imagens que surgem.

É importante entender que todos os nascimentos e mortes ocorrem

simultaneamente. Juntos eles constituem uma geração ou, como podemos

chamá-los, um "instante" na história da vida completa da configuração inicial.

5

Page 6: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

3. DESENVOLVIMENTO

O presente trabalho, foi desenvolvido em VBA - Visual Basic for

Applications, linguagem derivada do Visual Basic, implementado no aplicativo

Microsoft Office Excel 2003, através macros que são executadas em resposta a

um determinado evento, utilizando as regras do jogo Life, definidas por John

Conway.

Foram desenvolvidas as seguintes macros e funções que possibilitam o

funcionamento do jogo:

Function Sobrevivencia(Boundaries As Range)

Esta funcão identifica se a célula atual deve ficar viva ou não, contando

quantas células vivas estão ao redor.

Sub VerificaVida()

Esta Macro que verifica todas as células para saber se ficarão vivas ou

mortas.

Sub JogodaVida()

Essa macro copia o conteúdo da pasta Jogo para a Temporaria, roda a macro

VerificaVida, e copia de volta o conteúdo da Temporaria para a pasta Jogo.

Sub PorGeracao()

Macro que execulta o jogo por rodada.

Sub Limpar()

Macro que limpa a tabela.

6

Page 7: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

3.1 REGRAS

As regras satisfazem a três critérios:

1. Não deve haver nenhuma imagem inicial para a qual haja uma prova

imediata ou trivial de que a população pode crescer sem limite.

2. Deve haver imagens iniciais que aparentemente crescam sem limite.

3. Deve haver imagens iniciais simples que cresçam e mudem por um

período de tempo considerável antes de chegar a um fim das possíveis formas:

I- Sumindo completamente (por superpopulação ou por ficarem muito

distantes).

II- Estacionando em uma configuração estável que se mantem imutável

para sempre, ou entrando em uma fase de oscilação na qual são repetidos

ciclos infinitos de dois ou mais períodos.

As regras as seguintes:

I - Qualquer célula viva com menos de dois vizinhos vivos morre de

solidão.

II - Qualquer célula viva com mais de três vizinhos vivos morre de

superpopulação.

III - Qualquer célula com exatamente três vizinhos vivos se torna uma

célula viva.

IV - Qualquer célula com dois vizinhos vivos continua no mesmo estado

para a próxima geração.

7

Page 8: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

3.2 CÓDIGOS FONTE

Dim continua As Integer

Function Sobrevivencia(Boundaries As Range) 'Esta funcão identifica se a

célula atual deve ficar viva ou não

Dim contador As Integer 'Conta quantas células vivas estão ao redor

contador = Boundaries(1, 1)

contador = contador + Boundaries(2, 1)

contador = contador + Boundaries(3, 1)

contador = contador + Boundaries(1, 2)

contador = contador + Boundaries(3, 2)

contador = contador + Boundaries(1, 3)

contador = contador + Boundaries(2, 3)

contador = contador + Boundaries(3, 3)

If Boundaries(2, 2) = 0 Then 'Célula atual: se for zero, está morta

If contador = 3 Then 'Se caso existir 3 células vivas ao redor, a

célula ressussita.

Sobrevivencia = 1

continua = 1 'Se continua for 0, identifica que o jogo acabou.

End If

End If

If Boundaries(2, 2) = 1 Then 'Aqui são as regras de sobrevivência para a

célula viva

If contador > 3 Then 'Se existirem mais que 3 células ao redor, morte

por superpopulação

Sobrevivencia = 0

continua = 1

ElseIf contador < 2 Then 'Se existirem menos de 2 células ao redor,

morte por solidão

Sobrevivencia = 0

continua = 1

Else

Sobrevivencia = 1 'Significa que a célula pode continuar viva.

End If

End If

End Function

8

Page 9: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

Sub VerificaVida() 'Esta Macro que verifica todas as células para saber

se ficarão vivas ou mortas, e copia o resultado para a planilha

"Temporaria" . Em cada célula, é realizada essa função, e insere como

entrada o Range de células que a cercam.

Dim contalinha As Integer 'Contador de linhas

Dim contacoluna As Integer 'Contador de colunas

contalinha = 2

Do While contalinha <= 41

contacoluna = 2

Do While contacoluna <= 41

Sheets("temporaria").Cells(contalinha, contacoluna) =

Sobrevivencia(Range(Sheets("jogo").Cells(contalinha - 1, contacoluna -

1), Sheets("jogo").Cells(contalinha + 1, contacoluna + 1)))

contacoluna = contacoluna + 1

Loop

contalinha = contalinha + 1

Loop

End Sub

Sub JogodaVida() 'Essa macro copia o conteúdo da pasta Jogo para a

Temporaria, roda a macro VerificaVida, e copia de volta o conteúdo.

continua = 1

Do While continua = 1 'continua=1 é o indicador que o jogo ainda não

acabou.

continua = 0

Application.ScreenUpdating = False

Sheets("Jogo").Range("B2:Ao41").Copy

Sheets("Temporaria").Range("B2:Ao41").PasteSpecial

Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,

Transpose:=False

Call VerificaVida 'Chama a macro VerificaVida.

Sheets("Temporaria").Range("B2:Ao41").Copy

Sheets("Jogo").Range("B2:Ao41").PasteSpecial Paste:=xlPasteValues,

Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Cells(1, 1).Select

Application.ScreenUpdating = True

Loop

End Sub

9

Page 10: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

Sub PorGeracao() 'Macro que execulta o jogo por rodada

Application.ScreenUpdating = True

Sheets("Jogo").Range("B2:Ao41").Copy

Sheets("Temporaria").Range("B2:Ao41").PasteSpecial

Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,

Transpose:=False

Call VerificaVida

Sheets("Temporaria").Range("B2:Ao41").Copy

Sheets("Jogo").Range("B2:Ao41").PasteSpecial Paste:=xlPasteValues,

Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Cells(1, 1).Select

Application.ScreenUpdating = True

End Sub

Sub Limpar() 'Macro que limpa a tabela.

Range("B2:AO41").Select

Selection.ClearContents

Range("A1").Select

End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As

Boolean)

'Alterna o valores entre 0 e 1 no duplo clique.

If Selection.Value = 1 Then

Selection.Value = 0

Else

Selection.Value = 1

End If

End Sub

1

Page 11: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

4. CONCLUSÃO

O desenvolvimento do presente trabalho nos levou a concluir que a vida

pode ser simulada em ambientes computacionais. Sistemas Autômatos são uma

forma de implementar modelos onde se espera encontrar complexidade da

simplicidade.

O Jogo da Vida de Conway cria um universo complicado a partir de

poucas regras. Ele é interessante para biólogos, matemáticos, economistas,

filósofos e outros a observar o modo como imagens complexas podem surgir de

implementações de regras muito simples.

1

Page 12: Implementação Life (Jogo da Vida) - Sistemas Autômatos - Sistemas Inteligentes

5. BIBLIOGRAFIA

GREEN, David G. Cellular Automata, 1993. Disponível em

http://life.csu.edu.au/complex/tutorials/tutorial1.html, acessado em 13/11/2008.

REGIS, Ed. Who's Got Einstein's Office?, Addison-Wesley, 1987. Disponível em

http://www.stephenwolfram.com/about-sw/interviews/87-einstein/text.html,

acessado em 13/11/2008.

Wilkipédia, a enciclopédia livre, Jogo da Vida, 2008. Disponível em

http://pt.wikipedia.org/wiki/Jogo_da_vida, acessado em 14/11/2008.

1