Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de...

42
Estruturas de Dados Murilo Salgado Razoli

Transcript of Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de...

Page 1: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Estruturas de Dados

Murilo Salgado Razoli

Page 2: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um computador, podem ser usadas em diversos tipos de aplicações.

Page 3: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Estruturas de Dados Clássicas Vetores( Arrays); Lista; Pilha; Filas; Grafos; Árvores:

Árvores Binárias.

“Estrutura de dados é o ramo da computação que estuda os diversos mecanismos de organização de dados para atender aos diferentes requisitos de processamento;

TAD

Page 4: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Uma Estrutura de Dados pode ser dividida em dois pilares fundamentais:Dados e Estrutura

Dados

Elemento que possui valor agregado e que pode ser utilizado para solucionar problemas computacionais.

Estrutura

Elemento Estrutural que é responsável por carregar informações dentro de uma estrutura de software

Page 5: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

TAD – Tipo Abstrato de Dados

“Um tipo abstrato de dados define uma classe de objetos abstratos que é completamente caracterizada pelas operações disponíveis nestes objetos. Isto significa que um tipo abstrato de dados pode ser definido pela definição e caracterização das operações daquele tipo” (Liskov, 1974).

Page 6: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Tipos Abstratos de Dados (TAD)

Vantagens: Usam a TAD por meio da interface de acesso;

Sem conhecer os detalhes de representação. Não acessam o módulo de implementação;

Idealmente, a implementação é “invisível”; Programador usa TAD e cria uma lista de clientes e aplica operações

sobre ela, sem saber como ela é representada internamente.

Page 7: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Tipos Abstratos de Dados ou “TAD”: incluímos operações para a manipulação desses dados.

Funções que interagem com os dados. Ex:

- Criação da Estrutura; - Inclusão de um Elemento; - Remoção de um Elemento; - Acesso a um Elemento ; - Etc...

Encapsulamento e Segurança; Flexibilidade e Reutilização;

Page 8: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Exemplo: “TAD”Separa a Implementação da Aplicação.

Linguagem C - Descomplica

Page 9: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

ListaEm geral as operações que podem ser realizadas em uma lista são:

- Inicializar- Inserir - Buscar- Acessar- Eliminar- Cadastro de funcionários- Tamanho da Lista- Destruir...

Page 10: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Exemplos: Lista Telefônica; Lista de clientes de uma agência bancária; Lista de setores de disco a serem acessados por um sistema operacional;

Page 11: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Lista Estática e Lista Dinâmica

Lista Estática:• O espaço da memória é Alocado no momento da Compilação;• Exige um número máximo de Elementos;• Acesso Sequencial;

Lista Dinâmica:• O espaço da memória é alocado em tempo de execução.• A lista cresce à medida que novos elementos são armazenados, e

diminui à medida que elementos são removidos.• Acesso encadeado.

Page 12: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Características Importantes: Consequência: As quatro primeiras operações são feitas em tempo constante. As

demais, porém, requererão mais cuidados.

Desvantagem: Movimentação quando eliminado/inserido elemento; Tamanho máximo pré –estimado;

Vantagem: Acesso direto indexado a qualquer elemento da lista Tempo constante para acessar o elemento i - dependerá somente do índice. Movimentação quando eliminado/inserido elemento; Tamanho máximo pré –estimado;

Quando usar: Listas pequenas Inserção/remoção no fim da lista Tamanho máximo bem definido

Page 13: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.
Page 14: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Lista Encadeada Dinâmica Representada por ponteiros.

~Quando utilizar essa “Lista”?Alocamos na memória ‘nó’ por ‘nó’

Page 15: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Características

Desvantagens: Necessidade de percorrer a lista para acessar um elemento. Acesso Indireto aos elementos.

Vantagens: Melhor utilização dos recursos de memória. Não precisa movimentar os elementos nas operações de inserção e

remoção.

Page 16: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Lista Duplamente Encadeada Um tipo de Lista onde cada elemento aponta para o seu sucessor e

antecessor da na “Lista”

Page 17: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Implementação: Algoritmo Cadastro de Funcionários.

   

Page 18: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Pilha (Stack)

