Fila. Algoritmos e Estruturas de Dados I

Documentos relacionados
Fila. Fila. Biblioteca. Biblioteca. Biblioteca. Biblioteca. O que é? Para que serve? Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I. Baseado no material de Thiago A. S. Pardo. Debora Medeiros

Fila. SCC0502 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo

22/08/2011. Fila. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Fila. O que é? Para que serve?

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações

Filas Implementação Sequencial

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

Fila. 26 e 31/8/2008 Representação/Implementação: Seqüencial estática Encadeada dinâmica Exercícios/Aplicações

Lista: conceito, representação e algoritmos

SCC Algoritmos e Estruturas de Dados I

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

LP II Estrutura de Dados

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Estrutura de Dados: Lista Linear. Parte I Introdução e Listas Sequenciais Estáticas

BCC202 - Estrutura de Dados I

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

Estruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Listas ordenadas. SCC-202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Listas em que os elementos estão ordenados por algum critério

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

LISTAS LINEARES. Estrutura de Dados

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

Algoritmos e Estruturas de dados

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

SCC Algoritmos e Estruturas de Dados I

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Lista Encadeada: algoritmos. Algoritmos e Estruturas de Dados I

Métodos Computacionais. Listas Encadeadas

Estruturas de Dados Filas

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!

SCC122 - Estruturas de Dados. Lista Estática Seqüencial

Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Listas ordenadas. Definição

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

programas = estrutura de dados + algoritmos

Revisão de TDA, Pilhas e Filas

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

Estruturas de Dados com Jogos. Capítulo 2 Pilhas - Alocação Sequencial e Estática

Estruturas de Dados - Filas

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Aula 07: Filas

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Lineares. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Estrutura de Dados Listas

SCC 202 Algoritmos e Estruturas de Dados I. Listas Lineares Encadeadas Alocação dinâmica

Professora Jeane Melo

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Tipos Abstratos de Dados

Fila e Deque. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Pilhas e Filas. Nádia Félix e Hebert Coelho

Algoritmos e Estruturas de Dados II IEC013

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Estrutura de Dados: Aula 3 - Linguagem C

12. Filas Interface do tipo fila

INF P4-12/12/09 Questão 1 Nome:

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Estruturas de Dados Aula 11: TAD Pilha

Árvores & Árvores Binárias

Aula 7 Encadeamento de Memória

Grafos tipo abstrato de dados

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 03 Pag.: 1

Estruturas de Dados Aula 10: Listas (parte 2) 19/04/2011

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Estruturas Compostas Parte II

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1010 Estruturas de Dados Avançadas

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

INF 1620 P2-23/10/04 Questão 1 Nome:

Algoritmos e Estruturas de dados

FICHA 8 PILHAS E FILAS

Estruturas de Dados I

Aplicações de listas e outras estruturas

PRIMEIRA AVALIAÇÃO IDENTIFICAÇÃO. Nome: 22/09/2010

Algoritmos e Estruturas de Dados I

LP II Estrutura de Dados

Transcrição:

Fila Algoritmos e Estruturas de Dados I

Fila O que é? Para que serve? 2

Biblioteca Problema: automação de uma biblioteca Todos os livros devem ser cadastrados O sistema deve informar se um livro está disponível ou não nas estantes Caso o livro não esteja disponível, o usuário pode aguardar em uma fila de espera Quando o livro for devolvido, o primeiro da fila de espera pode retirá-lo Sua tarefa: desenvolver esse sistema 3

Biblioteca 1º passo: abstração Identificar os elementos do mundo real que são relevantes para a solução do problema 4

Biblioteca Quais são eles? 5

Biblioteca Elementos relevantes Um cadastro de livros Indicação da disponibilidade dos livros Uma fila de espera para cada livro, com indicação da ordem das pessoas Primeiro e último da fila Cadastro de pessoas: nome, endereço e telefone 6

Biblioteca 2º passo: quais são as operações possíveis nas filas? Entrar na fila Quem entra, entra onde? Sair da fila Quem sai, sai de onde? Outras? 7

Fila (queue) O que é? É uma estrutura para armazenar um conjunto de elementos, que funciona da seguinte forma Novos elementos sempre entram no fim da fila O único elemento que se pode retirar da fila em um dado momento é seu primeiro elemento Para que serve? Modelar situações em que é preciso armazenar um conjunto ordenado de elementos, no qual o primeiro elemento a entrar no conjunto será também o primeiro elemento a sair do conjunto, e assim por diante F.I.F.O First In, First Out 8

