Algoritmo clique maximo - Analise de Algoritmos
-
Upload
adilmar-dantas -
Category
Technology
-
view
701 -
download
0
description
Transcript of Algoritmo clique maximo - Analise de Algoritmos
Algoritmo CliqueMáximo
O que é uma Clique?
•Uma clique de um grafo G é um subgrafo completo de G.
O que é uma Clique Máxima?
•Uma clique máxima é uma clique com a maior quantidade de vértices possível.
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).
Dificuldades do Problema
•O Problema da Clique Máxima é um problema importante de otimização combinatória
Aplicações
•Telecomunicação
•Bioinformática▫Análise de DNA e RNA
analisando e comparando proteínas e compostos menores através de grafos e cliques
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.
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.
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
•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
•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
•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
•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
•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)
Algoritmo Aproximado
•Pseudo Código
clique_maxima_aproximada(Grafo g):conjuntoOrdenadoGrau <- ordenaVertice(V) maxClique <- conjuntoOrdenadoGrau(1)para cada vertice vi de i=2 até N
se (formaClique(vi, maxClique))maxClique = maxClique U vi
retorna maxClique
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 viretorna maxClique Total : O(n³)
Referência
•http://www.ime.usp.br/~eufrasio/eufrasio/pauloeufrasioIC2009.pdf
•http://ubiq.inf.ufpel.edu.br/arrsouza/lib/exe/fetch.php?media=clique_de_um_grafo.pdf
•http://lcavique.no.sapo.pt/publicacoes/Clique%20Tabu.pdf