Redes de hopfield
Curso: Bacharelado em Ciência da Computação
Disciplina: CPTA012 – Organização e Arquitetura de Computadores
Semestre letivo: 2012.2
Professor: André Lage Freitas
Data: 04/04/13
Trabalho Prático – AB2T1
Programação para Arquiteturas Multiprocessadas
Visão geral
O trabalho consiste em estudar e utilizar técnicas de programação concorrente que permitem um melhor aproveitamento das arquiteturas multiprocessadas. O objetivo do trabalho é entender, através da experiência, como o processamento paralelo permite o aumento do desempenho das aplicações paralelizáveis.
O problema a ser resolvido
Como estudo de caso, utilizaremos a estratégia de força bruta para simular a recuperação de senhas esquecidas. O método consiste em realizar uma busca exaustiva em um universo que contém possíveis soluções para um problema. Nesse caso, o problema é descobrir quais eram as senhas esquecidas em um universo que representa o conjunto de todas as combinações de senhas possíveis.
Suponham que as senhas são alfabéticas apenas (compostas de 26 opções de letras) e que seu tamanho é fixado em oito letras. Além das senhas, foram esquecidos também quantas senhas eram válidas, por isso é fundamental checar todas as possibilidades sem parar na primeira senha encontrada.
O pseudo-código descrito a seguir descreve como deve ser o comportamento do programa:
lista senhas ← { arijwnft, kewhnnpo, zassdpll } /* parâmetros do programa */ lista senhasRecuperadas
palavra possivelSenha ← proximaCombinacao()
faça se ( senhas.contem(possivelSenha) ), então /* se a combinação é uma senha */ senhasRecuperadas.adicionar(possivelSenha) fim se
possivelSenha ← proximaCombinacao() /* carregar a próxima combinação */
enquanto ( possivelSenha != vazio ),
A operação proximaCombinacao() deverá retornar a próxima combinação dentre o universo de todas as possibilidades de senhas.
Threads
Deverá ser estudado como