Por que eu devo ler este artigo:

Este artigo aborda o uso do MapReduce na solução de um problema complexo, que é melhor resolvido com a técnica de algoritmos genéticos (AG). Apesar da natureza iterativa dos AGs, com algumas adaptações é possível construir aplicações que necessitem de grande poder de processamento e que podem ser executadas de forma paralela e distribuída no modelo MapReduce. Entre os softwares que podem ser beneficiados, há algoritmos de inteligência computacional, como AGs e redes neurais, e qualquer problema de otimização que necessite encontrar boas respostas em situações que normalmente são difíceis de serem resolvidas com aplicações tradicionais em uma única máquina. Por exemplo, sistemas para identificar padrões em biometria, formulação de regras em jogos de estratégia, na busca de melhores rotas (caminhos) a serem percorridas em um conjunto de cidades, como é o caso do exemplo tratado neste artigo, entre outros.

Problemas que envolvem o tratamento de grandes conjuntos de dados têm como solução ideal o uso de um modelo de processamento paralelo e distribuído que se adapta a qualquer volume e grau de complexidade. Esse é o caso do MapReduce, uma técnica que abstrai os detalhes de paralelização e distribuição do processamento de dados, que pode ser utilizada em aplicações que necessitem dessas características, como ocorre com algumas abordagens não triviais, a exemplo do tratamento do “big data” e do processamento de algoritmos de alta complexidade e escalabilidade.

Tais algoritmos podem ser empregados em diversas situações que envolvam resolver problemas de busca e otimização, normalmente presentes em sistemas de tomada de decisão e descoberta de conhecimento. Por exemplo, escolher qual a melhor empresa para investir o capital (quantia) na bolsa de valores; solucionar problemas de agendamento e planejamento de recursos; auxiliar na organização e alocação de turmas a professores, presente na definição de grades horárias de trabalho; e qualquer situação que necessite uma boa solução (entre tantas), considerando as regras específicas para o domínio do problema a fim de alcançar o melhor resultado possível. Como podemos notar, são problemas complexos, muitas vezes de difícil solução e que envolvem significativas reduções de custos, melhorias dos tempos de processos e/ou melhor alocação dos recursos em atividade.

Como o MapReduce pode ajudar na solução desses problemas? Em essência, a resposta está na capacidade do poder de processamento paralelo e distribuído da técnica, fatores que permitem alta escalabilidade à solução.

O MapReduce é baseado no paradigma de programação funcional, adotando duas funções que dão nome ao modelo: a função map e a função reduce. Esse modelo estabelece uma abstração que permite construir aplicações com operações simples, escondendo os detalhes da paralelização. Em resumo, tais funções transformam um grande volume de dados de entrada em um conjunto resumido e agregado na saída, sendo cada função executada em uma etapa distinta. Na primeira etapa, Map, uma função de mapeamento distribui os dados em diversos nós de processamento e armazenamento. Na segunda etapa, Reduce, uma função agrega e sumariza os resultados obtidos no mapeamento, para gerar um resultado final.

A técnica MapReduce pode ser aplicada em vários campos, como o agrupamento de dados, aprendizado de máquina e visão computacional. Outro exemplo de campo que pode adotar essa técnica é o da Inteligência Computacional, em especial o dos Algoritmos Genéticos, que devem tratar uma grande base de dados (a chamada população de indivíduos) para localizar valores para uma tomada de decisão. Tais algoritmos exigem um alto custo de processamento para ser executado em uma única máquina, o que torna a técnica MapReduce ideal para ser adotada.

Com base nisso, este artigo demonstra o uso combinado da abordagem AG com MapReduce para resolver um tipo especial de problema complexo, chamado de “caixeiro viajante” (ou PCV). Este problema busca identificar os melhores caminhos para se percorrer um conjunto de cidades, visitando pelo menos uma vez cada cidade em um determinado percurso. O PCV envolve um número de combinações de caminhos de crescimento exponencial, em função do número de cidades, fato que o torna complexo para ser resolvido com algoritmos tradicionais. Para validar a técnica proposta (AGs adaptados ao modelo MapReduce), um cenário de teste foi aplicado para um conjunto de vinte cidades, o que demonstrou um bom desempenho na geração de boas respostas.

Pré-requisitos

Este tutorial foi projetado para ser executado em um computador com sistema operacional Linux, seja nativo ou rodando em uma máquina virtual (VMwar ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

Desbloqueie toda a DevMedia

  • +2000 artigos e vídeos
  • +40 trilhas sobre Front-end, Back-end, IA e muito mais
  • +5000 exercícios práticos
  • Mentorias ao vivo individuais
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora