MapReduce Mapeando e reduzindo

Tamanho: px
Começar a partir da página:

Download "MapReduce Mapeando e reduzindo"

Transcrição

1 MapReduce Mapeando e reduzindo Prof. Fabrício Olivetti de França Universidade Federal do ABC

2 Motivação Vimos até então que nosso maior problema é a quantidade de dados. O processamento não pode ser distribuído se não pudermos distribuir os dados.

3 Motivação Como extrair informações dos dados tendo apenas uma visão local (parte dos dados) mas tendo a possibilidade de mesclar essa informação em uma visão global?

4 Ordenando dados Um fato comum a muitos algoritmos de ordenação de dados é que eles estão limitados a uma complexidade computacional O(nlogn). Isso porque eles se baseiam em comparação par a par.

5 Ordenando dados Mas existem algumas técnicas que conseguem superar essa limitação! Uma delas é a Bucket Sort que utiliza o princípio da casa dos pombos.

6 Princípio da Casa dos Pombos Imaginem que temos 1 pombo e uma casa.

7 Princípio da Casa dos Pombos É fácil alocar esse pombo nessa casa.

8 Princípio da Casa dos Pombos Da mesma forma se temos dois pombos e duas casas.

9 Princípio da Casa dos Pombos Ou n pombos e n casas.

10 Princípio da Casa dos Pombos Mas se tivermos n pombos e m casas, com n>m?????

11 Princípio da Casa dos Pombos Nesse caso podemos dizer que pelo menos 1 pombo terá que dividir casa com outro!

12 Princípio da Casa dos Pombos Mas o que isso tem a ver com ordenação...e com nosso problema de distribuição de dados?

13 Princípio da Casa dos Pombos Imagine que temos um monte de pombos.

14 Princípio da Casa dos Pombos E queremos dividi-los em machos e fêmeas.

15 Princípio da Casa dos Pombos Mas para saber se são machos ou fêmeas, devemos comparar com pombos da mesma espécie.

16 Princípio da Casa dos Pombos Digamos que temos 3 espécies diferentes...

17 Princípio da Casa dos Pombos...devemos comparar cada pombo com todos os outros?

18 Princípio da Casa dos Pombos Mas, nós sabemos que cada espécie come uma fruta diferente.

19 Princípio da Casa dos Pombos Se colocarmos cada fruta em uma casa diferente, atrairemos pombos da mesma espécie para as mesmas casas.

20 Princípio da Casa dos Pombos Se colocarmos cada fruta em uma casa diferente, atrairemos pombos da mesma espécie para as mesmas casas.

21 Princípio da Casa dos Pombos Matematicamente aplicamos uma função f(x), onde x é um pombo, que retorna a casa que o pombo pertence. f(x) f(x) f(x)

22 Princípio da Casa dos Pombos Ou seja, temos uma função que mapeia nossos objetos para o lugar deles. f(x) f(x) f(x)

23 Princípio da Casa dos Pombos Em cada casa, fazemos a comparação entre os pombos para determinar quem é macho e quem é fêmea. f(x) f(x) f(x)

24 Princípio da Casa dos Pombos Retiramos os pombos da casa já separados.

25 Princípio da Casa dos Pombos Fazemos as operações dentro das casas mas reduzimos os dados para fora delas.

26 Princípio da Casa dos Pombos Bom, acabamos de ordenar os pombos.

27 Princípio da Casa dos Pombos Com 9 pombos, fizemos 9 operações de mapeamento. Em cada casa fizemos 3 operações.

28 Princípio da Casa dos Pombos Ao todo fizemos 18 operações, menos do que as 36 na ordenação ingênua.

29 Bucket Sort Digamos que temos 20 bolinhas numeradas de 1 a 20 e queremos ordená-las

30 Bucket Sort Vamos fazer isso utilizando 5 baldes (ao invés de casas)

31 Bucket Sort Primeiro vamos definir quais números devem ir em cada balde!

32 Bucket Sort Primeiro vamos definir quais números devem ir em cada balde! a 4 5 a 8 9 a a a 20

33 Bucket Sort Nossa função pode ser f(x) = floor((x-1) / 4) a 4 5 a 8 9 a a a 20

34 Bucket Sort No primeiro passo, aplicamos f(x) em cada elemento e jogamos no balde correto

35 Bucket Sort Em cada balde ordenamos utilizando qualquer método de ordenação

36 Bucket Sort Retiramos os números dos baldes na ordem correta e concatenamos o resultado de cada balde

37 Bucket Sort Fizemos um total de 20 operações para mapear os números e 5*6=30 operações para ordenar no balde

38 Bucket Sort 50 operações contra cerca de 60 com n.logn ou 2500 em n