A estrutura denominada pilha implementa o conceito de FILO (First-In, Last-Out) ;

Nessa estrutura, cada elemento armazena um ou vários dados e um ponteiro para o próximo elemento;

Aplicações: Inserção, consulta, remoção e esvaziar.

TOPO;

Page 19: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.
Page 20: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Uma Pilha é um tipo especial de “Lista” - Inserções e exclusões de elementos ocorrem apenas no inicio da “lista”

Page 21: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Aplicações

Verificação de parênteses.

Retirada de vagões de um trem.

Retirada de mercadorias em um caminhão de entregas.

Page 22: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Alocação dinâmica O espaço de memória é alocado em tempo de execução.

Alocação estática O espaço de memória é alocada no momento da compilação.

Aplicações: Análise de uma expressão matemática Avaliação de expressão pós-fixa

Page 23: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Calculadora pós fixada Um bom exemplo de aplicação de pilha é o

funcionamento das calculadoras da HP (Hewlett-Packard).

(1 – 2) * (4 + 5) assim: 1 2 – 4 5 + * .

Page 24: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.
Page 25: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Algoritmo Stack (Array Implemetation)

Algoritmo - Pilha Estática em um Vetor: https://www.cs.usfca.edu/~galles/visualization/StackArray.html

Page 26: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Pilha Dinâmica Cada elemento aponta para o seu sucessor na “pilha”.

Usa um ponteiro especial (ponteiro para ponteiro) para o primeiro elemento da “pilha ” e uma indicação de final de “pilha”

Page 27: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Assim as operações do TAD são as seguinte:

Inicializa Pilha;

Pilha Vazia;

Empilha;

Desempilha.

Page 28: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Algoritmo Stack (Linked List Implementaion)

Algoritmo - Pilha Dinâmica em um Vetor: https://www.cs.usfca.edu/~galles/visualization/StackLL.html

Page 29: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Grafos É um modelo matemático que representa relações entre objetos

Permite Representar: Cidades e Estradas Computadores e Conexões de Rede Pessoas e Relacionamentos

Representa pontos e ligações entre eles: Vértices e Arestas.

Page 30: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Problemas Reais

Page 31: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Grafos: É definido como um conjunto de vértices e um conjunto de

arestas que conectam qualquer par de vértices. G = (V,A)

V é o conjunto de vértices (não vazio). A é o conjunto de arestas. Se G(V,A), V = {1,2,3,4} A = ({1,2},{1,4},{2,3},{3,4}) Uma aresta sempre conecta dois vértices (v1,v2).

1

4

2

3

Page 32: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Grau de um vértice e Laço

• Grau de Entrada:• Arestas que chegam no vértice.

• Grau de Saída: • Arestas que partem do vértice.

Page 33: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.
Page 34: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Tipos de Grafos Representação de Grafos:

Como representar um grafo no computador? Linguagens C, Java...

Duas Abordagens são muito utilizadas: “Matriz de Adjacência” “Lista de Adjacência”

Page 35: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Matriz de Adjacência Algumas características:

Uma matriz NxN utilizada para armazenar o grafo, onde N é o número de vértices.

Alto custo computacional , (N^2). Uma aresta é representada por uma ”marca” na posição (i,j) da matriz.

Page 36: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Ideia de Representação:

Page 37: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Ideia de Representação:

Page 38: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Lista de Adjacência

Page 39: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.
Page 40: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Curiosidade Algoritmo de Dijkstra

Page 41: Estruturas de Dados Murilo Salgado Razoli. Estruturas de Dados Estruturas de dados são formas de armazenamento e organização de dados na memória de um.

Bibliografia http://pt.slideshare.net/mcastrosouza/grafos-representao

http://danielamaral.wikidot.com/introducao-a-teoria-dos-grafos

https://www.cs.usfca.edu/~galles/visualization/BST.html

http://cameraweb.ccuec.unicamp.br/watch_video.php?v=cwAwxa1z89

https://www.youtube.com/user/italogross

https://www.youtube.com/user/progdescomplicada

http://pt.slideshare.net/silvanooliveira/apostila-complementar-de-estrutura-de-dados-lista-pilha-fila-e-arvores-com-exerccios