Skip to content

Commit

Permalink
No commit message
Browse files Browse the repository at this point in the history
  • Loading branch information
- committed Jan 6, 2025
1 parent 945286c commit c0c2911
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 30 deletions.
55 changes: 25 additions & 30 deletions apd/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,35 @@

1° SEM 2025

(T) = Aula Teórica; (P) = Aula Prática


## Ementa

FUNDAMENTOS DA PROGRAMAÇÃO PARALELA

* Introdução à programação paralela e Distribuída (T)
* Conceitos basicos de concorrência (P)
* Taxonomia de arquiteturas paralelas: SISD, SIMD, MIMD e SPMD (T)
* Arquitetura de hardware para comunicação entre processadores: memória compartilhada (P)
* Introdução à programação paralela e Distribuída
* Conceitos basicos de concorrência
* Taxonomia de arquiteturas paralelas: SISD, SIMD, MIMD e SPMD
* Arquitetura de hardware para comunicação entre processadores: memória compartilhada

FUNDAMENTOS DA PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

* Memória distribuída e hierarquia de memórias (T)
* Programação com variáveis compartilhadas (P)
* Programação de processos, sincronização e monitores (T)
* Programação distribuída: passagem de mensagens (P)
* Memória distribuída e hierarquia de memórias
* Programação com variáveis compartilhadas
* Programação de processos, sincronização e monitores
* Programação distribuída: passagem de mensagens

PARADIGMAS E FERRAMENTAS DA PROGRAMAÇÃO PARALELA E DISTRIBUÍDA

* RPC e paradigmas de interação entre processos (T)
* Definição dos passos para a criação de um programa paralelo (P)
* Ferramentas para programação paralela: bibliotecas MPI (T)
* Ferramentas para programação paralela: OpenMP (P)
* RPC e paradigmas de interação entre processos
* Definição dos passos para a criação de um programa paralelo
* Ferramentas para programação paralela: bibliotecas MPI
* Ferramentas para programação paralela: OpenMP

ANÁLISE DE DESEMPENHO E DEPURAÇÃO DE PROGRAMAS PARALELOS

* Ferramentas para programação paralela: Pthreads (T)
* Compiladores paralelizadores e as linguagens Linda, Java e HPF (P)
* Análise de desempenho e depuração de programas paralelos (T)
* Exemplos de programas paralelos para aplicações específicas (P)

* Ferramentas para programação paralela: Pthreads
* Compiladores paralelizadores e as linguagens Linda, Java e HPF
* Análise de desempenho e depuração de programas paralelos
* Exemplos de programas paralelos para aplicações específicas

## Referências

Expand All @@ -55,7 +51,10 @@ ANÁLISE DE DESEMPENHO E DEPURAÇÃO DE PROGRAMAS PARALELOS
* SOBRAL, J. B. M. Apostila de introdução ao OpenMP. [S. l.: s. n.], 2017. Disponível em: https://www.inf.ufsc.br/~bosco.sobral/ensino/ine5645/Apostila_OpenMP_Bosco.pdf.
* SOBRAL, J. B. M. Programação paralela e distribuída. [S. l.]: UFSC, 2015. Disponível em: http://www.inf.ufsc.br/~bosco.sobral/ensino/ine5645/Unidade1_urian.pdf.
* TIAGO FERRETO. Programação Paralela. [S. l.: s. n.], 2006. Disponível em: https://www.inf.pucrs.br/~gustavo/disciplinas/ppd/material/Prog_Paralela.pdf.

* MATOS, R. Computação paralela. [S. l.: s. n.], 2024. Disponível em: https://www.comp.uems.br/~rubens/ppd/. Acesso em: 27 out. 2023.
* SETZER, V. W. Paralelismo com OpenMP. [S. l.: s. n.], 2024. Disponível em: https://www.ime.usp.br/~vwsetzer/mac0422/paralelismo-openmp.html. Acesso em: 27 out. 2023.
- SILVA, G. P. Arquiteturas paralelas. [S. l.: s. n.], 2024. Disponível em: https://dcc.ufrj.br/~gabriel/arqcomp2/ArqPar1.pdf. Acesso em: 27 out. 2023.
- SOUZA, J. N. de. Arquitetura de computadores e sistemas distribuídos. [S. l.: s. n.], 2024. Disponível em: http://www.di.ufpe.br/~jns/. Acesso em: 27 out. 2023.

## Artigos

Expand All @@ -65,7 +64,6 @@ ANÁLISE DE DESEMPENHO E DEPURAÇÃO DE PROGRAMAS PARALELOS
* HOARE, C. A. R. Communicating sequential processes. Communications of the ACM, v. 21, n. 8, p. 666–677, 1978. DOI 10.1145/359576.359585. Disponível em: https://dl.acm.org/doi/10.1145/359576.359585.
* STANKOVIC, J. A. Software architecture for distributed computer systems. IEEE Transactions on Software Engineering, n. 1, p. 2–21, 1982. Disponível em: https://ieeexplore.ieee.org/document/1700465.