Aplicações de fila Biblioteca Lista de espera para livros Impressão Documentos a serem impressos Aeroporto Lista de espera para vôos Tarefas (Jobs) do Sistema Operacional Outras? 9

Operações Cria(F): cria uma fila F vazia Entra(F,X): X entra no fim da fila F Sai(F,X): o primeiro elemento da fila F é retirado da fila e atribuído a X IsEmpty(F): verdade se a fila estivar vazia; caso contrário, falso IsFull(F): verdade se a fila estiver cheia; caso contrário, falso 10

Exemplo 11

Implementação da fila Alocação seqüencial Os elementos da fila ficam, necessariamente, em seqüência (um ao lado do outro) na memória Alocação estática Todo o espaço de memória a ser utilizado pela fila é reservado (alocado) em tempo de compilação Todo o espaço reservado permanece reservado durante todo o tempo de execução do programa, independentemente de estar sendo efetivamente usado ou não 12

Implementação da fila Início aponta para/indica o primeiro da fila, ou seja, o primeiro elemento a sair Fim aponta para/indica o fim da fila, ou seja, onde o próximo elemento entrará 13

Implementação da fila Qual a condição inicial, quando a fila é criada? Qual a condição para fila vazia? Qual a condição para fila cheia? 14

Implementação da fila Qual a condição inicial, quando a fila é criada? Início=0, fim=1 (fim= índice adiantado do (próximo) lugar para inserção) Qual a condição para fila vazia? Qual a condição para fila cheia? 15

Implementação da fila Qual a condição inicial, quando a fila é criada? Início=0, fim=1 Qual a condição para fila vazia? Início=0, fim=1? Qual a condição para fila cheia? 16

Implementação da fila Qual a condição inicial, quando a fila é criada? Início=0, fim=1 Qual a condição para fila vazia? Início=0, fim=1? Qual a condição para fila cheia? fim=tamanho do array+1? 17

Exemplo de uso da fila Criação da fila 18

Exemplo de uso da fila entra(f,a), entra(f,b), entra(f,c) 19

Exemplo de uso da fila entra(f,z), entra(f,r), entra(f,s) IsFull=TRUE 20

Exemplo de uso da fila sai(f,x), sai(f,x) IsFull=TRUE!!!! Como inserir mais elementos? Qual o problema com a fila? 21

Fila Como reutilizar os espaços do início da fila? 22

Fila Como reutilizar os espaços do início da fila? Outra forma de implementação Melhor aproveitamento da representação utilizada Fila vista como um ANEL 23

Fila como ANEL Qual a condição para fila vazia? Qual a condição para fila cheia? Qual a condição inicial (quando a fila é criada)? 24

Fila como ANEL Qual a condição para fila vazia? Qual a condição para fila cheia? Qual a condição inicial (quando a fila é criada)? Difícil! Perde-se um pouco do sentido com essa 25 representação

Fila como ANEL Solução: campo extra para guardar número de elementos 26

Fila como ANEL Qual a condição para fila vazia? Qual a condição para fila cheia? Qual a condição inicial (quando a fila é criada)? 27

Fila como ANEL Qual a condição para fila vazia? Total=0 Qual a condição para fila cheia? Qual a condição inicial (quando a fila é criada)? 28

Fila como ANEL Qual a condição para fila vazia? Total=0 Qual a condição para fila cheia? Total=tamanho do array Qual a condição inicial (quando a fila é criada)? 29

Fila como ANEL Qual a condição para fila vazia? Total=0 Qual a condição para fila cheia? Total=tamanho da fila Qual a condição inicial (quando a fila é criada)? Total=0, início=1, fim=1 30

Exemplo Fila criada início=1, fim=1, total=0 31

Exemplo Entra A início=1, fim= fim+1=2, total=1 A 32

Exemplo Entra B início=1, fim=fim+1=3, total=2 A B 33

Exemplo Entra C início=1, fim=fim+1=4, total=3 A B C 34

Exemplo Sai primeiro início= início+1=2, fim=4, total=2 B C 35

Exemplo Sai primeiro início=início+1=3, fim=4, total=1 C 36

Exemplo Entra D início=3, fim=fim+1=5, total=2 D C 37

Exemplo Entra E início=3, fim=fim+1=6, total=3 E D C 38