39 Bucket Sort Mas reparem que nossa função de mapeamento dividiu nossos dados. Essa divisão permitiu que trabalhássemos com apenas parte dos dados de forma independente sem afetar o resultado final.

40 MapReduce O mapeamento dos dados, chamado de map e a redução dos conjuntos, chamado reduce, nos permite trabalhar com grandes quantias de dados de forma paralela sem alterar a saída do algoritmo.

41 MapReduce Essas funções já são velhas conhecidas de quem programa em linguagem funcional. O x da questão está em criar essas funções map e reduce para executar nossa tarefa.

42 Sistemas de Arquivos Distribuídos Antes de aprendermos os conceitos de MapReduce vamos entender como funciona a rede de servidores para lidar com grande quantidade de dados.

43 Sistemas de Arquivos Distribuídos Um sistema de arquivos distribuídos geralmente é composto por vários racks de servidores em gavetas.

44 Sistemas de Arquivos Distribuídos Os computadores de cada rack são interligados por uma rede Gigabit.

45 Sistemas de Arquivos Distribuídos E os racks são interligados por um switch ou roteador.

46 Sistemas de Arquivos Distribuídos Em casos que temos uma grande massa de dados sendo adquiridos a cada instante, faz-se necessário tal estrutura. Porém, muitas máquinas significa uma maior chance de falhas.

47 Sistemas de Arquivos Distribuídos Note que esse tipo de sistema só faz sentido quando temos algo além dos Terabytes de dados e os dados não são atualizáveis.

48 Sistemas de Arquivos Distribuídos Nesse tipo de sistema temos duas falhas principais: Falha em uma gaveta (perda de dados). Falha na comunicação intra-racks (perda de comunicação).

49 Sistemas de Arquivos Distribuídos A computação efetuada nesse sistema deve ser tolerante a falhas! Imaginem um processamento que leva horas tendo que ser reiniciado por completo por conta de uma falha na rede. Ou parte dos seus dados perdidos pois um único HD deu problema.

50 Sistemas de Arquivos Distribuídos Para resolver isso nosso sistema deve: Armazenar os dados de forma redundante Dividir o processamento em tarefas

51 Dados Redundantes Nesse tipo de sistema de arquivos os dados são divididos em pedaços, geralmente de 64 MB. Cada pedaço é armazenado em pelo menos 3 servidores localizados em diferentes racks.

52 Dados Redundantes A localização de cada pedaço de um arquivo é armazenado no chamado Nó Mestre, que também é replicado para caso de falhas.

53 Dados Redundantes Exemplos desse tipo de sistema de arquivos: GFS: Google File System HDFS: Hadoop Distributed File System CloudStore

54 Processamento em Tarefas O processamento de dados nesse tipo de sistema segue a lógica do MapReduce. Esse procedimento inicia em cada nó do sistema que contém um pedaço de arquivo de interesse.

55 Processamento em Tarefas Em cada nó, os pedaços de arquivo passam por uma função Map, que transforma os dados do arquivo em uma tupla (chave, valor) Chave-Valor (k,v) DADOS MAP

56 Processamento em Tarefas Essas tuplas são direcionadas a um nó mestre, onde são ordenadas e agrupadas pela chave. Chave-Valor (k,v) (k,[v1,v2,..,vn]) DADOS MAP ORDENA AGRUPA

57 Processamento em Tarefas As tuplas agrupadas são repassadas para outros nós que fazem a redução dos dados. Chave-Valor (k,v) (k,[v1,v2,..,vn]) DADOS MAP ORDENA AGRUPA REDUCE

58 Processamento em Tarefas Finalmente, os dados são combinados e a saída é emitida. Chave-Valor (k,v) (k,[v1,v2,..,vn]) DADOS COMBINAR MAP ORDENA AGRUPA REDUCE

59 Processamento em Tarefas Note que esse sistema é naturalmente tolerante a falhas. Chave-Valor (k,v) (k,[v1,v2,..,vn]) DADOS COMBINAR MAP ORDENA AGRUPA REDUCE

60 Processamento em Tarefas Se um nó MAPPER falhar, basta o nó mestre aguardar que outro mapper termine a tarefa e repassa os pedaços para ele. DADOS COMBINAR MAP ORDENA AGRUPA REDUCE

61 Processamento em Tarefas Se um nó REDUCER falhar, o nó mestre repassa os dados para outro reducer. DADOS COMBINAR MAP ORDENA AGRUPA REDUCE

62 Processamento em Tarefas Se o nó mestre falhar, basta um novo nó mestre recuperar os dados dos mappers. DADOS COMBINAR MAP ORDENA AGRUPA REDUCE