## Videos

* ALVES FILHO, A. [MC-SD02-III] introdução à programação paralela e vetorial. [S. l.: s. n.], 2021. Disponível em: https://m.youtube.com/live/9HF_Dp9CF9A.
Expand All @@ -76,17 +74,14 @@ ANÁLISE DE DESEMPENHO E DEPURAÇÃO DE PROGRAMAS PARALELOS
* ESTRELLA, J. C. Computação paralela e distribuída. [S. l.: s. n.], 4 out. 2022. Disponível em: https://www.youtube.com/watch?v=c5MlNQTjuX4.
* FILETO, R. Sistemas distribuídos - aula 07 - chamada de procedimento remoto (RPC). [S. l.: s. n.], 29 set. 2020. Disponível em: https://www.youtube.com/watch?v=k6_W99yH_4o.
* GUBI, L. A. D. MAC0431 - introdução à computação paralela e distribuída. [S. l.: s. n.], 11 nov. 2011. Disponível em: https://www.youtube.com/watch?v=-nrTVi-2x88.
* GUEDES, D. Fundamentos de Sistemas Paralelos e Distribuídos - Classificação de sistemas paralelos e distribuídos. [S. l.: s. n.], 20 abr. 2015. Disponível em: https://www.youtube.com/watch?v=b-8E776i14Q.
*
* JULIO, E. H. Sistemas distribuídos - comunicação - parte 3 - passagem de mensagens. [S. l.: s. n.], 12 jun. 2013. Disponível em: https://www.youtube.com/watch?v=p4vW935aZ6E.
* NONATO, L. G. Introdução a programação paralela - parte 1. [S. l.: s. n.], 20 out. 2014. Disponível em: https://www.youtube.com/watch?v=z8v3r8x7iC8.
* PACHECO, P. S. An introduction to parallel programming - chapter 1. [S. l.: s. n.], 2020. Disponível em: https://www.youtube.com/watch?v=qN5jE7F9rgc.
* SILBERSCHATZ, P. B. G., Abraham; Galvin. Operating system concepts - chapter 6 - synchronization - monitors. [S. l.: s. n.], 2021. Disponível em: https://www.youtube.com/watch?v=n7-59f-YkG8.

## Curso

## *Links* de interesse

* GUEDES NETO, D. O. Fundamentos de sistemas paralelos e distribuídos. [S. l.: s. n.], 2024. Disponível em: https://homepages.dcc.ufmg.br/~dorgival/dokuwiki/doku.php?id=fundamentos_de_sistemas_paralelos_e_distribuidos. Acesso em: 27 out. 2023.
* MATOS, R. Computação paralela. [S. l.: s. n.], 2024. Disponível em: https://www.comp.uems.br/~rubens/ppd/. Acesso em: 27 out. 2023.
* SETZER, V. W. Paralelismo com OpenMP. [S. l.: s. n.], 2024. Disponível em: https://www.ime.usp.br/~vwsetzer/mac0422/paralelismo-openmp.html. Acesso em: 27 out. 2023.
* SILVA, G. P. Arquiteturas paralelas. [S. l.: s. n.], 2024. Disponível em: https://dcc.ufrj.br/~gabriel/arqcomp2/ArqPar1.pdf. Acesso em: 27 out. 2023.
* SOUZA, J. N. de. Arquitetura de computadores e sistemas distribuídos. [S. l.: s. n.], 2024. Disponível em: http://www.di.ufpe.br/~jns/. Acesso em: 27 out. 2023.
* GUEDES, Dorgival. Fundamentos de Sistemas Paralelos e Distribuídos. UFMG.
* Programa da disciplina: https://homepages.dcc.ufmg.br/~dorgival/dokuwiki/doku.php?id=fundamentos_de_sistemas_paralelos_e_distribuidos
* Vídeos: https://www.youtube.com/playlist?list=PL-blDbur9o_59jeRUU0f6NdL-l3H9EKXX
1 change: 1 addition & 0 deletions lfa/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
* Operações sobre Linguagens

* LINGUAGENS FORMAIS E GRAMÁTICAS

* Derivação
* Gramática
* Hierarquia de Chomsly
Expand Down
64 changes: 64 additions & 0 deletions lfa/respostas.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
Livro: GARCIA, A. de V.; HAEUSLER, E. H. Linguagens Formais e Autômatos. Londrina: EDA, 2017.

Respostas de alguns exercícios. As respostas foram avaliadas superficialmente e podem conter imprecisões.

## Exerc. 1, pág. 23

