2. O que é uma Clique?
•Uma clique de um grafo G é um subgrafo
completo de G.
3. O que é uma Clique Máxima?
•Uma clique máxima é uma clique com a maior
quantidade de vértices possível.
4. O Problema da Clique Máxima
•O problema da Clique Máxima é encontrar, a
partir de um grafo G, a clique de maior tamanho.
•O tamanho (número de vértices) da maior clique
de G é chamado número de clique, ω(G).
7. Aplicações
•Química Computacional
▫Emparelhamento de moléculas
Hidrocarbonetos conhecidos como alcanos tem
fórmula química CpH2p+2, onde C representa
moléculas de carbono e H de hidrogênio.
Os vértices que incidem apenas uma arestra são os
átomos de Hidrogênio.
8. Exemplo prático
•Suponha que, em um laboratório farmacêutico,
seja necessário dimensionar o depósito de
substâncias composto por alguns refrigeradores,
tendo em mãos uma lista de pares de substâncias
que não podem ser armazenadas em um mesmo
refrigerador. Assim, o clique máximo do grafo
formado por tais incompatibilidades é um
limitante inferior para a quantidade de
refrigeradores necessários para armazenar todas as
substâncias.
9. Algoritmo Força Bruta
•Pseudo Código
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices)
maxClique <- {}
para cada conjunto s de todos Conjuntos
se (formaClique(s) && (s.tamanho > maxClique.tamanho)
maxClique <- s
retorna maxClique
10. •Pseudo Código + Análise (n = |V|)
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices)
maxClique <- {}
para cada conjunto s de todos Conjuntos
se (formaClique(s) && (s.tamanho > maxClique.tamanho)
maxClique <- s
retorna maxClique
Algoritmo Força Bruta
11. •Pseudo Código + Análise
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices) O(2N)
maxClique <- {}
para cada conjunto s de todos Conjuntos
se (formaClique(s) && (s.tamanho > maxClique.tamanho)
maxClique <- s
retorna maxClique
Algoritmo Força Bruta
12. •Pseudo Código + Análise
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices) O(2N)
maxClique <- {}
para cada conjunto s de todos Conjuntos O(2N)
se (formaClique(s) && (s.tamanho > maxClique.tamanho)
maxClique <- s
retorna maxClique
Algoritmo Força Bruta
13. •Pseudo Código + Análise
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices) O(2N)
maxClique <- {}
para cada conjunto s de todos Conjuntos O(2N)
se (formaClique(s) && (s.tamanho > maxClique.tamanho) O(N²)
maxClique <- s
retorna maxClique
Algoritmo Força Bruta
14. •Pseudo Código + Análise
clique_maxima_exato(Grafo g):
todosConjuntos <- todasCombinacoes(g.Vertices) O(2N)
maxClique <- {}
para cada conjunto s de todos Conjuntos O(2N)
se (formaClique(s) && (s.tamanho > maxClique.tamanho) O(N²)
maxClique <- s
retorna maxClique
Algoritmo Força Bruta
Total : O(2^n *n^2)
16. Algoritmo Aproximado
•Pseudo Código + Análise (n = |V|)
clique_maxima_aproximada(Grafo g):
conjuntoOrdenadoGrau <- ordenaVertice(V) O(nlogn)
maxClique <- conjuntoOrdenadoGrau(1)
para cada vertice vi de i=2 até N O(n)
se (formaClique(vi, maxClique)) O(n²)
maxClique = maxClique U vi
retorna maxClique
Total : O(n³)