introdução - ufjf.br§ão.pdf · pré-requisito vamos usar todo o conhecimento aprendido em...

24
Introdução Estrutura de Dados II Prof Jairo Francisco de Souza

Upload: vokhanh

Post on 04-Dec-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Introdução

Estrutura de Dados IIProf Jairo Francisco de Souza

Conteúdo Programático

● Parte 1 – Manipulação de arquivos● Ordenação, arquivos em série e sequências,

classificação externa, arquivos de acesso direto

● Parte 2 – Indexação● Arquivos indexados pela chave primária, árvores

balanceadas, árvores espaciais

● Parte 3 – Processamento de cadeias de caracteres● Pesquisa digital. Casamento de cadeias.

Compressão de texto.

Pré-requisito

● Vamos usar todo o conhecimento aprendido em Estrutura de Dados I● Principalmente árvores binárias!!!

● Algoritmos: como programar● Estrutura de Dados I: programação um pouco

mais avançada● Estrutura de Dados II: aprende como resolver

problemas reais usando programação

Avaliação

● Provas● Uma prova para cada parte da matéria.● 30 pontos cada.

● Trabalhos● Implementação de algoritmos para resolução de

problemas.● Em princípio, 2 trabalhos valendo 5 pontos cada.

● Segunda chamada● Somente quem perdeu alguma prova. ● Matéria toda.

Material de estudo

● Notas de aula● Site do professor (Home → Ensino → Material →

Estrutura de Dados II): www.ufjf.br/jairo_souza● Senha etd2_2011● Listas de exercícios

● Livros – bibliotecas

● Preiss, Bruno R. Estruturas de dados e algoritmos. Elsevier, 2001. 566p. Número da obra: 116818 / Classificação: 681.31

● SZWARCFITER, Jaime Luíz. Estruturas de Dados e seus Algoritmos. Rio de Janeiro: Ed. LTC, 1994. Número da obra: 67579 / Classificação: 681.3.06:800.92:518

● LEISERSON, C. E.; STEIN, C.; RIVEST, R. L., CORMEN, T.H. Algoritmos: Teoria e Prática. Tradução da 2a. edição americana. Editora Campus, 2002. Número da obra: 111190 / Classificação: 681.3.06

● Ziviani, Nivio. Projeto de algoritmos com implementações em Pascal e C. Cengage Learning, 2009. Número da obra: 128911 / Classificação: 681.3.06

● Drozdek, Adam. Estrutura de Dados e algoritmos em C++. Cengage Learning, 2003.

● Tenembaum, Aaron, M. Estruturas de Dados usando C. Makron Books. 1995. Número da obra: 67580 / Classificação: 681.3.06+800.92C

● NEVES, I. Programação com Arquivos. Editora Manole, 2002.

● KNUTH, D. E. The art of computer programming – v.3 – sorting and searching. Addison-Wesley, 1973.

http://dsgraph.sourceforge.net

Introdução

● O que é dado?

Dadox

Informaçãox

Conhecimentox

Sabedoria

Introdução

● Trabalhar com computação é manipular mensagens em um dos níveis vistos anteriormente.

● Com o passar do tempo, pesquisadores da computação tentam lidar com mensagens em níveis mais sofisticados● Porém, níveis mais rudimentares ainda são

importantes: novos equipamentos (dispositivos móveis, nanotecnologia, redes sociais, etc).

Introdução

● Camadas:● dados: processamento, desempenho● informação: banco de dados● inteligência: sistemas especialistas, web semântica● sabedoria?!

● Nesta disciplina, trabalharemos com o nível mais baixo, que é base para as demais camadas.

Introdução Informação mantida em memória secundária:

HD Disquete Fitas CD ...

IntroduçãoPodem ser programas, texto, planilha, dados,

imagens, etc...Possuem tamanho e tipos são variadosUm arquivo possui um nome e a terminação

que determina o seu tipo

IntroduçãoExistem dois tipos de arquivos:

Arquivos Físicos: sequencia de bytes armazenadas em disco

Arquivos Lógicos: sequencia de bytes, eventualmente organizada em registros ou outra estrutura lógica

Um arquivo físico pode estar associado ao lógico: associação iniciada pelo aplicativo, gerenciada pelo S.O.

IntroduçãoArquivos são acessados, tanto pela memória

principal, quanto por discos;Este acesso pode ser demorado, dependendo

do tipo de memóriaTempo de acesso

HD: alguns milisegundos ~ 10ms RAM: alguns nanosegundos ~ 10ns...40ns Ordem de grandeza da diferença entre os tempos de

acesso ~ 250.000, isto é, HDs são 250.000 vezes mais lentos que memória RAM

IntroduçãoCapacidade de Armazenamento

HD – muito alta, a um custo relativamente baixo RAM – limitada pelo custo e espaço

Tipo de Armazenamento HD – não volátil RAM - volátil

IntroduçãoEm resumo

acesso a disco é muito caro, isto é, lento!

Entãoo número de acessos ao disco deve ser minimizadoa quantidade de informações recuperadas em um

acesso deve ser maximizada

Estruturas de organização de informação em arquivos!

Organização de ArquivosMeta: minimizar as desvantagens do uso da

memória externa

Objetivo: minimizar o tempo de acesso ao dispositivo de armazenamento externo

Organização de ArquivosEstruturas de dados eficientes em memória

principal são inviáveis em discoSeria fácil obter uma estrutura de dados

adequada para disco se os arquivos fossem estáveis (não sofressem alterações)

Solução: organização adequada de arquivos no disco e de informações em arquivos.

E isso serve pra alguma coisa?!

● Só para os bons!

● Os mais ou menos somente usam componentes prontos (leia-se, fáceis) sem analisar a solução implementada

● Os bons

● Abordagem analiso-pesquiso-analiso-implemento

● Os mais ou menos

● Abordagem google-download-import-build-run

Mas, será que serve mesmo?!

● Computadores estão cada vez mais rápidos● Um celular hoje é muitas vezes mais rápido que o

PC de 10 anos atrás

● O mercado exige respostas rápidas● Não dá tempo de gastar com análises, melhor

pegar pacotes já prontos

Porém...

● Dispositivos móveis● Problema com energia● Mais processamento, mais gasto de energia

– Quanto tempo você gostaria que a sua bateria durasse?

● Mercado exige velocidade sim● Mas os problemas se tornaram mais complexos● Genoma, fiscalização (imposto de renda),

simulações (catástrofes), web (search engines), etc

O grande desafio da computação

● Máquina com 27km de circunferência● 9000 cientistas envolvidos● 15 petabytes de dados recolhidos por ano● Milhares de horas para computar esses dados● E a rede? quanto tempo para transferir esses

dados?● Soluções físicas: criação de centros de

supercomputadores, redes gigabytes etc● E as soluções de software?