Você está na página 1de 1

UFV - Universidade Federal de Vicosa

DPI - Departamento de Inform


atica
Prof. Andre Gustavo dos Santos
INF 610 - Estruturas de Dados e Algoritmos - 2015/1

Lista de Exerccios 3
Implementac
ao
Para quarta, 30/mar/2015

TAD - Multiconjunto
Em algumas situac
oes e necess
ario armazenar os dados de um conjunto. Em um conjunto os dados nao tem
uma ordem especfica, de tal forma que o conjunto A = {1, 2, 5} e identico ao conjunto B = {2, 5, 1}. Existem
ainda situacoes em que os elementos podem aparecer mais de uma vez, por exemplo C = {1, 2, 1, 1, 5, 2}. Tal
conjunto e chamado de multiconjunto (pois permite repeticao de elementos). Apesar de possuir elementos
com os mesmos valores, temos que C 6= A e C 6= B, mas C e identico por exemplo a D = {5, 2, 2, 1, 1, 1}.
Neste exerccio voce deve implementar um TAD muticonjunto com pelo menos as seguintes operacoes:
INSERE - insere um dado elemento em um multiconjunto
PERTENCE - verifica se um dado elemento pertence ao multiconjunto (isto e, se ele aparece pelo
menos uma vez)
FREQUENCIA - retorna quantas vezes um elemento aparece no multiconjunto
REMOVE - remove um dado elemento de um multiconjunto (se aparece mais de uma vez, remove
apenas uma)
APAGA - remove todas as ocorrencias de um elemento do multiconjunto
UNIAO - recebe dois multiconjuntos e retorna um multiconjunto que e a uniao deles
INTERSECAO - recebe dois multiconjuntos e retorna um multiconjunto que e a intersecao deles (isto
e, que contem os elementos em comum)
DIFERENCA - recebe dois multiconjuntos e retorna um multiconjunto que e a diferenca entre eles
(isto e, contem todos os elementos do primeiro conjunto que nao ocorrem no segundo, considerando
repeticoes)
1. Implemente duas vers
oes diferentes do TAD multiconjunto, isto e, use duas estruturas de dados diferentes e implemente as operac
oes de acordo com a estrutura de dados utilizada. As estruturas de dados
podem ser listas, contguas ou encadeadas, ordenadas ou nao, que guardam os elementos repetidos ou
apenas a frequencia deles, enfim, use sua criatividade.
Considere ainda que os elementos do multiconjunto sao valores numericos (inteiros ou de ponto flutuante), que est
ao dentro de algum intervalo (exemplos: [0 . . . 10000], [0 . . . 109 ], [109 . . . 109 ]). Voce
pode considerar ainda um tamanho maximo (grande) pre-definido para o multiconjunto, se necess
ario.
2. Faca uma compara
c
ao te
orica entre as versoes de TAD propostas. Para isto, faca uma analise de
complexidade das operac
oes considerando melhor, pior ou caso medio (o que for mais apropriado) e
tambem uma an
alise do espaco ocupado.
3. Faca uma an
alise experimental das versoes de TAD propostas. Para isto, faca um programa que utilize
centenas, milhares, milh
oes de vezes algumas operacoes e verifique o tempo de execucao. Alternativamente, pode-se contar o n
umero de vezes que a(s) operacao(oes) basica(s) e executada.
4. Enumere as vantagens e desvantagens de cada TAD proposto.
5. Faca uma comparac
ao (te
orica ou experimental) com a classe multiset da STL/C++.
Foram de entrega: prepare um arquivo compactado .zip (ou outro formato) contendo todo o codigo implementado e um relat
orio completo com a descricao dos TADs e as analises e comparacoes solicitadas. Enviar por email para andreufv@gmail.com com o assunto INF610 - TAD Multiconjunto - xxxxx, sendo
xxxxx substitudo pelo seu n
umero de matrcula. O codigo deve ter comentarios nas partes mais importantes.

Você também pode gostar