63 Exemplo Canônico Vamos exemplificar o procedimento com uma tarefa bem simples: contar a frequência de cada termo em uma série de documentos. Imaginem que temos armazenados 10TB de documentos em nosso sistema, queremos contar a frequência de cada termo existente em TODOS os documentos.

64 Exemplo Canônico Cada mapper vai receber 64MB de texto (não necessariamente do mesmo documento).

65 Map A nossa função MAP vai receber um pedaço de texto: Para cada termo t do texto: emite ( t, 1 ) Ou seja, o mapper emite cada termo encontrado (chave) com o valor 1.

66 Reduce Cada reducer recebe a tupla (termo, [valores]) após o nó central ordenar a saída dos mappers. Para cada (k,[vi]) faça: total = soma([vi]) emite (k,total) Nesse momento os reducers fazem a soma dos termos e emitem a contagem.

67 Combine Quando temos um cálculo associativo e comutativo (ex.: soma das contagens), podemos usar um passo intermediário chamado Combine. Esse passo é feito em cada nó mapper e consiste em pré-calcular parte do reduce.

68 Combine No nosso caso, o combine faria o cálculo da frequência de cada termo em cada nó mapper e emitiria (t, v) com v sendo a soma de ocorrência do termo t.

69 MapReduce no Haskell

70 GHC Mapper e Combiner mapper :: (Hashable k0, Eq k0) => Op a0 -> Mapper k0 a0 -> [k0] -> M.HashMap k0 a0 mapper combfun f job = combiner combfun $ map f job

71 GHC Mapper e Combiner combiner :: (Hashable k0, Eq k0) => Op a0 -> [(k0,a0)] -> M.HashMap k0 a0 combiner f m = M.fromListWith f m

72 GHC Reducer reducer :: (Hashable k0, Eq k0) => Op a0 -> [M.HashMap k0 a0] -> M.HashMap k0 a0 reducer f m = foldl' (M.unionWith f) M.empty m

73 GHC Tipos type Op a = (a -> a -> a) -- Function of two inputs type Mapper k a = k -> (k,a) -- Function that maps a key to a key value tuple

74 GHC Contador de Palavras wordcount :: Int -> [String] -> M.HashMap String Integer wordcount n wl = reducer (+) mapped where mapped = map mapfun workers `using` parlist rdeepseq mapfun = mapper (+) counter counter w = (w,1) workers = chunksof n wl

75 Tarefa para a casa Implemente os algoritmos em BoW utilizando o conceito de MapReduce.

Haddop, MapReduce e Spark

Haddop, MapReduce e Spark Haddop, MapReduce e Spark Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Conceitos Básicos 2. MapReduce 3. Spark 4. Transformações Básicas 5. Ações Básicas 1 Conceitos Básicos Hadoop

Leia mais

Sumarizando Dados. Fabrício Olivetti de França. Universidade Federal do ABC

Sumarizando Dados. Fabrício Olivetti de França. Universidade Federal do ABC Sumarizando Dados Fabrício Olivetti de França Universidade Federal do ABC Sumarizando os dados Sumarização Antes de extrair informações da base de dados, é importante entender seu conteúdo. Sumarização:

Leia mais

Pré-processamento de Dados

Pré-processamento de Dados Pré-processamento de Dados Fabrício Olivetti de França Universidade Federal do ABC Pré-Processamento dos Dados Tópicos 1. Pré-Processamento dos Dados 2. Conceitos Básicos 3. Representação Textual 4. Padrões

Leia mais

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná

Introdução Ferramentas Unix MapReduce Outras Ferramentas. Batch Processing. Fabiola Santore. Universidade Federal do Paraná Fabiola Santore Universidade Federal do Paraná Sumário 1. Introdução 2. Ferramentas Unix 2.1 Análise de log 2.2 Filosofia Unix 3. MapReduce 3.1 Procedimento 3.2 Reduce: Joins e Agrupamento 3.3 Análise

Leia mais

Informática Parte 10 Prof. Márcio Hunecke

Informática Parte 10 Prof. Márcio Hunecke Escriturário Informática Parte 10 Prof. Márcio Hunecke Informática CONCEITOS DE MAPREDUCE E HDFS/HADOOP/YARN 2.7.4 Big Data O termo Big Data refere-se a um grande conjunto de dados armazenados e baseia-se

Leia mais

Haskell Paralelo (e entrada e saída de dados)

Haskell Paralelo (e entrada e saída de dados) Haskell Paralelo (e entrada e saída de dados) Prof. Fabrício Olivetti de França Universidade Federal do ABC Entrada e Saída de dados Imprimindo na tela Nós já conhecemos o comando print, que imprime qualquer

