08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

notas de aula - Jerônimo C. Pellegrini<br />

a)Modifique o algoritmo de Strassen, produzindo um algoritmo concorrente usando<br />

mensagens assíncronas em pseudo-código, e prove que ele está correto.<br />

b)Implemente o algoritmo que você desenvolveu no item anterior.<br />

c)Faça agora uma versão síncrona do algoritmo de Strassen, e descreva-o usando o<br />

CSP.<br />

d)Prove que o algoritmo do item anterior está correto.<br />

e)Implemente o algoritmo do item (c) em alguma linguagem que suporte passagem<br />

síncrona de mensagens (ou usando uma biblioteca que permita fazê-lo).<br />

f)Modifique uma das implementações para que ela funcione <strong>com</strong> matrizes onde as<br />

entradas podem ser simbólicas, <strong>com</strong>o esta:<br />

⎡<br />

⎤<br />

x 2x a<br />

⎢<br />

⎥<br />

⎣4.0 2.5 3b⎦<br />

−x 0.0 a<br />

que poderia ser lida de um arquivo <strong>com</strong>o este:<br />

x (* 2 x) a<br />

4.0 2.5 (* 3 b)<br />

(* -1 x) 0.0 (* a 2)<br />

Nas entradas da matriz você pode permitir apenas +, -, * e /.<br />

O resultado evidentemente será outra matriz no mesmo formato de entrada, misturando<br />

símbolos e números. Por exemplo, se<br />

[ ] [ ]<br />

x 2x 1 2<br />

A =<br />

e B =<br />

4.0 2.5 −y 0<br />

então<br />

[<br />

]<br />

x − 2xy 2x<br />

AB =<br />

4 − 2.5y 8<br />

A matriz AB deve ser representada da mesma forma que os arquivos de entrada<br />

(cada posição é uma lista que poderíamos calcular usando eval):<br />

(- x (* 2 (* x y))) (* 2 x)<br />

(- 4 (* 2.5 y)) 8<br />

Não se preocupe em fatorar ou simplificar as expressões, exceto quando houver<br />

formas onde todos os elementos são números.<br />

Versão Preliminar<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

277

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!