Conjunto (tipo de dado abstrato)
Este artigo não cita fontes confiáveis. (Junho de 2015) |
Em ciência da computação, um conjunto é uma estrutura de dados abstrata que pode armazenar certos valores, sem qualquer ordem particular, e sem valores repetidos. É uma implementação computacional do conceito matemático de um conjunto finito. Diferentemente da maioria dos outros tipos de coleções, em vez de recuperar um elemento específico de um conjunto, normalmente testa-se um valor para verificação se é membro do conjunto.
Algumas estruturas de dados de conjunto são projetadas para conjuntos estáticos ou congelados que não mudam depois que eles são construídos. Conjuntos estáticos permitem operações apenas de consulta em seus elementos - como verificar se um determinado valor está no conjunto, ou enumerar os valores em alguma ordem arbitrária. Outras variantes, chamados de conjuntos dinâmicos ou mutáveis, permitem também a inserção e exclusão de elementos do conjunto.
Uma estrutura de dados abstrata é uma coleção, ou agregação, de dados. Os dados podem ser booleanos, números, caracteres ou outras estruturas de dados. Se considerar-se que a estrutura deu-se por empacotamento ou indexação, há quatro estruturas de dados básicas:
- desempacotada, não-indexada: grupo
- empacotada, não-indexada: conjunto
- desempacotada, indexada: string (seqüência)
- empacotada, indexada: lista (arranjo)
Neste ponto de vista, o conteúdo de um conjunto são um grupo, e os itens de dados isolados são cachos elementares (elementos). Considerando que os conjuntos contêm elementos, cachos consistem de elementos.
Estruturação adicional pode ser conseguida ao se considerar a multiplicidade de elementos (conjuntos tornam-se multi-conjuntos, cachos tornam-se híper-cachos), ou a sua homogeneidade (um registo é um conjunto de campos, não necessariamente todos do mesmo tipo).
Suporte de linguagens
[editar | editar código-fonte]Uma das primeiras linguagens a suportar conjuntos foi a Pascal. Muitas linguagens hoje o incluem, seja no núcleo da linguagem ou em uma biblioteca padrão.
- Java oferece a interface
[[[:Predefinição:Javadoc:SE/Home URL]]docs/api/java/util/Set.html Set]
para suportar conjuntos (com a classe[[[:Predefinição:Javadoc:SE/Home URL]]docs/api/java/util/HashSet.html HashSet]
implementando-a, usando uma tabela hash), e a subinterface[[[:Predefinição:Javadoc:SE/Home URL]]docs/api/java/util/SortedSet.html SortedSet]
para suportar conjuntos ordenados (com a classe[[[:Predefinição:Javadoc:SE/Home URL]]docs/api/java/util/TreeSet.html TreeSet]
implementando-a, usando uma árvore de pesquisa binária). - Python possui os tipos
set
efrozenset
desde a versão 2.4, e desde as versões 3.0 e 2.7, Python suporta conjuntos literais não-vazios usando uma sintaxe chaveta, por exemplo:{x, y, z}
.