DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Análise Combinatória com SQL: Trabalhando com Grupos Grandes

Veja neste artigo como usar SQL para gerar arranjos e combinações de elementos agrupados 3 a 3.

1. Introdução

Veremos neste artigo como utilizar instruções SQL para gerar grupos combinados de três elementos, um assunto abordado no estudo da “Análise Combinatória”. Aqui, veremos como formular consultas para obter combinações e arranjos de elementos agrupados 3 a 3.

2. Arranjos 3 a 3

Utilizaremos a tabela T_CONJUNTO, a qual possui apenas uma tabela e 4 registros, conforme vemos na Figura 1.

Tabela T_CONJUNTO

Figura 1 Tabela T_CONJUNTO

Suponha que se deseja realizar o arranjo destes 4 elementos em grupos de 3. A Listagem 1 mostra como obter tal resultado. Do código, podemos destacar alguns pontos importantes:

  • É necessário utilizar 3 instâncias da tabela na cláusula FROM.
  • Também é preciso utilizar um certo número de restrições na cláusula WHERE com objetivo de evitar que linhas com elementos repetidos sejam retornadas. Basicamente, é preciso comparar todos os pares de tabelas que podem ser formados (C1 com C2, C1 com C3 e C2 com C3).

Listagem 1: Arranjo dos Elementos 3 a 3

SELECT * FROM T_CONJUNTO C1, T_CONJUNTO C2, T_CONJUNTO C3
WHERE (C1.ELEMENTO <> C2.ELEMENTO) 
      AND (C1.ELEMENTO <> C3.ELEMENTO) 
      AND (C2.ELEMENTO <> C3.ELEMENTO)
ORDER BY 1,2,3
 

Para arranjos, o número de grupos é N!/(N-P)!, onde N é a quantidade original de elementos a serem agrupados e P a quantidade de elementos em cada grupo. No nosso caso, o resultado terá 4!/(4-3)! = 24 registros, conforme observamos na Figura 2.

Resultado da Consulta - Arranjos dos elementos 3 a 3

Figura 2: Resultado da Consulta - Arranjos dos elementos 3 a 3

3. Combinações 3 a 3

De maneira análoga, podemos produzir as combinações de elementos 3 a 3 (Listagem 2).

Listagem 2: Combinação de Elementos 3 a 3

SELECT * FROM T_CONJUNTO C1, T_CONJUNTO C2, T_CONJUNTO C3
WHERE (C1.ELEMENTO < C2.ELEMENTO) 
      AND (C1.ELEMENTO < C3.ELEMENTO) 
      AND (C2.ELEMENTO < C3.ELEMENTO)
ORDER BY 1,2,3
 

Para combinações o número de grupos resultantes é N!/(N-P)!xP!, onde N e P são os mesmos explicados para os arranjos. Neste caso, o resultado foi 4!/(4-3)!x3! = 4 registros (ver a Figura 3).

Resultado da Consulta - Combinação dos elementos 3 a 3

Figura 3: Resultado da Consulta - Combinação dos elementos 3 a 3

4. Modelo Geral para Combinações e Arranjos

Dos exemplos apresentados, podemos concluir que deveremos usar as seguintes regras sempre que for desejado realizar o arranjo ou combinação de N elementos tomados P a P:

  • Instanciar a tabela P vezes na cláusula FROM.
  • Comparar todos os possíveis pares de tabelas instanciadas na cláusula WHERE. Usa-se a desigualdade quando deseja-se formar arranjos ( “<> ”) e o operador “menor que” ( “ < ” ) para realizarmos combinações.

Assim finalizamos este artigo sobre análise combinatória utilizando a linguagem SQL.


Eduardo Corrêa Gonçalves
Doutorando e mestre em Ciência da Computação pelo Instituto de Computação da Universidade Federal Fluminense (IC/UFF). Atua principalmente nas seguintes linhas de pesquisa: Mineração de Dados, Algoritmos, Banco de Dados e XML.
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03