Paulo Eduardo Azevedo Silveira

Mestre em Ciências (M.S.) - Ciência da Computação, 2003-2007
Bacharel em Ciência da Computação, 1998-2002
Departamento de Ciência da Computação (DCC),
Instituto de Matemática e Estatística (IME),
Universidade de São Paulo (USP)
contato: peas arroba ime usp br
Blog | Grupo de Usuários Java | Caelum

O bom algoritmo

"A good algorithm is like a sharp knife: it does what it is supposed to do with a minimum amount of applied effort. Using the wrong algorithm to solve a problem is like trying to cut a steak with a screwdriver: you may eventually get a digestible result, but you will expend considerably more effort than necessary, and the result is unlikely to be aesthetically pleasing." - Th. Cormen, Ch. Leiserson, R. Rivest, Introduction to Algorithms

Áreas de Interesse

Breve Histórico

Depois de formado em Ciência da Computação, tive meu primeiro contato profissional com Java na Commworld.de, na Alemanha. Voltando ao Brasil terminei a faculdade, período em que trabalhei com projetos java, como o Panda, e participei da maratona de programação junto com meu irmão, Guilherme Silveira, que recentemente esteve na final mundial do Japão. Trabalhei em algumas consultorias até parar na Sun Microsystems onde atuei como instrutor, enquanto iniciava meu mestrado junto com o professor Coelho. Nesse meio tempo ajudei a fundar o Grupo de Usuários Java, o maior fórum de Java em língua portuguesa. Atualmente atuo na Caelum, uma empresa focada em computação, consultoria e treinamento.

Cursos de verão da USP

Desde 2004 ajudo e ministro alguns dos cursos de verão da USP, no que se refere as disciplinas que envolvem Java. Em 2005 criamos o novo curso de Algoritmos em Java e finalmente teremos um material para ele.

Atualmente são diversos os instrutores dos cursos, a maioria deles envolvidos na Caelum e na USP. Você pode fazer download do material usado como referência:

Matemática e Algoritmos sobre as Dobras

Foi o tema do meu mestrado que defendi no início de 2007, orientado pelo professor doutor José Coelho de Pina.

Origami computacional é um ramo recente da ciência da computação que estuda algoritmos eficientes para problemas envolvendo dobras. Esse ramo, essencialmente, nasceu há quase 15 anos com o trabalho de Robert J. Lang em que métodos computacionais são empregados no auxílio do projeto de modelos de origami. Desde o trabalho de Lang, origami computacional tem crescido muito, devido ao esforço de vários pesquisadores.

A dissertação trata de alguns aspectos matemáticos e algorítmicos de problemas envolvendo dobras. A relação entre as construções geométricas clássicas com régua e compasso e a geometria das construções com dobras é apresentada, a complexidade computacional de alguns problemas relacionados é considerada e uma solução do problema de dobrar e cortar é descrita.

CIMG1263 retangulo-fase3 CIMG1294

Juntamente com Rafael Cosentino, Deise Aoki e o professor Coelho, fizemos uma implementação do problema de dobrar e cortar, o JOrigami.

Esse problema pode ser citado da seguinte maneira: dado um polígono como entrada, podemos dobrar o papel de tal maneira que com apenas um corte reto teremos o nosso polígono como resultado ao abrir o papel? O incrível é que isso é sempre possível, e o algoritmo gera as dobras para tal feito. David Eppstein, um dos autores do artigo em que baseamos nossa solução, blogou sobre nós. Marshal Bern, Barry Hayes e Joseph O´Rourke também nos ajudaram e trocamos emails.

Para conhecer mais dos problemas, você pode começar pelos seguintes artigos:

Também há um novo livro focado nesses assuntos, escrito pelo Demaine e pelo O´Rourke chamado Geometric Folding Algorithms: Linkages, Origami, and Polyhedra. Um capítulo inteiro é dedicado ao problema de dobrar e cortar.

Em breve disponibilizarei a versão revisada da dissertação aqui.

Colegas

Contato

peas arroba ime usp br