Leia mais

Bruno Antunes da Silva UFSCar - Sorocaba

Bruno Antunes da Silva UFSCar - Sorocaba Bruno Antunes da Silva UFSCar - Sorocaba Introdução HDFS Arquitetura Leitura e escrita Distribuição de nós Controle de réplicas Balancer MapReduce Conclusão Aplicações web com grandes quantidades de dados

Leia mais

PrIntCloud. Disciplina: Procedência de Dados e Data Warehousing. Aluna: Shermila Guerra Santa Cruz. 16/04/13

PrIntCloud. Disciplina: Procedência de Dados e Data Warehousing. Aluna: Shermila Guerra Santa Cruz. 16/04/13 PrIntCloud Disciplina: Procedência de Dados e Data Warehousing. Aluna: Shermila Guerra Santa Cruz. 16/04/13 Roteiro 1. Fundamentação Teórica A.- Cloud Computing B.- Hadoop C.- MapReduce D.- NoSql 2. Proposta

Leia mais

Classificação. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Classificação. Prof. Fabrício Olivetti de França Universidade Federal do ABC Classificação Prof. Fabrício Olivetti de França Universidade Federal do ABC Classificação Quando queremos encontrar: f(x) = y C e C = {c1, c2, c3,, cn} Classificação Se um e-mail é spam ou não De qual

Leia mais

Vença o relógio Redes de Ordenação

Vença o relógio Redes de Ordenação Atividade 8 Vença o relógio Redes de Ordenação Sumário Mesmo os computadores sendo rápidos, há um limite na sua velocidade de resolução de problemas. Uma forma de acelerar as coisas é usar vários computadores

Leia mais

Python + Spark = PySpark. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Python + Spark = PySpark. Prof. Fabrício Olivetti de França Universidade Federal do ABC Python + Spark = PySpark Prof. Fabrício Olivetti de França Universidade Federal do ABC Spark Plataforma para processamento de dados em larga escala. Baseado em transformações preguiçosas dos dados. Estende

Leia mais

Regressão. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Regressão. Prof. Fabrício Olivetti de França Universidade Federal do ABC Regressão Prof. Fabrício Olivetti de França Universidade Federal do ABC Aprendendo com Exemplos Uma das formas de aprendizado de máquina é definido como: Dado um conjunto de exemplos X, com cada x sendo

Leia mais

Algoritmos de Junção Estrela em MapReduce

Algoritmos de Junção Estrela em MapReduce Algoritmos de Junção Estrela em MapReduce Jaqueline Joice Brito 09 de junho de 2015 1 Modelo Relacional Dados armazenados em um conjunto de tabelas Amplamente utilizado Junção Recuperação de dados de duas

Leia mais

Técnicas de Programação

Técnicas de Programação Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir

Leia mais

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias -

15/03/2018. Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções. Prof. Ariel da Silva Dias - Professor Ariel da Silva Dias Algoritmo e Contagem de Instruções 1 Um algoritmo pode ser visto como uma sequência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema.

Leia mais

AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP

AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP AVALIAÇÃO DE DESEMPENHO DE PROCESSAMENTO DISTRIBUÍDO EM LARGA ESCALA COM HADOOP Débora Stefani Lima de Souza dsls@cin.ufpe.br Orientador: Dr. Paulo Romero Martins Maciel INTRODUÇÃO Nem sempre os dados

Leia mais

Mineração de Dados com Big Data. Prof. Fabrício Olivetti de França Universidade Federal do ABC

Mineração de Dados com Big Data. Prof. Fabrício Olivetti de França Universidade Federal do ABC Mineração de Dados com Big Data Prof. Fabrício Olivetti de França Universidade Federal do ABC Introdução Mineração de Dados Extração e descoberta de conhecimentos de bases de dados. Interdisciplinar: aprendizado

Leia mais

Processamento da Informação

Processamento da Informação Processamento da Informação Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Listas e Vetores 1 Listas e Vetores Listas e Vetores Uma lista em Python é um container de informações que, por

Leia mais

Algoritmos de Regressão

Algoritmos de Regressão Algoritmos de Regressão com Big Data Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Regressão Linear 2. Ordinary Least Square 3. Gradiente Descendente 4. Overfitting 5. Variáveis Não-Lineares

Leia mais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em

Leia mais

BIG DATA PODEMOS DIZER QUE SÃO DADOS GRANDES?

BIG DATA PODEMOS DIZER QUE SÃO DADOS GRANDES? 1 BIG DATA PODEMOS DIZER QUE SÃO DADOS GRANDES? Deyvirson Mendonça SUMÁRIO Definição Os Vs do Big Data Desafios Hadoop BD e Big Data PARA COMEÇAR O QUE SÃO DADOS? Informações diversas, que podem ser organizadas

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar

Leia mais

ALGORITMOS DE ORDENAÇÃO

ALGORITMOS DE ORDENAÇÃO ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,

Leia mais

2. Redes Neurais Artificiais

2. Redes Neurais Artificiais Computação Bioinspirada - 5955010-1 2. Redes Neurais Artificiais Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 2.1. Introdução às Redes Neurais Artificiais (RNAs) 2.1.1. Motivação

Leia mais

Ordenação em Tempo Linear

Ordenação em Tempo Linear Ordenação em Tempo Linear Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 19 Algoritmos e Estruturas de Dados I Ordenação em tempo linear Algoritmos de ordenação por comparação: InsertSort; Quicksort;

Leia mais

Complexidade de Tempo e Espaço

Complexidade de Tempo e Espaço Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando

Leia mais

Estruturas de Dados Tabelas de Espalhamento

Estruturas de Dados Tabelas de Espalhamento Estruturas de Dados Tabelas de Espalhamento Prof. Eduardo Alchieri (introdução) Uma estrutura como, as árvores binárias de busca, que trabalhe na ordem de log n é muito eficiente, mas em algumas situações

Leia mais

Um Servidor Escalável para Bases Massivas de

Um Servidor Escalável para Bases Massivas de Um Servidor Escalável para Bases Massivas de Dados Geográficos Leandro da Silva Santos Orientador: Tiago Garcia de Senna Carneiro Co-orientador: Ricardo Augusto Rabelo Oliveira Departamento de Computação

Leia mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. Profa. Sheila Morais de Almeida. agosto Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico

Leia mais

MapReduce. Capítulo 2. Renato Gomes Borges Júnior

MapReduce. Capítulo 2. Renato Gomes Borges Júnior MapReduce Capítulo 2 Renato Gomes Borges Júnior Sumário Introdução Exemplo: um conjunto de dados climáticos Analisando os dados Map and Reduce Java MapReduce Fluxo de dados Executando MapReduce distribuído

Leia mais

QUESTIONÁRIO SOBRE HADOOP LEITURA DO MATERIAL FORNECIDO ALUNO/GRUPO ;

QUESTIONÁRIO SOBRE HADOOP LEITURA DO MATERIAL FORNECIDO ALUNO/GRUPO ; QUESTIONÁRIO SOBRE HADOOP LEITURA DO MATERIAL FORNECIDO ALUNO/GRUPO ; LEIA O MATERIAL ANTES DE FAZER O EXEMPLO DIDÁTICO. AS QUESTÕES ABAIXO PODEM SER RESPONDIDAS, USANDO, PREFERENCIALMENTE, SUA PRÓPRIAS

Leia mais

Teoria da Computação Aula 9 Noções de Complexidade

Teoria da Computação Aula 9 Noções de Complexidade Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Insertion Sort Introdução Existem modos diferentes para realizar uma ordenação e, nas próximas aulas, continuaremos estudando cada uma

Leia mais

Lista de Exercício de Linguagens de Programação Prog. Funcional

Lista de Exercício de Linguagens de Programação Prog. Funcional UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE CIÊNCIA E TECNOLOGIA CURSO DE CIÊNCIA DA COMPUTAÇÃO Lista de Exercício de Linguagens de Programação Prog. Funcional 1) Construa uma função del_posicao_n ::

Leia mais

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016 MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números

Leia mais

24/09/2014. Prof. André Backes

24/09/2014. Prof. André Backes Prof. André Backes 1 Por que usar listas? As variáveis declaradas até agora são capazes de armazenar um único valor por vez. Sempre que tentamos armazenar um novo valor dentro de uma variável, o valor

Leia mais

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II Estrutura de Dados II COM10078 2017-I Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II COM10078 Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br

Leia mais

Redução de Dimensionalidade e Agrupamento de Dados

Redução de Dimensionalidade e Agrupamento de Dados Redução de Dimensionalidade e Agrupamento de Dados Fabrício Olivetti de França Universidade Federal do ABC Tópicos 1. Análise de Componentes Principais 2. Agrupamento de Dados 1 Redução de Dimensionalidade

Leia mais

Aula 10: Introdução a Vetores e Matrizes

Aula 10: Introdução a Vetores e Matrizes Aula 10: Introdução a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programação de Computadores IV 1 / 50 Agenda

Leia mais

Algoritmos e Estrutura de Dados