A alternativa correta é a d). Vamos analisar cada alternativa e explicar o porquê da 'd' ser a correta:

a) Esta alternativa é muito vaga. Dizer que ambos os conjuntos contêm elementos de A, B e C não é suficiente para provar a igualdade. Eles precisam conter exatamente os mesmos elementos.

b) Esta alternativa também é imprecisa. A frase "tem elementos de A e B ou de A e C" é confusa e não captura a lógica correta da distributividade.

c) Esta alternativa está quase correta, mas falta um passo crucial. Ela mostra que se x ∈ A ∪ (B ∩ C), então x ∈ (A ∪ B) ∩ (A ∪ C). No entanto, para provar a igualdade dos conjuntos, é necessário mostrar a implicação nos dois sentidos, ou seja, também mostrar que se x ∈ (A ∪ B) ∩ (A ∪ C), então x ∈ A ∪ (B ∩ C).

d) Esta alternativa apresenta a demonstração completa e correta. Vamos detalhá-la:

* x ∈ A ∪ (B ∩ C) equivale a x ∈ A ou x ∈ (B ∩ C): Esta é a definição de união.
* x ∈ B ∩ C equivale a dizer que x pertence a ambos, ou seja, tanto B quanto C: Esta é a definição de interseção.
* Juntando tudo, temos que x ∈ A ou x ∈ B e que x ∈ A ou x ∈ C: Substituindo a segunda equivalência na primeira, obtemos: x ∈ A ou (x ∈ B e x ∈ C). Pela distributividade da lógica, isso é equivalente a (x ∈ A ou x ∈ B) e (x ∈ A ou x ∈ C).
* x ∈ A ou x ∈ B e que x ∈ A ou x ∈ C equivale a x ∈ (A ∪ B) ∩ (A ∪ C): Esta é a definição de interseção e união aplicada ao contrário.
* Como x é arbitrário, então x ∈ A ∪ (B ∩ C) é equivalente a x ∈ (A ∪ B) ∩ (A ∪ C): Como x é um elemento genérico, a equivalência vale para todos os elementos, o que prova a igualdade dos conjuntos.

e) Esta alternativa comete um erro lógico na penúltima frase. Ela afirma "Com isso temos que x ∈ B e x ∈ C ou x ∈ A". Isso não é uma consequência lógica das afirmações anteriores. A implicação correta é (x ∈ A ou x ∈ B) e (x ∈ A ou x ∈ C), que é diferente de (x ∈ B e x ∈ C) ou x ∈ A.

Demonstração Formal Completa (como na alternativa d):

Para provar A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C), precisamos provar duas inclusões:

1. A ∪ (B ∩ C) ⊆ (A ∪ B) ∩ (A ∪ C):

* Se x ∈ A ∪ (B ∩ C), então x ∈ A ou x ∈ (B ∩ C).

* Se x ∈ A, então x ∈ (A ∪ B) e x ∈ (A ∪ C), logo x ∈ (A ∪ B) ∩ (A ∪ C).
* Se x ∈ (B ∩ C), então x ∈ B e x ∈ C. Portanto, x ∈ (A ∪ B) e x ∈ (A ∪ C), logo x ∈ (A ∪ B) ∩ (A ∪ C).

* Em ambos os casos, x ∈ (A ∪ B) ∩ (A ∪ C).

2. (A ∪ B) ∩ (A ∪ C) ⊆ A ∪ (B ∩ C):

* Se x ∈ (A ∪ B) ∩ (A ∪ C), então x ∈ (A ∪ B) e x ∈ (A ∪ C).

* Isso significa que (x ∈ A ou x ∈ B) e (x ∈ A ou x ∈ C).

* Se x ∈ A, então x ∈ A ∪ (B ∩ C).
* Se x ∉ A, então, como x ∈ (A ∪ B) e x ∈ (A ∪ C), devemos ter x ∈ B e x ∈ C. Portanto, x ∈ (B ∩ C), e consequentemente x ∈ A ∪ (B ∩ C).

* Em ambos os casos, x ∈ A ∪ (B ∩ C).

Como provamos as duas inclusões, concluímos que A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C).

Portanto, a alternativa d) é a única que apresenta a argumentação lógica completa e correta para a demonstração da igualdade.


## Exerc. 2, pág. 24

Sejam A e B conjuntos.
Assinale a alternativa verdadeira:
a) A ⊄ A ∪ ( A ∩ A )
b) Para todo o conjunto C ( B ∩ C ) ⊆ ( A ∩ C )
c) A × ( B ∪ C ) ⊄ ( A × B ) ∪ ( A × C )
d) ∅ é uma relação de A para B .
e) Se A ⊊ B e B é finito, então existe uma função injetiva f : B → A .


0 comments on commit c0c2911

Please sign in to comment.