Estruturas de Dados , Slides de Estruturas de Dados e Algoritmos. Aston University
amanda-costa
amanda-costa6 de Abril de 2017

Estruturas de Dados , Slides de Estruturas de Dados e Algoritmos. Aston University

PDF (595 KB)
43 páginas
34Número de visitas
Descrição
Apresentação sobre estruturas de dados em algoritmos de computadores.
20pontos
Pontos de download necessários para baixar
este documento
baixar o documento
Pré-visualização3 páginas / 43
Esta é apenas uma pré-visualização
3 shown on 43 pages
baixar o documento
Esta é apenas uma pré-visualização
3 shown on 43 pages
baixar o documento
Esta é apenas uma pré-visualização
3 shown on 43 pages
baixar o documento
Esta é apenas uma pré-visualização
3 shown on 43 pages
baixar o documento

Algoritmos e Estruturas de Dados I

Estruturas de Dados Lineares

Estáticas e Dinâmicas

Engenharia de Computação CEFET-MG

2016/2

Sumário

 Conceitos

 Estruturas de dados lineares e não lineares

 Estruturas de dados estáticas e dinâmicas

 Conceito de lista

 Alocação estática e dinâmica de memória

 Conceito de Tipo Abstrato de Dados (TAD)

 Tipos abstratos de dados lista, pilha e fila

 Implementações estáticas de pilha, lista e fila

Conceitos

 o que são ESTRUTURAS DE DADOS (EDs)

 são construções de dados que podem ser implementadas em uma linguagem de programação

 programas = algoritmos + estruturas de dados

 importância do estudo das EDs

 aprender a projetar EDs eficientes e genéricas

 conhecer as EDs mais comuns

 selecionar ou projetar a estrutura “certa” para um determinado problema

 muitas vezes a escolha da ED mais apropriada é a decisão mais importante da implementação!

Estruturas de dados

 existe relacionamento intrínseco entre a escolha da ED e os algoritmos

 a escolha da ED pode definir os algoritmos e a eficiência do programa

 para os mesmos dados

 EDs diferentes podem requerer mais ou menos espaço

 para as mesmas operações sobre os dados  EDs diferentes requerem algoritmos diferentes: mais ou menos eficientes

Classificação das estruturas de dados

lineares Não lineares

estáticas

dinâmicas

Listas Pilhas Filas

Listas Pilhas Filas

Matrizes

Matrizes

Árvores

Alguns exemplos de cada caso

Estruturas de dados LINEARES

 Estruturas de dados lineares

 os dados estão armazenados na forma de uma lista linear

 Definição formal de lista

 seqüência linear de 0 ou mais itens ou elementos cuja principal propriedade estrutural é a posição relativa dos elementos na seqüência

 xi precede xi+1 para 1 <= i <= n - 1

 x i sucede x

i-1 para 2 <= i <= n

 x i é o i-ésimo elemento da lista, x

1 é o primeiro, x

n é o último

n é o número de elementos = tamanho da lista

Exemplos de listas lineares

 Exemplos de ED lineares

 lista de tarefas, de compras, de processos,

 de livros, de presentes, de URLs

 sentença é uma lista de palavras:

 a ordem das palavras é importante

 itinerário

 lista de lugares a serem visitados

 um log

 lista de eventos que ocorreram em um sistema

 erros, acessos, eventos em geral

 ataques, invasões em um sistema

Listas, pilhas e filas

 Há vários tipos de listas  FIFO: First In First Out

 LIFO: Last In First Out

 LRU: Least Recently Used

 MRU: Most Recently Used

 LFU: Least Frequently Used

 MFU: Most Frequently Used

 prioridade, random, heap (fila de prioridade)

 pilhas e filas  são casos especiais, particulares da lista

Estruturas de dados não lineares

 estruturas não lineares: matrizes, árvores, grafos  Tema da disciplina AEDS2

Alocação estática e dinâmica de memória

 Alocação estática e dinâmica de memória

 alocação estática de memória: gerenciada pelo compilador e alocada na stack memory

 alocação dinâmica de memória: gerenciada pelo programador e alocada na parte da memória denominada dynamic heap

 listas estáticas

 implementadas com vetores (arrays)

 vetor: coleção fixa de elementos do mesmo tipo armazenados de forma contígua e acessíveis por um índice que têm correspondência direta e sequencial com a memória

 listas dinâmicas, ligadas ou encadeadas

 implementadas com apontadores

Alocação estática e dinâmica de memória

 Alocação estática: gerenciada pelo compilador  Espaço é alocado na pilha de memória (stack)

 Alocação dinâmica: feita em tempo de execução  Espaço é alocado na memória na região do heap

Representação da alocação de memória estática e dinâmica

Representação da memória

por processo

Comparação entre alocação estática e dinâmica de memória

Alocação estática  todo o espaço é alocado de uma só vez

 tamanho pode ser definido em tempo de compilação ou de execução

 o espaço é contíguo na memória

 vetor na memória: bytes em sequência

 indexação é provida automaticamente pelo vetor a[i]

 qualquer elemento pode ser acessado ao mesmo custo

 é fácil fazer acesso aleatório neste espaço

 RAM = Random Access Memory

Comparação entre alocação estática e dinâmica de memória

