Escolar Documentos
Profissional Documentos
Cultura Documentos
Regra do Jogo
3 provas Trabalho Presena Material
no suficiente presena Ateno! Anotao! Perguntas!
Avaliaes
3 Provas:
1 Prova (20pts) 14/09 2 Prova (20pts) 05/10 3 Prova (20pts) - 16/11
Trabalhos
Individual ou em Dupla
Trabalho Prtico Seminrios
Datas Importantes
Trabalho Prtico
Definio do Tema 17/08 Implementao do Programa Base: 31/08 Implementao dos Mtodos de Pesquisa de Dados: 14/09 Insertion Sort - 21/09 Shell Sort 21/09 Bubble Sort 28/09 Quick Sort 28/09
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
6
Aula 1
REVISO
Tipos de Dados
Conjunto de valores que uma constante ou varivel pode assumir
Tipos Primitivos: nmeros, valores lgicos, caracteres; comuns na maioria das linguagens
int, float, char, boolean...
Estruturas de Dados
Homogneas
Permite agrupar diversas informaes dentro de uma mesma varivel. Este agrupamento dever obedecer sempre ao mesmo tipo de dado. Matrizes de uma Dimenso (Unidimensionais) ou Vetores
Os elementos de um vetor so acessados por meio de ndices de valor inteiro
Pascal o 1 Elemento corresponde ao ndice 1 Java, C o 1 Elemento corresponde ao ndice 0
No possvel operar diretamente sobre um vetor como um todo, mas apenas sobre seus componentes. * Tem grande aplicao na pesquisa e classificao de dados.
10
Do mesmo modo que em matrizes unidimensionais, no possvel operar sobre a matriz como um todo, apenas sobre seus componentes.
11
Listas
Uma Lista Linear uma coleo, cuja propriedade estrutural baseiase apenas na posio relativa dos elementos.
Operaes possveis:
Acessar qualquer elemento da lista Remover um elemento de uma posio especfica da lista Combinar duas listas em uma Dividir uma lista em duas Obter cpias de uma lista Determinar o total de elementos de uma lista Ordenar os elementos de uma lista Buscar elementos na lista...
12
Listas
Tipos especiais de listas (considerando as operaes de: insero, remoo e acesso)
Pilha: LIFO todas as inseres, remoes e acessos so realizados em um nico extremo. Fila: FIFO todas as inseres so feitas em um extremo e todas as remoes e acessos no outro extremo Fila dupla: as inseres, remoes e acessos podem ser realizados em qualquer extremo.
13
Listas
Forma de alocao de memria: como armazenar os elementos da lista?
Sequencial Esttica Dinmica Esttica Sequencial Dinmica Sequencial Encadeada Esttica Encadeada Dinmica Encadeada
Esttica = a quantidade total de memria a ser usada pelos dados deve ser previamente conhecida, definida de modo imutvel. Dinmica = se o programa capaz de criar novas variveis enquanto executa, ento a alocao dinmica
14
Listas
Sequencial = A forma mais natural de armazenar uma lista dentro do computados consiste em colocar seus elementos em clulas de memria consecutivas, um aps o outro.
Vantagem Acesso Desvantagem Insero e remoo de itens no meio da lista
Encadeada = Os elementos da lista podem ser armazenados em qualquer lugar, no necessariamente de forma consecutiva. Para manter a ordem linear cada elemento tem junto o endereo do prximo elemento.
Vantagem Insero e remoo de itens no meio da lista Desvantagem Acesso
ED2: MSc. Daniele Oliveira
15
Pilhas
A pilha uma das estruturas de dados mais til em computao. um tipo especial de lista linear em que todas as operaes de insero e remoo so realizadas em uma mesma extremidade, o topo. Operaes bsicas:
Top acessa o elemento do topo da pilha Push insere um elemento no topo da pilha Pop retira um elemento do topo da pilha
16
Pilhas
Pode-se utilizar o esquema de alocao esttica sequencial de memria, tendo:
Um vetor, para armazenar os elementos
17
Filas
A fila um tipo especial de lista linear em que as inseres so realizadas em um dos extremos (o final da fila) e as remoes restritas ao outro extremo (o comeo da fila) Operaes bsicas
Enqueue insere um elemento no final da fila Dequeue remove um elemento do comeo da fila
18
Filas
possvel implementar uma fila sequencial tendo 3 recursos bsicos:
Um vetor, para armazenar os elementos Uma varivel, para referenciar o primeiro elemento Uma varivel, para referenciar a primeira posio livre aps o ltimo elemento da fila
19
Fila Sequencial
20
Fila Circular
21
Fila Circular
possvel implementar uma fila circular tendo 4 recursos bsicos:
Um vetor, para armazenar os elementos Uma varivel, para referenciar o primeiro elemento Uma varivel, para referenciar a primeira posio livre aps o ltimo elemento Um indicador da quantidade de elementos da fila
22
Fim da Reviso
PESQUISA DE DADOS
23
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
24
Pesquisa de Dados
Uma das tarefas de maior importncia na computao a pesquisa de informaes contidas em colees de dados Existem 2 tipos bsicos de Busca:
Pesquisa Sequencial Pesquisa Binria
25
Pesquisa Sequencial
Tipo mais simples de busca. Pode ser aplicado em uma coleo de dados ordenadas ou no ordenadas. Consiste em pesquisar um valor x, num vetor L inspecionando em sequencia as posies de L a partir da primeira posio.
Se encontrarmos x, a busca tem sucesso Se alcanarmos a ltima posio de L sem encontrar x, conclumos que x no ocorre no vetor L.
Para colees de dados de mdio ou grande porte o tempo gasto para realizar a pesquisa torna invivel este mtodo.
ED2: MSc. Daniele Oliveira
26
Pesquisa Binria
Para ser aplicado a coleo de dados deve estar previamente ordenada. Supondo que o vetor est ordenado crescentemente:
Inspecionamos a posio central de L Se ela contem o valor x que queremos localizar, a busca para com sucesso Caso contrrio
Se x for menor do que o elemento central passamos a procurar x, recursivamente, no elemento central da primeira metade do vetor. Se x for maior do que o elemento central, passamos a procurar x, recursivamente, no elemento centrar da segunda metade do vetos. Se o intervalo se tornar vazio, a busca para, tendo sido mal sucedida.
27
CLASSIFICAO DE DADOS
28
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
29
Classificao de Dados
Classificao de Dados o processo pelo qual se organizam itens em ordem (de)crescente segundo algum critrio .
(Ordenao Sorting)
Na prtica, os itens a serem ordenados raramente so valores isolados. Em geral, cada um deles faz parte de uma coleo de dados chamada registro. Ordenar nmeros individuais ou grandes registros que contm nmeros irrelevante para o mtodo de ordenao.
30
Classificao de Dados
Temos dois tipos de classificao:
Classificao Interna
Realiza a classificao apenas nos dados que se encontram na memria principal Gasta menos tempo de acesso para buscar O tempo mdio de acesso no afetado pela sequncia dos dados
Classificao Externa
Os dados so transferidos em blocos para a memria principal. S ento so manipulados A transferncia dos dados influencia no tempo gasto para o processamento Os dados so manipulados bloco a bloco Mtodos de classificao externa envolvem a aplicao de mtodos de classificao interna, aplicando em um subconjunto de dados de cada vez
ED2: MSc. Daniele Oliveira
31
5.
Merge Sort
32
Fim da Aula 1
33
ESTRUTURAS DE DADOS II
MSc. Daniele Carvalho Oliveira
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
2
Aula 2
Insertion Sort
Insertion Sort
Dividimos os elementos a serem ordenados em 2 grupos
O primeiro grupo, contendo apenas o primeiro elemento (Segmento ordenado) O segundo grupo, contendo os demais n-1 elementos (Segmento no ordenado)
Como?
Compara-se o elemento a ser ordenado com cada um dos elementos ordenados, sequencialmente. Considerando:
O elemento a ser inserido menor do que aquele com que se est comparando
Este movido para a prxima posio
O elemento a ser inserido maior ou igual do que aquele com que se est comparando
Deixamos o elemento na sua posio
Desempenho
O desempenho do mtodo de classificao por insero fortemente influenciado pela ordem inicial dos nmeros a serem ordenados. Alm de depender tambm da quantidade de nmeros a serem ordenados. A situao mais desfavorvel para o mtodo aquela em que o vetor a ser ordenado se apresenta na ordem contrria desejada. Por outro lado, o melhor caso para o mtodo aquele no qual as chaves j se apresentam previamente ordenadas. Isso significa que nenhuma transposio necessria.
ED2: MSc. Daniele Oliveira
Shell Sort
uma extenso do mtodo de insero direta (Insertion Sort) Realiza classificaes parciais do vetor a cada iterao, favorecendo o desempenho dos passos seguintes. Utilizando o incremento de shell, o algoritmo compara elementos distantes em um vetor, em vez de comparar os adjacentes.
O vetor [] dividido em segmentos. Cada um dos segmentos classificado por insero direta, separadamente. No ltimo passo: = 1. Vetor ordenado.
Como Funciona?
10
11
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
12
13
14
Buble Sort
O Bubble Sort se baseia em trocas de valores entre posies consecutivas, levando os valores mais altos (ou mais baixos) para o final do arquivo. O Bubble Sort o mtodo que tem a implementao mais simples, por isso muito utilizado.
15
Desempenho
Melhor caso: aquele no qual as chaves j se encontram ordenadas Pior caso: ordem inversa.
16
Quick Sort
O Quick Sort se baseia no paradigma de dividir e conquistar:
Dividir o problema em um determinado nmero de subproblemas Conquistar os subproblemas, resolvendo-os recursivamente. Combinar as solues dadas aos subproblemas, a fim de formar a soluo para o problema original.
17
Como funciona?
O particionamento dos nmeros feito atravs da escolha de um determinado elemento, chamado piv, e em seguida todos os elementos menores que o piv ficam a sua esquerda, enquanto que os maiores ficam do seu lado direito. O processo continua de forma recursiva, ordenando-se os subvetores particionados dos lados esquerdo e direito. A escolha do piv pode ser definida usando uma estratgia, como por exemplo, o primeiro elemento do vetor, o ltimo, o mediano, etc.
ED2: MSc. Daniele Oliveira
18
Preparao
1.
1. 1. 2.
Escolha o Piv
Armazene o valor em uma varivel x i no primeiro elemento j no ltimo elemento
2. 2 apontadores
19
Execuo
1. Incrementa i at encontrar um elemento maior ou igual ao piv 2. Decrementa j at encontrar um elemento menor ou igual ao piv
1. 2.
1.
Se a posio de j for maior que a posio de i, trocamos seus valores (volta a 1) Se a posio de j for menor ou igual que a posio de i, separamos o vetor em (Inicio do Vetor at j-1) e (i+1 at o Fim do Vetor).
Reinicia o processo.
20
21
22
Fim da Aula 2
23
ESTRUTURAS DE DADOS II
MSc. Daniele Carvalho Oliveira
Contedo Programtico
1. 2. 3.
1. 2. 3.
4.
1. 2. 3. 4. 5.
rvores
Definio Representao Tipos de rvores Percursos em rvores Balanceamento
5.
1. 2. 3.
Classificao de Dados
Por Seleo Por Distribuio Por Intercalao
6. 7.
Grafos Hash
2
Aula 2
Selection Sort
A cada passo do algoritmo, feita uma Busca Linear (Sequencial) nos elementos no ordenados para encontrar o menor (maior) elemento. Ele , ento, colocado na sua posio correta.
SEMINRIOS
Seminrios
Equipe
Mximo 6 alunos
Seminrios
Valor - 10 pts Artigo - peso 1
Formato Normas ABNT Contedo
Apresentao peso 2
Avaliao Individual Presena Obrigatria em todas as apresentaes
Artigo
Elaborar um Artigo: Introduo Conceitos Exemplos Consideraes Finais Referncias Data de Entrega:
16/11
Apresentao
Data de Apresentao (Sorteio)
23/11 30/11 07/12 14/12
Tempo de Apresentao
30 minutos a 40 minutos
10
Apresentao
Ser avaliado:
O uso do tempo (30-40m) foi adequado? Houve organizao e planejamento da apresentao? Os recursos didticos (imagens textos, slides..) foram usados de maneira correta? A apresentao foi clara e objetiva? O aluno demonstrou conhecimento sobre o assunto abordado? Total 1 1 1 3 4 10
11
Temas
Processamento de Linguagem Natural Linguagem Go! Web Semntica e Ontologias Computao Pervasiva Reconhecimento de Informao Linhas de Produto de Software Sistemas de Informao Geogrfica
12
RVORE
13
Introduo
Filas, pilhas Estruturas Lineares Um dos exemplos mais significativos de estruturas no-lineares so as rvores. Muito utilizadas para representar uma hierarquia.
14
Definio
Uma rvore T um conjunto finito, no-vazio de ns, = 1 2 , com as seguintes propriedades:
1. 2.
Um n especial, r, chamado de raiz da rvore; O restante dos ns particionado em 0 subconjuntos, cada um sendo uma rvore.
15
Exemplos
= {} uma rvore
= {, } uma rvore
= , , , , , , , ,
uma rvore
16
Terminologia
Considere uma rvore = {, 1 , 2 , , }, 0
O grau de um n o nmero de sub-rvores relacionadas com aquele n. Um n de grau 0 no possui sub-rvores. Esse n chamado de folha. Cada raiz da sub-rvore chamada de filho de . O termo neto definido de forma anloga. O n raiz da rvore o pai de todas as razes das sub-rvores , 1 < Duas razes e das sub-rvores distintas e de so ditas irms
17
= { 1 , 2 , , }
18
19
rvores n-rias
Uma rvore N-ria T um conjunto finito de ns com as seguintes propriedades:
1. 2. O conjunto vazio, = ; ou O conjunto consiste em uma raiz, , e rvores N-rias distintas
20
21
RVORES BINRIAS
22
rvores Binrias
Uma rvore binria se caracteriza pelo fato de todos os seus ns terem no mximo duas sub-rvores, ou seja, uma rvore de grau 2. Toda rvore binria possui as seguintes propriedades:
1. 2. 3. Cada sub-rvore tambm uma rvore binria. O grau de um n representa o seu nmero de sub-rvores. Em uma rvore binria, o grau mximo de um n 2.
Referimo-nos aos filhos de um n em uma rvore binria como sendo sub-rvore esquerda ou subrvore direita, de acordo com seu posicionamento.
ED2: MSc. Daniele Oliveira
23
24
25
Insero em ABP
Aps a insero do novo elemento, a rvore deve manter as propriedades de rvore binria de pesquisa. O n inserido sempre uma folha.
26
Remoo em ABP
3 casos
1. 2. 3. O n a ser removido uma folha O n a ser removido possui apenas um filho O n a ser removido possui dois filhos
27
Percurso em rvores
Um percurso numa rvore binria uma forma sistemtica de acesso a todos os seus ns, em geral realizando algum tipo de operao. Duas categorias de percurso:
Percurso em profundidade os ns da sub-rvore atual tm prioridade na ordem de acesso. Percurso em largura os ns de menor nvel tm prioridade na ordem de acesso.
28
Percurso em Profundidade
Trs tipos cannicos:
Pr-ordem:
Visitar a raiz Percorrer a sub-rvore esquerda em pr-ordem Percorrer a sub-rvore direita em pr-ordem
Ps-ordem:
Percorrer a sub-rvore esquerda em ps-ordem Percorrer a sub-rvore direita em ps-ordem Visitar a raiz
In-ordem (simtrica):
Percorrer a sub-rvore esquerda em ordem simtrica Visitar a raiz Percorrer a sub-rvore direita em ordem simtrica
ED2: MSc. Daniele Oliveira
29
Percurso em Largura
O percurso em largura primeiro visita todos os ns do nvel 0, depois todos os ns do nvel um, e da por diante. Os ns so visitados da esquerda para a direita em cada um dos nveis.
30
rvores de Expresses
Expresses algbricas como / + possuem inerentemente uma estrutura de rvore. Os ns terminais de uma rvore de expresso so variveis ou constantes da expresso. Os outros ns de uma rvore so operadores (+, ,,). Os parnteses no aparecem na rvore. A representao em rvore mantm a inteno dos parnteses. rvores de Expresso so geralmente binrias, por que? Os operadores algbricos mais comuns so binrios ou unrios.
31
Percurso
O que podemos fazer com rvores de expresso? Imprimir a expresso representada na rvore. Um percurso em ordem simtrica visita os ns na ordem: ,, , +, , , ,, Considere um percurso em ordem simtrica que, quando encontra um n terminal, o imprime; e quando encontra um n no terminal faz:
1. 2. 3. 4. 5. Imprime um parntese esquerdo; Percorre a sub-rvore da esquerda; Imprime a raiz; Percorre a sub-rvore da direita; e Imprime um parntese direito.
Sada: ( +
32
Notao Infixa
A notao dos exemplos anteriores chamada de notao infixa, porque cada operador aparece entre seus operandos. Existe uma relao natural entre a notao infixa e o percurso em ordem simtrica. S possvel para operaes binrias (soma, diviso...)
33
Notao Prefixa
O operador escruto antes dos seus operandos. Utiliza-se um percurso em pr-ordem para imprimir a expresso. Para cada n no terminal:
1. 2. 3. 4. 5. 6. Imprime a raiz; Imprime um parntese esquerdo; Percorre a sub-rvore esquerda; Imprime uma vrgula; Percorre a sub-rvore da direita; e Imprime um parntese direito.
Sada: + ( , , , , ) ( , , , , )
ED2: MSc. Daniele Oliveira
34
Notao Posfixa
O percurso em ps-ordem produz uma expresso posfixa. Em uma expresso posfixa o operador vem depois dos operandos. A vantagem das expresses posfixas (e prefixas) que parnteses no so necessrios. Aplicando um percurso em ps-ordem, temos: +
35
Notao Posfixa
Uma expresso posfixa pode ser avaliada usando uma pilha de avaliao durante o percurso, da seguinte forma:
1. 2.
a) b) c)
Quando um n terminal for visitado, seu valor colocado na pilha Quando um n no terminal for visitado:
So retirados dois valores da pilha A operao especificada pelo n feita com os dois valores O resultado colocado na pilha.
3.
Quando o percurso terminar, existir apenas um valor na pilha, que corresponder ao valor da expresso.
Agora, em vez de fazer a computao de cada n que for visitado, emite-se o cdigo requerido para avaliar a expresso. Isso exatamente o que um compilador faz para compilar uma expresso.
ED2: MSc. Daniele Oliveira
36
Fim da Aula 2
37