Exemplo Entra F início=3, fim= (fim+1) % 6 =1, total=4 F E D C 39

Exemplo Entra G Início=3, fim=fim+1=(fim+1) % 6 =2, total=5 F G E D C 40

Passo a passo para Entra e Sai Entra elemento no fim da fila Se não estiver cheia (Total = tamanho array): vetor[fim]=elemento avança fim ( módulo tamanho do array para fazer a curva, se preciso) atualiza total Sai primeiro elemento Se não estiver vazia (Total 0): elemento=vetor[início] avança início ( módulo tamanho do array para fazer a curva, se preciso) atualiza total 41

Implementação da fila Declaração em C #define TamFila 100 typedef int elem; typedef struct { int inicio, fim, total; elem itens[tamfila]; } Fila; Fila F; 42

Operações sobre a fila Implementar as operações Create Empty IsEmpty IsFull Entra Sai Atenção: considerações sobre TAD Arquivos.c e.h, parâmetros 43

Interface do TAD Fila (.h) #define TRUE 1 /*define tipo boleano*/ #define FALSE 0 #define boolean int #define TamFila 100 typedef char elem; typedef struct { int inicio, fim, total; elem A[TamFila]; } Fila; void Create(Fila*); void Empty(Fila*); boolean IsEmpty(Fila*); boolean IsFull(Fila*); boolean Entra(Fila*, elem*); boolean Sai(Fila*, elem* ); 44

Implementando as operações: Fila como Anel (.c) #include "fila.h" #define TRUE 1 /*define tipo boleano*/ #define FALSE 0 #define boolean int void Create(Fila *F) { /* inicializa fila F como vazia */ } F->inicio=0; F->fim=0; F->total=0; return; void Empty(Fila *F) { /* esvazia logicamente a fila F */ } F->inicio=0; F->fim=0; F->total=0; return; 45

boolean IsEmpty(Fila *F) { /*verifica se F está vazia */ return (F->total==0); } boolean IsFull(Fila *F) {/*verifica se array está cheio */ return (F->total==TamFila-1); } boolean Entra(Fila *F, elem *X) { /*insere X no início da Fila F, se não estiver cheia*/ if (!IsFull(F)) { F->total++; F->A[F->fim]=*X; F->fim = (F->fim +1) % TamFila; return TRUE; } return FALSE; } 46

boolean Sai(Fila *F, elem *X) { /*elimina do início da fila e copia valor eliminado em X */ } if (!IsEmpty(F)) { } F->total--; *X=F->A[F->inicio]; F->inicio = (F->inicio +1) % TamFila; return TRUE; return FALSE; 47

Análise da Complexidade Fila Sequencial (Anel) Acesso a elemento Apenas no início: tempo constante (via índice início ) O(1) Inserção Apenas no fim: tempo constante (via índice fim ) O(1) Eliminação Apenas no início: tempo constante (via índice início ) O(1) Portanto, toda operação tem custo independente do tamanho da fila Espaço: exatamente o necessário para armazenar o número de elementos da fila Desvantagem: espaço máximo fixado pelo tamanho do array pode ser excessivo ou insuficiente 48

Exercício Faça uma função para verificar se os elementos de uma fila estão ordenados de forma crescente Faça uma função que inverta uma fila F1, criando-se uma nova fila F2 49

Exercício Implemente o sistema para a biblioteca usando o TAD fila Cada livro deve ser representado por um registro Nome do livro, disponibilidade, fila de espera Ao requisitar um livro, a pessoa entra na fila de espera se o livro não estiver disponível Quando um livro fica disponível, o primeiro da fila de espera do livro deve receber o livro Implemente as demais funcionalidades (cadastra livro, retira livro, etc.) que julgar necessárias 50

Filas de Prioridade Filas em que a prioridade de remoção não é cronológica Maior prioridade não é do elemento que ingressou primeiro Exemplos de Aplicações Vôos lotados (standby flyers) Listas de espera em geral (p. ex. transplantes) Fila de processos para o Sistema Operacional 51

TAD Fila de Prioridade Armazena Itens Item: par (chave, informação) chave determina prioridade p.ex. a idade de uma pessoa na fila do banco Operações principais: 1. Insere no fim e remove o de maior prioridade (tem que fazer uma busca antes da remoção), OU 2. Insere de acordo com a prioridade (buscando o lugar correto onde inserir) e remove do Início