Algoritmos e Estrutura de Dados Algoritmos e Estrutura de Dados Fabrício Olivetti de França 02 de Fevereiro de 2019 Topics 1. Algoritmos de Ordenação Eficientes 1 Algoritmos de Ordenação Eficientes Heap Sort Na primeira aula de ordenação

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR ESTRUTURAS DE DADOS E ALGORITMOS 1 ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande COMPARAÇÃO DOS ALGORITMOS DE ORDENAÇÃO

Leia mais

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ORDENAÇÃO DE ARQUIVOS GRANDES Para arquivos binários, é possível implementar o

Leia mais

Métodos de Ordenação Parte 4

Métodos de Ordenação Parte 4 Métodos de Ordenação Parte 4 Introdução à Ciência de Computação II Prof. Diego Raphael Amancio Baseado no material do Prof. Rudinei Goularte e Prof. Thiago A. S. Pardo 1 Ordenação por Intercalação Revisando...

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 10 Métodos de Ordenação de Complexidade Linear Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída:

Leia mais

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos (tempo ou espaço) podem ser proibitivos. 1 Suponha que duas

Leia mais

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz

Projeto e Análise de Algoritmos Análise de Complexidade. Prof. Luiz Chaimowicz Projeto e Análise de Algoritmos Análise de Complexidade Prof. Luiz Chaimowicz AGENDA Modulo 1 Data Assunto Capítulos 05/03 Algoritmos / Invariantes / Intro Análise de Complexidade 07/03 Não Haverá Aula

Leia mais

Simulando Funções de Alta Ordem via o Padrão de Projetos Template

Simulando Funções de Alta Ordem via o Padrão de Projetos Template Simulando Funções de Alta Ordem via o Padrão de Projetos Template Fernando Magno Quintão Pereira 27 de outubro de 2010 Questão 1 Imagine que você trabalhe com mecanismos de busca na web. Seu problema básico

Leia mais

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas Processamento de Consultas em Bancos de Dados Distribuídos Visão geral do processamento de consultas IN1128/IF694 Bancos de Dados Distribuídos e Móveis Ana Carolina Salgado acs@cin.ufpe.br Bernadette Farias

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Estrutura de dados: listas Manipulando listas Vetores como listas

Leia mais

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave Algoritmos e Estruturas de Dados II Profa. Debora Medeiros Acesso a registros Acesso a Registros Arquivos organizados por registros Como buscar um registro específico? Adaptado dos Originais de: Ricardo

Leia mais

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da

Leia mais

COMPUTADOR 2. Professor Adão de Melo Neto

COMPUTADOR 2. Professor Adão de Melo Neto COMPUTADOR 2 Professor Adão de Melo Neto Modelo Barramento de Sistema É uma evolução do Modelo de Von Newman. Os dispositivos (processador, memória e dispositivos de E/S) são interligados por barramentos.

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 14 de Junho de 2018 1 λ-cálculo 2 Computabilidade Computabilidade é uma área de estudo central da Ciência da Computação. Ela estuda a possibilidade

Leia mais

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Operacionais Gerenciamento de Memória. Carlos Ferraz Jorge Cavalcanti Fonsêca Sistemas Operacionais Gerenciamento de Memória Carlos Ferraz (cagf@cin.ufpe.br) Jorge Cavalcanti Fonsêca (jcbf@cin.ufpe.br) Memória Física vs. Memória do Programa Memória P Física Tamanho dos softwares

Leia mais

5. Algoritmos de Ordenação

5. Algoritmos de Ordenação Introdução à Computação II 5952011 5. Algoritmos de Ordenação Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 5.1. Ordenação por Inserção 5.2. Ordenação por Seleção

Leia mais

Programação de Computadores

Programação de Computadores Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Alguns Conceitos sobre Linguagens Conceito de Algoritmo Pseudocódigo

Leia mais

Framework para Deduplicação de Dados com Apache Spark

Framework para Deduplicação de Dados com Apache Spark Framework para Deduplicação de Dados com Apache Spark César Magrin - magrin@inf.ufpr.br Disciplina: Metodologia Científica - CI860 Professor: Alexandre Direne Sumário 1. Qualidade de Dados 2. Deduplicação

Leia mais

Introdução à Ciência da Computação II

Introdução à Ciência da Computação II Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Introdução Apresentação Professor Professor Ariel Dias Apresentação Disciplina O que veremos? www.arieldias.com BlackBoard Apresentação

Leia mais

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo Radix Sorting Os registros a serem ordenados podem ter chaves bastante complexas, como por exemplo sequências de caracteres (lista telefônica) o Ordenação via comparação de chaves Várias aplicações têm

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

O mais leve e o mais pesado Algoritmos de Ordenação

O mais leve e o mais pesado Algoritmos de Ordenação Atividade 7 O mais leve e o mais pesado Algoritmos de Ordenação Sumário Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem, por exemplo, nomes em ordem alfabética, compromissos