Alocação dinâmica

 o espaço é alocado à medida em que é necessário na memória heap

 a estrutura é dinâmica: o tamanho máximo da ED não precisa ser conhecido antecipadamente

 tamanho da ED é limitado pelo tamanho da memória, incluindo memória virtual

 o espaço não é contíguo e não há indexação direta de cada elemento armazenado

 a ligação entre elementos e o acesso são feitos por meio de apontadores (ponteiros)

 custo do acesso é diferente para os elementos armazenados

 gasta-se mais espaço para os apontadores

 uso: quando não é possível prever a demanda de memória: permite tratar quantidades imprevisíveis de dados, além de outros critérios

Alocação dinâmica de memória

 Permite a implementação de estruturas muito flexíveis e dinâmicas

 podem crescer e encolher de forma elegante ...

 de acordo com a aplicação ...

 durante a execução!

Tipos Abstratos de Dados

 TADs

 um TAD é uma especificação de um conjunto de dados e um conjunto de operações que pode ser realizado sobre estes dados

 o conjunto de operações escolhido depende da aplicação/contexto do problema

 conjuntos diferentes de operações definem TADs diferentes

 a especificação do conjunto de dados pode ser feita por um modelo matemático; ex: conjunto de números naturais

 Especifica O QUE fazer em uma operação

 não inclui o COMO fazer, a implementação: pode ser implementado de várias formas

Tipos Abstratos de Dados

 Para que usar TADs  Para formalizar a definição do tipo de dados e das operações  O TAD é como um contrato: todas as regras são definidas sem que haja

conexão com a implementação  Cada parte pode ser implementada separadamente  Muito útil em programação feita por grupos de programadores

 TADs para estruturas lineares: apresentados a seguir  TAD Lista  TAD Pilha  TAD Fila

TAD Lista: considerações  Conjunto de dados: lista: seqüência de elementos

 operações: algoritmos que alteram o conjunto de dados

 inicializar a lista: criar uma lista vazia

 verificar se a lista está vazia

 inserir um elemento na lista

 no início, no fim, após um valor, ordenado, em uma posição específica

 retirar um elemento da lista

 do início, do fim, de uma posição, a primeira ocorrência, todas as ocorrências, após um valor ou posição

 pesquisar um elemento na lista

 informar o tamanho da lista: retornar o número de elementos

continua...

TAD Lista – mais operações

 Conjunto de dados: lista: seqüência de elementos  mais operações:

 encontrar o mínimo, o máximo  alterar / trocar um elemento  imprimir a lista  concatenar duas listas  comparar duas listas: verificar se são iguais  ordenar os elementos da lista de acordo com uma chave  etc...

Pilha - stack

 Pilha  lista em que as inserções e retiradas são feitas em apenas um lado  lista LIFO: Last In First Out

 topo da pilha  local onde são feitas as inserções e retiradas

topo

TAD Pilha

 Conjunto de dados: lista: seqüência de elementos  operações: algoritmos que alteram o conjunto de dados

 inicializar a pilha: criar uma pilha vazia  verificar se a pilha está vazia  inserir um elemento na pilha:

 empilhar (push) ==> sempre no topo  retirar um elemento da pilha:

 desempilhar (pop) ==> o que está no topo  consultar o elemento do topo da pilha  informar o tamanho da pilha: retornar o número de elementos  imprimir a pilha

TAD Pilha

 aplicações da pilha  gerenciamento de memória  análise sintática de expressões aritméticas  operações com notação polonesa  Compiladores, sistema operacional  Etc...

Fila - Queue

 Fila

 lista em que as inserções são feitas no fim da lista e as retiradas são feitas no início da lista

 lista FIFO: First In First Out

 ordem de chegada

 FCFS: First Come First Served

 fim da fila

 ponto de inserção de elementos na fila

 início da fila

 ponto onde são feitas as retiradas

TAD Fila

 Conjunto de dados: lista: seqüência de elementos

 operações: algoritmos que alteram o conjunto de dados

 inicializar a fila: criar uma fila vazia

 verificar se a fila está vazia

 inserir um elemento na fila

 enfileirar: sempre na última posição enqueue

 retirar um elemento da fila

 desenfileirar: retira o primeiro dequeue

 consultar o elemento do início da fila

 informar o tamanho da fila: retornar o número de elementos

 imprimir a fila

Aplicações de Filas  Aplicações: gerenciar filas em sistemas

 teoria de filas: o computador pode ser modelado como um sistema de filas, assim como as linhas de produção

 fila de transações bancárias para execução

 fila de processos no escalonador do sistema operacional

 fila de requisições em servidores

 fila de jobs para impressão

 fila de acessos ao disco

 fila de acesso à memória

 simuladores de filas

TAD: especificação X implementação

 Especificação X implementação

 são coisas distintas

 para definir um TAD é necessário especificá-lo mas não é necessário implementá-lo: o TAD não inclui a implementação

 a especificação é anterior à implementação

 a especificação não diz como o TAD será implementado

 especifica as operações sobre os dados e seus resultados

 portanto, um TAD pode ser implementado de várias formas

 um TAD bem implementado pode permitir que a implementação seja alterada mantendo a especificação

comentários (0)
Até o momento nenhum comentário
Seja o primeiro a comentar!
Esta é apenas uma pré-visualização
3 shown on 43 pages
baixar o documento