INF610LE32015

download INF610LE32015

of 1

Transcript of INF610LE32015

  • 7/21/2019 INF610LE32015

    1/1

    UFV - Universidade Federal de VicosaDPI - Departamento de InformaticaProf. Andre Gustavo dos SantosINF 610 - Estruturas de Dados e Algoritmos - 2015/1

    Lista de Exerccios 3Implementacao

    Para quarta, 30/mar/2015

    TAD - Multiconjunto

    Em algumas situacoes e necessario armazenar os dados de um conjunto. Em um conjunto os dados nao temuma ordem especfica, de tal forma que o conjunto A ={1, 2, 5}e identico ao conjunto B= {2, 5, 1}. Existemainda situacoes em que os elementos podem aparecer mais de uma vez, por exemplo C={1, 2, 1, 1, 5, 2}. Talconjunto e chamado de multiconjunto (pois permite repeticao de elementos). Apesar de possuir elementoscom os mesmos valores, temos que C= Ae C= 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 pelomenos 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, removeapenas 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 (istoe, 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 versoes diferentes do TAD multiconjunto, isto e, use duas estruturas de dados dife-rentes e implemente as operacoes de acordo com a estrutura de dados utilizada. As estruturas de dadospodem ser listas, contguas ou encadeadas, ordenadas ou nao, que guardam os elementos repetidos ouapenas a frequencia deles, enfim, use sua criatividade.

    Considere ainda que os elementos do multiconjunto sao valores numericos (inteiros ou de ponto flu-tuante), que estao dentro de algum intervalo (exemplos: [0 . . . 10000], [0 . . . 109], [109 . . . 109]). Vocepode considerar ainda um tamanho maximo (grande) pre-definido para o multiconjunto, se necessario.

    2. Faca uma comparacao teorica entre as versoes de TAD propostas. Para isto, faca uma analise decomplexidade das operacoes considerando melhor, pior ou caso medio (o que for mais apropriado) etambem uma analise do espaco ocupado.

    3. Faca umaanalise experimental das versoes de TAD propostas. Para isto, faca um programa que utilizecentenas, milhares, milhoes de vezes algumas operacoes e verifique o tempo de execucao. Alternativa-mente, pode-se contar o numero de vezes que a(s) operacao(oes) basica(s) e executada.

    4. Enumere as vantagens e desvantagens de cada TAD proposto.

    5. Faca uma comparacao (teorica ou experimental) com a classe multisetda STL/C++.

    Foram de entrega: prepare um arquivo compactado .zip(ou outro formato) contendo todo o codigo im-plementado e um relatorio completo com a descricao dos TADs e as analises e comparacoes solicitadas. En-viar por email para [email protected] o assunto INF610 - TAD Multiconjunto - xxxxx, sendoxxxxxsubstitudo pelo seu numero de matrcula. O codigo deve ter comentarios nas partes mais importantes.