Leia mais

PCC104 Projeto e Análise de Algoritmos

PCC104 Projeto e Análise de Algoritmos PCC104 Projeto e Análise de Algoritmos Joubert de Castro Lima joubertlima@gmail.com Professor Adjunto DECOM UFOP 2010/1 Figuras retiradas do livro Introduction to parallel Computing Programar em paralelo

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

Leia mais

Hashing Endereçamento Direto Tabelas Hash

Hashing Endereçamento Direto Tabelas Hash Hashing Endereçamento Direto Tabelas Hash Professora: Fátima L. S. Nunes 1 1 1 Vimos até agora: Introdução Conceitos e técnicas de Orientação a Objetos Conceitos e aplicações de Complexidade Assintótica

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 02 de Agosto de 2018 1 Programação Paralela e Concorrente em Haskell 2 Paralelismo vs Concorrência Um programa paralelo é aquele que usa diversos recursos

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Análise de Algoritmos. Prof. Sérgio Carlos Portari Júnior

Análise de Algoritmos. Prof. Sérgio Carlos Portari Júnior Análise de Algoritmos Prof. Sérgio Carlos Portari Júnior 2016 Plano de Ensino EMENTA: Desenvolvimento de Algoritmos. Medidas de Complexidade. Estratégias Básicas. Divisão e Conquista. Método Guloso. Programação

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

Linguagens de Programação Aula 14

Linguagens de Programação Aula 14 Linguagens de Programação Aula 14 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Linguagem Haskell Funções Tipos básicos Expressões 2 Na aula de hoje Linguagem Haskell Listas 3 Listas e Tuplas

Leia mais

VETORES Motivação AULA 19

VETORES Motivação AULA 19 AULA 19 VETORES 19.1 Motivação Considere o problema de calcular a média aritmética das notas de 5 alunos de uma disciplina e determinar e escrever o número de alunos que obtiveram nota superior à média

Leia mais

COMPUTAÇÃO PARALELA E DISTRIBUÍDA

COMPUTAÇÃO PARALELA E DISTRIBUÍDA COMPUTAÇÃO PARALELA E DISTRIBUÍDA Aluno: Alessandro Faletti Orientadora: Noemi Rodriguez Introdução O objetivo inicial no projeto era aplicar a possibilidade de processamento em paralelo no sistema CSBase

Leia mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

Testes de Hipóteses Não Paramétricos

Testes de Hipóteses Não Paramétricos ACH4513 INFERÊNCIA ESTATÍSTICA 2º Sem/2017 Testes de Hipóteses Não Paramétricos Prof. Marcelo S. Lauretto marcelolauretto@usp.br www.each.usp.br/lauretto Referência: W.O.Bussab, P.A.Morettin. Estatística

Leia mais

Comparando, Distribuindo e Ordenando

Comparando, Distribuindo e Ordenando Capítulo 5 Comparando, Distribuindo e Ordenando Algoritmos de ordenação podem ser agrupados tendo-se como base o comportamento da sua função de custo: Quadrática, NlogN e Linear. Os algoritmos de custo

Leia mais

TABELAS DE DISPERSÃO/HASH

TABELAS DE DISPERSÃO/HASH 1/47 TABELAS DE DISPERSÃO/HASH Introdução 2/47 Introdução Motivação - Considerar o problema de pesquisar um determinado valor num vetor: - Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade

Leia mais

Introdução à Ciência da Computação

Introdução à Ciência da Computação 1 Universidade Federal Fluminense Campus de Rio das Ostras Curso de Ciência da Computação Introdução à Ciência da Computação Professor: Leandro Soares de Sousa e-mail: leandro.uff.puro@gmail.com site:

Leia mais

Solução de Recorrências

Solução de Recorrências CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

Aula 5: Conversões Entre Bases Numéricas

Aula 5: Conversões Entre Bases Numéricas Aula 5: Conversões Entre Bases Numéricas Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Conversões Entre Bases Numéricas FAC 1 / 43 Conversão

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

Ordenação Externa (Merge Sort)

Ordenação Externa (Merge Sort) Ordenação Externa (Merge Sort) Referências: A.V.Aho, J.E.Hopcroft, J.D.Ullman, Data Structures and Algorithms, Cap. 11. Problema: ordenar dados organizados como arquivos, ou de forma mais geral, ordenar

Leia mais

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

O Problema da Ordenação Métodos de Ordenação Parte 1

O Problema da Ordenação Métodos de Ordenação Parte 1 Métodos de Ordenação Parte 1 SCC-201 Introdução à Ciência da Computação II Rosane Minghim 2010 Ordenação (ou classificação) é largamente utilizada Listas telefônicas e dicionários Grandes sistemas de BD

