sexta-feira, 30 de março de 2012

Computer art - parte 1

Olá pessoal, tudo certo? No post de hoje temos um desafio interessante para um algoritmo evolucionário: dado uma determinada imagem e um número fixo de polígonos semi-transparentes, será que conseguimos aproximar a imagem de maneira satisfatória, em um tempo razoável? Como você deve ter adivinhado, a resposta é sim, podemos! Observe as imagens abaixo:

Após 2386 gerações:

Após 17451 gerações:

Após 121076 gerações:

Imagem original:

Nas imagens acima vemos que mesmo com poucas gerações, obtemos bons resultados. Por exemplo, a imagem do centro (linha 2, coluna 2) foi formada em 8094 gerações, tomando pouco mais de 5 minutos de execução no meu MacBook Pro (2.4 GHz, 4 GB). Neste post vou mostrar como fazer isso da maneira mais simples possível, então mãos a obra!

sexta-feira, 9 de março de 2012

Othello e Minimax com poda alpha beta - parte 2

No post anterior criamos o framework básico do game e vimos (de forma bem simplificada) alguns conceitos sobre o Minimax. Neste post vamos colocar esses conceitos em prática, além de utilizar poda alfa - beta e ordenação de lances para melhorar o desempenho da engine, fundamental caso você esteja desenvolvendo para alguma plataforma mobile.

terça-feira, 6 de março de 2012

Othello e Minimax com poda alpha beta - parte 1

Olá pesssoal, tudo bem? Nesse post vamos aplicar o famoso Minimax com poda alfa-beta, um dos meus algoritmos preferidos. Como aplicação, não queria escolher algo tão simples como Tic-Tac-Toe, nem tão complexo como xadrez. Foi aí que eu descobri o jogo Othello, também conhecido como Reversi.

Nosso objetivo é criar uma engine simples, mas que jogue de maneira convincente. O interessante no Othello é que o jogo ainda não foi 'resolvido' computacionalmente, pelo menos no tabuleiro padrão 8 x 8. Além disso é extremamente simples de aprender, e as estratégias básicas são fáceis de codificar. Caso não conheça o jogo, visite o link acima e tente algumas applets, depois volte aqui!