Leia mais

Algoritmos Computacionais

Algoritmos Computacionais Material produzido por professores da UFABC Objetivos Aprender a sintaxe e a semântica de instruções de saída e de entrada de dados na linguagem PORTUGOL Aprender alguns operadores pra uso na parte de

Leia mais

Aula prática 5. Funções Recursivas

Aula prática 5. Funções Recursivas Programação Funcional UFOP DECOM 2014.1 Aula prática 5 Funções Recursivas Resumo Definições recursivas são comuns na programação funcional. Nesta aula vamos aprender a definir funções recursivas. Sumário

Leia mais

Programação Funcional 9 a Aula Programas interativos

Programação Funcional 9 a Aula Programas interativos Programação Funcional 9 a Aula Programas interativos Pedro Vasconcelos DCC/FCUP 2014 Motivação Até agora apenas escrevemos programas que efetuam computação pura, i.e., transformações funcionais entre valores.

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Fabrício Olivetti de França 21 de Junho de 2018 1 Listas 2 Listas Uma das principais estruturas em linguagens funcionais. Representa uma coleção de valores de um determinado tipo.

Leia mais

Big Data Open Source com Hadoop

Big Data Open Source com Hadoop Big Data Open Source com Hadoop Palestrante: Marcio Junior Vieira marcio@ambientelivre.com.br Realização: Marcio Junior Vieira 14 anos de experiência em informática, vivência em desenvolvimento e análise

Leia mais

Fundamentos de Arquiteturas de Computadores

Fundamentos de Arquiteturas de Computadores Fundamentos de Arquiteturas de Computadores Cristina Boeres Instituto de Computação (UFF) Conversões Entre Bases Numéricas Material de Fernanda Passos (UFF) Conversões Entre Bases Numéricas FAC 1 / 42

Leia mais

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa Algoritmos e Estruturas de Dados II Ordenação Externa II Prof. Ricardo J. G. B. Campello As análises dos métodos de ordenação tradicionais se preocupam basicamente com o tempo de execução dos algoritmos

Leia mais

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver

Leia mais

Paradigmas de programação

Paradigmas de programação Paradigmas de programação 1 Paradigma? Um paradigma é algo que serve de exemplo ou modelo. Sinônimos: Padrão Prototipo 2 Paradigma de programação? É uma proposta tecnológica. Fornece uma visão do programador

Leia mais

LINGUAGEM ALGORÍTMICA

LINGUAGEM ALGORÍTMICA LINGUAGEM ALGORÍTMICA Adriano Mauro Cansian André Proto UNESP - São José do Rio Preto Linguagem Computacional Introdução! Para uma melhor padronização de nosso estudos, vamos agora definir uma linguagem

Leia mais

Algoritmos II Aula 2 Vetores

Algoritmos II Aula 2 Vetores Algoritmos II Aula 2 Vetores Professor: Max Pereira max.pereira@unisul.br Ciência da Computação Variável Representação simbólica dos elementos de memória de um computador. Cada variável corresponde a uma

Leia mais

COMPUTADOR. Adão de Melo Neto

COMPUTADOR. Adão de Melo Neto COMPUTADOR Adão de Melo Neto 1 PROGRAMA É um conjunto de instruções LINGUAGEM BINÁRIA INTRODUÇÃO Os caracteres inteligíveis são apenas zero(0) e um (1). É uma linguagem de comunicação dos computadores.

Leia mais

A adição de números naturais é associativa, ou seja, resultado da soma de três números naturais independe da ordem da soma dos números.

A adição de números naturais é associativa, ou seja, resultado da soma de três números naturais independe da ordem da soma dos números. . Números Naturais Para qualquer cidadão, contar faz parte da rotina da vida. Por exemplo: contamos dinheiro, contamos pessoas, contamos os itens para saber o que precisamos comprar, contamos objetos em

Leia mais

Processamento de INDUSTRIA 4.0. Big Data. Aula #10 - Processamento distribuído de dados FONTE: DELIRIUM CAFE EDUARDO CUNHA DE ALMEIDA

Processamento de INDUSTRIA 4.0. Big Data. Aula #10 - Processamento distribuído de dados FONTE: DELIRIUM CAFE EDUARDO CUNHA DE ALMEIDA INDUSTIA 4.0 Processamento de Big Data FONTE: DELIIU CAFE Aula #10 - Processamento distribuído de dados EDUADO CUNHA DE ALEIDA Agenda - Divisão do problema - apeduce - Hadoop - SQL-on-Hadoop: Hive 2 Divisão

Leia mais