THALYSON GOMES NEPOMUCENO DA SILVA

Tamanho: px
Começar a partir da página:

Download "THALYSON GOMES NEPOMUCENO DA SILVA"

Transcrição

1 UNIVERSIDADE ESTADUAL DO CEARÁ CENTRO DE CIÊNCIAS E TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO MESTRADO ACADÊMICO EM CIÊNCIA DA COMPUTAÇÃO THALYSON GOMES NEPOMUCENO DA SILVA PROPOSTA E AVALIAÇÃO DE NOVAS HEURÍSTICAS BASEADAS EM UM PROCEDIMENTO DE DIVISÃO DE GRAFO E USO DE B-ESTRATÉGIA PARA O PROBLEMA DE COLORAÇÃO DE VÉRTICES FORTALEZA CEARÁ 2016

2 THALYSON GOMES NEPOMUCENO DA SILVA PROPOSTA E AVALIAÇÃO DE NOVAS HEURÍSTICAS BASEADAS EM UM PROCEDIMENTO DE DIVISÃO DE GRAFO E USO DE B-ESTRATÉGIA PARA O PROBLEMA DE COLORAÇÃO DE VÉRTICES Dissertação apresentada ao Curso de Mestrado Acadêmico em Ciência da Computação do Programa de Pós-Graduação em Ciência da Computação do Centro de Ciências e Tecnologia da Universidade Estadual do Ceará, como requisito parcial à obtenção do título de mestre em Ciência da Computação. Área de Concentração: Ciência da Computação Orientador: Prof. Dr. Leonardo Sampaio Rocha Co-Orientador: Prof. Dr. Gerardo Valdisio Rodrigues Viana FORTALEZA CEARÁ 2016

3 Dados Internacionais de Catalogação na Publicação Universidade Estadual do Ceará Sistema de Bibliotecas Silva, Thalyson Gomes Nepomuceno da. Proposta e Avaliação de Novas Heurísticas Baseadas em um Procedimento de Divisão de Grafo e Uso de B- estratégia para o Problema de Coloração de Vértices [recurso eletrônico] / Thalyson Gomes Nepomuceno da Silva CD-ROM: il.; 4 ¾ pol. CD-ROM contendo o arquivo no formato PDF do trabalho acadêmico com 69 folhas, acondicionado em caixa de DVD Slim (19 x 14 cm x 7 mm). Dissertação (mestrado acadêmico) - Universidade Estadual do Ceará, Centro de Ciências e Tecnologia, Mestrado Acadêmico em Ciência da Computação, Fortaleza, Área de concentração: Heurísticas em Grafos. Orientação: Prof. Dr. Leonardo Sampaio Rocha. Coorientação: Prof. Dr. Gerardo Valdisio Rodrigues Viana. 1. Coloração. 2. Heurística. 3. Grafo. I. Título.

4

5 Aos meus pais.

6 AGRADECIMENTOS Gostaria de agradecer aos meus familiares, por estarem ao meu lado nessa caminhada. Aos meus amigos e colegas, por sempre estarem dispostos à me ajudar em dificuldades na pesquisa. À minha namorada, por ter me aguentado e me ajudado durante todo o período do mestrado. Gostaria de agradecer aos meus orientadores, que sempre estiveram dispostos a me ajudar, até mesmo no período de férias deles. À UECE e todo seu corpo docente, por estarem comigo deste 2010, me ensinando e me dando oportunidade de sempre aprender um pouco mais.

7 I m on a boat. (Andy Samberg)

8 RESUMO O problema de Coloração de Vértices é extensivamente estudado em Teoria dos Grafos, e consiste em colorir os vértices de um grafo de tal forma que vértices adjacentes tenham cores distintas e que o número de cores utilizadas seja o menor possível. Neste trabalho são apresentadas quatro novas heurísticas para o problema de coloração de vértices, baseadas em uma nova técnica proposta de divisão de grafo e na utilização da b-estratégia para reduzir o número de cores. Novas instâncias voltadas para a aplicação em alocação de frequências foram formuladas e também utilizadas em testes. Nos testes computacionais, os algoritmos propostos se mostraram competitivos em relação ao tempo de processamento e qualidade de solução, conseguindo, para a maioria das instâncias, soluções tão boas quanto as melhores soluções conhecidas. Palavras-chave: Coloração. Heurística. Grafo

9 ABSTRACT The vertex coloring problem is extensively studied in graph theory, and consists of coloring the vertices of a graph such that adjacent vertices have different colors and the number of colors used is minimum. This work presents four new heuristics for the vertices coloring problem, based on a proposal technical of graph division and a post-processing using b-coloring. New instances focused on the allocation of frequencies were made and also used in tests. In computational tests, the proposed algorithms proved competitive with the processing time and solution quality. Obtaining, for most instances, as good as the best current solution algorithms in respect of solution quality and running in a better time cost. Keywords: Coloring. Heuristic. Graph

10 LISTA DE ILUSTRAÇÕES Figura 1 Representação em grafo de um mapa Figura 2 Graus de cada vértice no grafo exemplo Figura 3 Exemplos de um grafo G com ω(g) = Figura 4 Exemplos de grafos bipartido, 3-partido e 4-partido Figura 5 Exemplos de colorações Figura 6 Representação de variáveis em uso e grafo de interferência Figura 7 Representação em grafo das estações de transmissão Figura 8 Exemplo de transformação de Mycielski Figura 9 Redução de uma classe de cor Figura 10 Diferença na coloração dependendo da sequência S Figura 11 Execução da divisão em raiz quadrada em um grafo de 9 vértices Figura 12 Execução de busca em largura com utilização de passos de tamanho dois. Nessa figura é ilustrado um grafo e 4 vértices, inicialmente, não coloridos. Em (a), o vértice 1 é adicionado na fila para coloração. Em (b), o vértice 1 é colorido e o vértice 3 é adicionado na fila para coloração. Em (c), o vértice 3 é colorido, e nenhum vértice é adicionado na fila, pois todos os vértices com distância 2 do vértice 3 já foram coloridos. Em (d), os vértices 2 e 4 são coloridos Figura 13 (a) Representa um grafo de 8 vértices, sendo o número escrito em cada vértice correspondente ao respectivo índice. (b) Ilustra a coloração final do grafo (a) caso fosse utilizado o algoritmo sequencial para sua coloração Figura 14 A figura ilustra a configuração final caso o procedimento de b-coloração fosse aplicado Figura 15 (a) Apresenta a configuração da coloração do grafo após a classe de cor 2 ser analisada. (b) Apresenta a configuração da coloração do grafo após a classe de cor 3 ser analisada Figura 16 A figura ilustra o processo de geração das instâncias. Inicialmente são gerados pontos aleatórios no plano, em seguida pontos próximos são conectados por arestas Figura 17 Instância myciel

11 Figura 18 Exemplos de Queen Graphs: queen_2_2, queen_2_2, queen_2_4, queen_2_5 e queen_2_ Figura 19 Ilustração da instância Miles Figura 20 Ilustração da instância Huck

12 LISTA DE TABELAS Tabela 1 A tabela apresenta os números de cores utilizadas por cada heurística em cada instância. Os valores são apresentados de forma x y, em que x representa a quantidade de cores obtida pela heurística sem utilização da b-estratégia, e y representa a quantidade de cores utilizadas ao final da b-estratégia. Na última linha da tabela, são apresentadas as médias de cores utilizadas por cada uma das heurísticas para o grupo de instâncias utilizado Tabela 2 Resumo de desempenho dos algoritmos para as instâncias da família QUEEN. São apresentadas as quantidade de cores utilizadas por cada algoritmo em cada instância. Também é apresentada a quantidade de vértices e a quantidade de arestas e a densidade de cada instância. Números em negrito indicam que foram as melhores soluções para determinada instância, considerando os algoritmos testados. Onde é apresentado o caractere, indica que não se tem dados suficientes para a inferência da informação Tabela 3 Para cada algoritmo testado, foi contabilizada a quantidade de soluções ótimas encontradas nas 18 instâncias com ótimos conhecidos, e quantas vezes cada algoritmo conseguiu encontrar a melhor solução entre as soluções dos algoritmos testados Tabela 4 Tabela comparativa com o algoritmo DSATUR. A primeira coluna apresenta o nome das instâncias utilizadas. Cada par de colunas posteriores apresenta as quantidades de cores utilizadas nas colorações e os tempos de execução, respectivamente. Nas últimas duas colunas é apresenta a quantidade de vértices e a quantidade de arestas de cada instância Tabela 5 Tabela comparativa com o algoritmo FLOW. A primeira coluna apresenta o nome das instâncias utilizadas. Cada par de colunas posteriores apresentam as quantidades de cores utilizadas nas colorações e os tempos de execução, respectivamente. Nas últimas duas colunas é apresenta a quantidade de vértices e a quantidade de arestas de cada instância Tabela 6 Resultados médios do GRASP, BT e dos algoritmos propostos. O resultado apresentado é a média aritmética do número de cores utilizadas nas soluções finais em cada uma das famílias de instâncias Tabela 7 Quantidade de cores utilizadas nas soluções para as instâncias da família MYC. 57

13 Tabela 8 Comparação de tempo para MYC Tabela 9 Quantidade de cores utilizadas nas soluções para as instâncias da família REG. 58 Tabela 10 Tempo de execução das heurísticas, em segundos, para as instâncias da família REG Tabela 11 Quantidade de cores utilizadas nas soluções para as instâncias da família SGB. 59 Tabela 12 Tempo de execução das heurísticas, em segundos, para as instâncias da família SGB Tabela 13 Quantidade de cores utilizadas nas soluções para as instâncias da família LEI. 60 Tabela 14 Tempo de execução das heurísticas, em segundos, para as instâncias da família LEI Tabela 15 Quantidade de cores utilizadas nas soluções para as instâncias da família QUEEN Tabela 16 Tempo de execução das heurísticas, em segundos, para as instâncias da família QUEEN Tabela 17 A tabela apresenta a quantidade de cores utilizadas nas soluções dos algoritmos RLF, DSATUR, SS1, SS2, SSP1 e SSP2 para as instâncias propostas.. 62

14 LISTA DE ALGORITMOS Algoritmo 1 Algoritmo de Busca em Largura Algoritmo 2 Algoritmo para verificar 2-Coloração Algoritmo 3 Algoritmo da Construção de Mycielski Algoritmo 4 Algoritmo Guloso Algoritmo 5 Algoritmo DSATUR Algoritmo 6 Divisão em Raiz Quadrada Algoritmo 7 Algoritmo de Coloração por Busca em Largura Algoritmo 8 Algoritmo Sqrt Start Algoritmo 9 Algoritmo Sqrt Start Priority Algoritmo 10 B-Estratégia Modificada

15 LISTA DE ABREVIATURAS E SIGLAS BFS CA DSATUR GA GRASP LCA LCP NPC PCG RLF RMQ Breadth-First Search Cultural Algorithm Degree Saturation Genetic Algorithm Greedy Randomized Adaptive Search Procedure Lowest Common Ancestor Longest Common Prefix NP-Completo Problema de Coloração de Grafos Recursive-Largest-First Range Minimum Query

16 SUMÁRIO 1 INTRODUÇÃO FUNDAMENTAÇÃO TEÓRICA DEFINIÇÕES DE GRAFOS Grafo Adjacência, Vizinhança e Grau Caminho, Circuito, Conectividade e Clique Busca em Largura Conjuntos independentes PROBLEMA DE COLORAÇÃO DE GRAFOS Aplicações Problema de uso de registradores num processador Problema de Programação de Horários Problema de Fluxo Aéreo Problema de alocação de frequência CONSTRUÇÃO DE MYCIELSKI B-COLORAÇÃO ALGORITMOS PARA COLORAÇÃO DE VÉRTICES Algoritmos de Natureza Gulosa BUCKET SORT E DECOMPOSIÇÃO EM RAIZ QUADRADA TRABALHOS RELACIONADOS UM ALGORITMO DE COLORAÇÃO DE GRAFOS PARA GRANDES PROBLEMAS DE ESCALONAMENTO NOVO MÉTODO PARA COLORIR VÉRTICES DE UM GRAFO COLORAÇÃO DE GRAFOS PARA O GERENCIAMENTO DE FLUXO AÉREO RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILI- ZANDO ALGORITMOS GENÉTICOS HÍBRIDOS RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILI- ZANDO ALGORITMOS CULTURAIS META-HEURÍSTICA BUSCA TABU PARA O PROBLEMA DE COLORA- ÇÃO DE GRAFOS

17 3.7 UM GRASP PARA COLORAÇÃO DE GRAFOS ESPARSOS PROPOSTA JUSTIFICATIVA OBJETIVOS ALGORITMOS PROPOSTOS Divisão em Raiz Quadrada Utilização da BFS na coloração Sqrt Start Sqrt Start Priority Modificação do procedimento de b-coloração Heurísticas Propostas Formulação de instâncias METODOLOGIA TESTES COMPUTACIONAIS INSTÂNCIAS DE DIMACS Mycielski graphs Queens Graphs Miles graphs Books graphs Register graphs Leighton Graphs TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE DIMACS IMPACTO DA UTILIZAÇÃO DA B-ESTRATÉGIA Comparação com RLF e DSATUR Comparação com FLOW Comparação com as propostas de BT e GRASP Comparação com GA e CA TESTES COMPARATIVOS UTILIZANDO INSTÂNCIAS DE ALOCAÇÃO DE FREQUÊNCIAS CONCLUSÕES E TRABALHOS FUTUROS REFERÊNCIAS ÍNDICE

18 17 1 INTRODUÇÃO Qual o número mínimo de cores para colorir um mapa em que países adjacentes possuem cores distintas? Apesar de parecer simples, esse problema despertou a atenção de vários pesquisadores e, consequentemente, um grande empenho em resolvê-lo. Durante as pesquisas relacionadas ao problema, foram desenvolvidos avanços em teoria dos grafos e em matemática. Em 1852 o problema de coloração de países de um mapa foi proposto por Francis Cuthrie, ele presumiu que países do mapa poderiam ser coloridos com no máximo quatro cores, de tal forma que os países vizinhos não compartilhassem uma mesma cor. Porém, não sabia como provar isso. O problema ficou conhecido como o Problema das Quatro Cores. Em 1976, Kenneth Appel e Wolfang Haken, provaram computacionalmente que qualquer mapa pode ser colorido com no máximo quatro cores. O problema foi estendido para ser aplicado em grafos gerais, que consiste em colorir os vértices do grafo com um número mínimo de cores, de forma que vértices adjacentes não compartilhem a mesma cor. Esse problema ficou conhecido como Problema de Coloração de Grafos (KUBALE, 2004). Alguns problemas reais podem ser modelados como um problema de coloração em grafo, por exemplo: Problema de grade de horários de professores (WERRA, 1985); Alocação de tempo e frequência em sistemas de comunicação (GAMST, 1986); Alocação de registradores em um processador (CHAITIN et al., 1981); Controle de fluxo aéreo (BARNIER; BRISSET, 2004). Em geral, problemas em que eventos conflitantes não podem ocorrer simultaneamente, podem ser modelados utilizando uma coloração de grafos, em que os vértices representam objetos, e as arestas representam os conflitos existentes entre os objetos. A coloração é, então, um particionamento dos objetos em conjuntos (cores), de tal forma que objetos conflitantes (vértices adjacentes no grafos) não pertençam ao mesmo conjunto, sendo a solução do problema a quantidade mínima de conjuntos necessários para particionar todos os objetos (LEIGHTON, 1979). Apesar de ser um problema muito estudado, não é conhecido um algoritmo eficiente para resolvê-lo, sendo classificado como um problema NP-Completo (GAREY; JOHNSON, 1979). O fato do problema ser classificado como NP-Completo justifica o uso de métodos heurísticos para obter uma solução (GAREY; JOHNSON, 2002). Inicialmente, algoritmos enumerativos de tempo exponencial foram propostos para

19 18 solucionar o problema, como em (BROWN, 1972), (CHRISTOFIDES, 1971), (CHRISTOFI- DES; THEO-RY, 1975) e (JR; ACTION, 1967). Porém, estes se limitavam em solucionar o problema para grafos pequenos. Então foram propostos algoritmos construtivos gulosos de tempo polinomial, que não garantem a otimalidade das soluções encontradas, porém possuem bom desempenho para grande variedade de grafos. Os algoritmos mais conhecidos atualmente são DSATUR (BRÉLAZ, 1979) e RLF (LEIGHTON, 1979), que apesar de serem propostas antigas, vêm sendo amplamente aplicados quando se necessita de tempo de execução pequeno, ou para inicializar algoritmos mais robustos, como as meta-heurísticas (RUIZ, 2012). O presente trabalho propõe novas heurísticas aplicáveis ao problema de coloração de grafos. Para testar das heurísticas propostas, elas foram implementadas e confrontadas com outros algoritmos encontrados na literatura. O presente trabalho está dividido da seguinte forma: No Capítulo 2 são apresentadas as definições básicas de grafos necessárias para o entendimento do problema abordado, Em seguida, são apresentadas definições do Problema de Coloração de Grafos e alguns algoritmos utilizados no problema. Para finalizar, os procedimentos de b-coloração e decomposição em raiz quadrada, são apresentados. No Capítulo 3 são relatados trabalhos relacionados com o presente estudo. Apresenta-se inicialmente, os algoritmos DSATUR e RLF. Em seguida, são apresentados trabalhos que utilizam técnicas de busca para melhorar soluções encontradas. No Capítulo 4 o presente trabalho é explicado em detalhes. São fornecidas as justificativas para sua realização. São expostos os objetivos que o trabalho pretende alcançar. Também são apresentadas as propostas do trabalho e a metodologia para alcançar os objetivos. No Capítulo 5 são apresentados detalhes sobre os testes computacionais realizados, detalhando-se as instâncias utilizadas e realizando-se testes comparativos entre as propostas apresentadas o os algoritmos relacionados. No Capítulo 6 são apresentadas conclusões sobre os resultados obtidos no estudo empírico, destacando os pontos positivos e negativos das propostas apresentadas no trabalho. Também são apresentados possíveis trabalhos futuros.

20 19 2 FUNDAMENTAÇÃO TEÓRICA 2.1 DEFINIÇÕES DE GRAFOS Um grafo é uma abstração matemática. Eles são utilizados para modelar situações reais, onde os vértices representam objetos e as arestas representam os relacionamentos entre esses objetos. A Teoria dos Grafos tem sido utilizada amplamente em várias áreas da ciência, pois é possível representar qualquer tipo de relacionamento entre elementos de uma determinada natureza (FEOFILOFF et al., 2011). Nessa seção, vamos definir um grafo e seus elementos. As definições foram baseadas em (DIESTEL, 2000), e são voltadas para grafos finitos e não direcionados Grafo Um grafo é um dupla G(V,E), que consiste em um conjunto finito não vazio V = {v 1,v 2,...,v n } de vértices e um conjunto finito E = {e 1,e 2,...,e m } de arestas. Por exemplo, grafos podem representar um mapa, onde seus vértices são as regiões delimitadas por suas fronteiras, e suas arestas representam a existência de uma fronteira entre regiões do mapa. Figura 1 Representação em grafo de um mapa O conjunto de vértices de um grafo pode ser denotado por V (G), e o conjunto de arestas como E(G). O número de vértices de um grafo G(V,E) é denotado por n(g), e o número de arestas por m(g). Uma aresta {v,u} liga os vértices v e u. Por simplificação também podemos denotar a aresta entre os vértices v e u por vu. Dado dois grafos G(V,E) e G (V,E ), dizemos que G é subgrafo de G se V V e E E.

21 Adjacência, Vizinhança e Grau Um vértice v é incidente a uma aresta e se v é uma extremidade de e. Dois vértices v e u são ditos adjacentes se eles são incidentes a uma mesma aresta e. O conjunto de arestas que um vértice v é incidente é denotado por E(v). A vizinhança de um vértice v, é o conjunto de vértices de V que são adjacentes à v, e é detonado como N(v). O grau de um vértice v é igual a quantidade de vértices na vizinhança de v e é denotado por d(v). O número que representa o grau de um grafo G, (G) := max{d(v) v V }, é o maior grau de um vértice de G. Figura 2 Graus de cada vértice no grafo exemplo Caminho, Circuito, Conectividade e Clique Um caminho simples é um grafo não vazio P(V,E), de tal forma que V = {x 0,x 1,...,x k } e E = {x 0 x 1, x 1 x 2,..., x k 1 x k }, onde os vértices x i são todos distintos. Os vértices x 0 e x k são chamados de extremos. O tamanho do caminho é igual ao número de arestas de E. Um caminho P também pode ser denotado por x 0 x 1...x k. A distância entre dois vértices v e u é igual ao tamanho do menor caminho simples em que v e u sejam extremos. Um circuito é um grafo C(V,E), de tal forma que V = {x 0,x 1,...,x k }, E = {x 0 x 1,x 1 x 2,...,x k x 0 } e V 3, onde os vértices x i são todos distintos. O tamanho do circuito é igual ao número de arestas de E. Dois vértices distintos v e u estão conectados se existe um caminho em que v e u sejam extremos. Um grafo G(V,E) é conexo se para qualquer par de vértices v e u, existe um caminho em que v e u são extremos, caso contrário, dizemos que o grafo é desconexo. Um grafo completo G(V,E) é um grafo, tal que para qualquer par de vértices v e u, então vu E. Uma clique em um grafo G(V,E) é um subgrafo completo de G. Detonamos como ω(g) o tamanho

22 21 da clique de tamanho máximo no grafo G. Na Figura 3 é apresentado um grafo que possui uma clique de tamanho 4. Figura 3 Exemplos de um grafo G com ω(g) = 4 A densidade de um grafo G(V,E) representa a relação entre quantidade de arestas e a quantidade máxima de arestas suportadas pelo grafo simples não orientado, dada pela fórmula D = 2 E V ( V 1) (COLEMAN; MORÉ, 1983). Podemos perceber que o número máximo de arestas de um grafo de V vértices é V ( V 1)/2, quando temos um grafo completo. Portanto, a densidade pode variar entre 1 e Busca em Largura Um algoritmo de busca em grafo examina de forma sistemática os vértices de um grafo. Um dos algoritmos de busca conhecido, é o algoritmo BFS, que realiza uma busca em largura no grafo. Uma busca em largura iniciada em um vértice v, primeiramente, visita o vértice v. Em seguida, visita todos os vértices que estão à distância 1 de v, em seguida, todos os vértices que estão à distância 2 de v, e assim sucessivamente. Para implementar a BFS, é necessário utilizar uma fila e uma estrutura de marcação para evitar que se visite mais de uma vez um mesmo vértice. O Algoritmo 1 apresenta o pseudocódigo do algoritmo de busca em largura.

23 22 Algoritmo 1: Algoritmo de Busca em Largura Entrada: Um grafo G(V,E) e um vértice inicial v. Inicializa uma fila F de vértices; Inicializa a marcação dos vértices em 0 (não adicionado na fila); Adiciona v na fila; Altera a marcação de v para 1 (adicionado na fila); while F = 0 do v remover(f); Visita v; for Cada vértice x na vizinhança de v do if A marcação de x é 0 (não adicionado na fila) then Adiciona x na fila; Altera a marcação de x para 1 (adicionado na fila); end if end for end while Conjuntos independentes Um conjunto independente de vértices de um grafo G(V,E) é um conjunto S, S V, tal que não existe dois vértices adjacentes em G contidos em S. Dado um inteiro r 2 e um grafo G(V,E), dizemos que G é r-partido se os vértices de G podem ser particionados em r conjuntos independentes. Usualmente, os grafos 2-partidos são chamados de bipartidos. Figura 4 Exemplos de grafos bipartido, 3-partido e 4-partido Determinar se um grafo é bipartido é equivalente a determinar se o grafo pode ser colorido utilizando duas cores, de tal forma que vértices adjacentes não compartilhem a mesma cor. Para isso, podemos utilizar uma busca em largura, verificando se é possível bipartir o grafo em tempo linear. Tal algoritmo é exposto no Algoritmo 2.

24 23 Algoritmo 2: Algoritmo para verificar 2-Coloração Entrada: Um grafo G(V,E). Saída: Sim se o grafo for 2-colorível e Não caso contrário. Inicializa Cor de todos os vértices em 0 (sem cor). Inicializa uma fila F de pares (v, c), onde v é um vértice e c é a cor utilizadas; Adiciona (1,1) na fila; while F = 0 do (v, c) remover(f); if Cor de v é diferente de 0 then if Cor de v diferente de c then Retorna: Nao; end if else Colore v com a cor c; if c = 1 then c 2 else c 1 end if Para cada vértice x na vizinhança de v, adiciona na fila (v,c); end if end while Retorna: Sim; 2.2 PROBLEMA DE COLORAÇÃO DE GRAFOS A coloração de vértices de um grafo é uma atribuição de cores aos vértices de tal forma que vértices vizinhos não compartilham uma mesma cores. Também existem derivações desse problema, como a coloração de arestas e a coloração de mapas. É possível transformar o problema de coloração de mapas no problema de coloração de vértices, fazendo com que cada país seja representado por um vértice, e cada fronteira entre dois países seja representada por uma aresta. Definição (Coloração) Dado um grafo G(V,E), e um conjunto de cores S = s 1,s 2,...,s N, uma coloração do grafo é uma atribuição de cores aos vértices, de tal forma que para qualquer dois vértices adjacentes em G, eles não compartilham uma mesma cor. Definição (k-coloração) Uma coloração de um grafo G(V, E) é dita uma k-coloração quando o conjunto de cores S utilizado possui k cores, S = k.

25 24 Definição (k-colorível) Um grafo é dito k-colorível se ele possui uma k-coloração. Observação Os vértices associados a uma cor formam uma classe de cores. Em uma coloração, cada classe é um conjunto independente. Os únicos grafos que podem possuir uma 1-coloração são aquelas que não possuem arestas. Definição (Número cromático) O número cromático χ(g) é o menor inteiro k tal que G seja k-colorível. Figura 5 Exemplos de colorações Definição (Coloração ótima) Um grafo G(V, E) é k-cromático se χ(g) = k. Uma k- coloração de um grafo k-cromático é dita coloração ótima. Teorema (Teorema de Brooks (BROOKS, 1941)) Para qualquer grafo G(V, E), o número cromático χ(g) é no máximo (G) + 1. Observação Se um grafo for completo, será necessário colorir cada vértice utilizando cores diferentes, logo χ(g) = V Aplicações Problema de uso de registradores num processador A partir de um conjunto de variáveis e um conjunto de registradores disponíveis, O problema consiste em determinar os registradores que iram armazenar quais variáveis de um determinado escopo de um programa, de tal forma que minimize a quantidade de acessos à memória (CHAITIN et al., 1981). Durante a fase de compilação de um programa, o compilador decide como será a alocação das variáveis em um conjunto de registradores. Para isso, não se pode realizar a

26 25 alocação de duas variáveis que ainda estão em uso em um mesmo registrador, uma vez que uma variável está em uso se seu valor atual ainda será utilizado em uma instrução futura (CHOW; HENNESSY, 1990). Para exemplificar, visualizamos na Figura 6, retirada de (PROLO, 2007), que a variável s1 se mantém em uso da instrução a até a instrução e, enquanto a variável s2 se mantém em uso da instrução b até a instrução f. Após identificar os intervalos de usos das variáveis, é necessário gerar um grafo de interferência, conectando variáveis que são utilizadas durante intervalos coincidentes. Figura 6 Representação de variáveis em uso e grafo de interferência Problema de Programação de Horários Essa classe de problema consiste em definir o emprego de recursos em intervalos de tempo, a fim de otimizar uma configuração, sujeito a restrições específicas de cada problema (WERRA, 1985). Por exemplo, caso uma instituição de ensino deseje destinar um período exclusivamente para aplicação de provas a fim de realiza-las com o menor número possível de dias, duas provas não podem ser realizadas no mesmo intervalo de tempo se é o mesmo professor que irá aplicá-las, ou se será aplicada na mesma turma, ou se será aplicada na mesma sala (BELLO et al., 2007). Existe uma variedade de problemas relacionados com a programação de horários, por exemplos, o problema de grade de horário de professores (ERBEN; KEPPLER, 1996) (NEUFELD; TARTAR, 1974), o problema do horário de trens (CAPRARA et al., 2002) e o problema de horário de semana de provas (CARTER, 1986).

27 Problema de Fluxo Aéreo Essa classe de problemas consiste em determinar a quantidade mínima de alturas que são necessárias para manter um determinado fluxo aéreo. Em uma fluxo aéreo ideal, todos os voos são diretos, se deslocando sem escalas a partir de uma origem para um destino. Porém conflitos podem acontecer, como aviões utilizarem a mesma rota e também a mesma altura, o que poderia ocasionar colisões. Para solucionar o problema, podemos alocar os aviões que poderiam se chocar, em alturas diferentes (BARNIER; BRISSET, 2004) Problema de alocação de frequência Essa classe de problemas consiste em determinar quais as frequências que serão utilizadas para a comunicação em uma rede, a fim de minimizar a quantidade de frequências necessárias. Existem algumas variações desse problema. Em (DIAS et al., 2012) o problema é modelado para minimizar canais em telefones celulares. Em (GANDHAM et al., 2008) o problema é modelado para minimizar o tempo do ciclo na comunicação em rede sem fio. Em (GAMST, 1986) é estudado limites inferiores para problemas de alocação de frequências. Tomando como exemplo estações de rádio, onde cada estação necessita utilizar uma frequência única em uma determinada região, para que não ocorra interferência. Considerando que cada estação possua um raio de transmissão em que ela consiga estabelecer uma comunicação, podemos utilizar coloração de grafos para resolver o problema (CHARTRAND; ZHANG, 2012). Tal situação ilustrada em na Figura 7. Figura 7 Representação em grafo das estações de transmissão

28 CONSTRUÇÃO DE MYCIELSKI Um grafo obtido pela construção de Mycielski a partir de um grafo G é denotado como µ(g) (MYCIELSKI, 1955). A construção de µ(g) a partir dex um grafo G(V,E) é conseguida utilizando o Algoritmo 3. Algoritmo 3: Algoritmo da Construção de Mycielski Entrada: Um grafo G(V,E). Saída: Um grafo µ(g). µ(g) G Adicione um vértice k ao grafo µ(g); for Cada vértice v G do Adicione um vértice v em µ(g); Adicione uma aresta kv em µ(g); end for for Cada aresta vu G do Adicione uma aresta vu em µ(g); Adicione uma aresta v u em µ(g); end for RETORNE: µ(g); O passo a passo de uma construção de Mycielski é ilustrado na Figura 8. Na transformação de Mycielski de um grafo G com χ(g) = k, o grafo final µ(g) terá χ(µ(g)) = k + 1, o que nos dá controle sobre o número cromático de instâncias geradas utilizando essa construção, tomando como base instâncias com o número cromático conhecido. Ao final da construção, V (µ(g)) = 2 V (G) + 1 e E(µ(G)) = 3 E(G) + V (G). Figura 8 Exemplo de transformação de Mycielski

29 B-COLORAÇÃO Em uma b-coloração de um grafo G(V,E), cada classe de cor utilizada na coloração contém pelo menos um b-vértice, ou seja, um vértice que apresenta todas as demais cores utilizadas na sua vizinhança. Uma estratégia utilizada para encontrar uma b-coloração em um grafo, a partir de uma coloração qualquer, é verificar se existem classes de cor que não contém um b-vértice. Caso uma classe de cor não contenha um b-vértice, então podemos recolorir todos os vértices dessa classe de cor, reduzindo assim uma classe de cor. A Figura 9, retirado de (ROCHA, 2009), ilustra o funcionamento da estratégia citada. Denominaremos essa estratégia de b-estratégia. Figura 9 Redução de uma classe de cor Definição (Número b-cromático) O número b-cromático de um grafo G, denotado por χ b (G), é o maior inteiro k tal que G possui uma b-coloração utilizando k cores. 2.5 ALGORITMOS PARA COLORAÇÃO DE VÉRTICES Algoritmos de Natureza Gulosa Algumas das primeiras abordagens algorítmicas, utilizadas no problema de coloração, eram baseados em métodos gulosos que realizavam a coloração sequencial dos vértices usando uma função gulosa como guia (NETTO, 2003). As abordagens gulosas também são chamadas de sequenciais. Uma abordagem sequencial considera a existência de uma classe de cor C para cada vértice do grafo G(V,E) inicialmente vazia, e então busca uma sequência S ( S = V ) de

30 29 vértices do grafo. A ideia do algoritmo é colorir todos os vértices do grafo seguindo a sequência S, sempre colorindo o vértice com a menor cor possível, de tal forma que vértices adjacentes não compartilhem a mesma classe de cor. Tal algoritmo é apresentado no Algoritmo 5. Algoritmo 4: Algoritmo Guloso Entrada: Um grafo G(V,E) e uma sequência S de vértices. Saída: Número de cores utilizadas para colorir o grafo G. for Cada elemento de S =< v 1,v 2,...,v k > do Colore o vértice v i com a menor cor que não pertença a nenhum vértice de N(v i ); end for Retorna: A maior cor utilizada; O problema com esse algoritmo é que ele pode apresentar um desempenho ruim dependendo da sequência S escolhida, retornando uma coloração que usa um número de cores bem superior ao número cromático do grafo. A Figura 10 ilustra a diferença de coloração dependendo da sequência S utilizada. Perceba que para S =< 1,2,4,3 > são utilizadas 3 cores na coloração, enquanto para S =< 1,2,3,4 > são utilizadas apenas 2. Figura 10 Diferença na coloração dependendo da sequência S Várias heurísticas para determinar uma boa sequência S foram propostas na literatura, como as heurístcas: DSATUR (BRÉLAZ, 1979) e RLF (Recursive Largest First) (LEIGHTON, 1979). Embora as heurísticas gulosas sejam muito rápidas, podem gerar soluções insatisfatória para algumas instâncias de grafos. Nas últimas décadas, os algoritmos gulosos têm sido amplamente utilizados em aplicações onde o tempo de execução é priorizado e para gerar soluções iniciais em meta-heurísticas (LÜ; HAO, 2010). Importante notar que não existe algoritmo polinomial que garante uma solução ótima

31 30 no caso geral, pois determinar um número cromático de um grafo é um problema NP-completo (GAREY; JOHNSON, 1979). Porém, a solução ótima pode ser obtida aplicando o algoritmo sequencial, caso seja utilizada uma sequência ótima. Contudo, para um grafo de n vértices, existem n! de sequências possíveis, o que resulta em uma execução em tempo exponencial. 2.6 BUCKET SORT E DECOMPOSIÇÃO EM RAIZ QUADRADA Bucket Sort é um algoritmo de ordenação que funciona distribuindo elementos de um vetor em um número finito de recipientes, também conhecidos como buckets. E então cada bucket é ordenado utilizando algum outro algoritmo especifico, ou utilizando o Bucket Sort recursivamente, e após a ordenação, os bucktes são percorridos, recolocando no vetor os elementos já ordenados (KNUTH, 1998). A mesma ideia de dividir em buckets foi utilizada para reduzir a complexidade do problema RMQ (Range Minimum Query) de O(N) para O( N) (BERKMAN; VISHKIN, 1993). O problema RMQ consiste em determinar qual o menor elemento em um intervalo de um vetor em múltiplas consultas e atualizações. Para isso, o vetor é particionado em N buckets, e então é salvo o menor elemento de cada bucket. Tal técnica de decompor o problema em raiz quadrada ficou conhecida como Sqrt-Decomposition. Importantes problemas foram reduzidos ao problema RMQ, como o LCA (Lowest Common Ancestor) (BENDER; FARACH-COLTON, 2000) e LCP (Longest Common Prefix) (MANBER; MYERS, 1993), como mostrado em (FISCHER; HEUN, 2006). Sendo possível resolvê-los em menor complexidade de tempo utilizando a técnica Sqrt-Decomposition para o RMQ.

32 31 3 TRABALHOS RELACIONADOS Nesse capítulo são descritos trabalhos relacionados com a pesquisa realizada. Inicialmente, são apresentados os algoritmos propostos em (LEIGHTON, 1979) e (BRÉLAZ, 1979), pois são propostas gulosas, e apesar de serem trabalhos antigos, ainda hoje são frequentemente utilizados para gerar soluções iniciais para meta-heurísticas mais avançadas (NETO; GOMES, 2015). Também são apresentados os trabalhos (DOUIRI; ELBERNOUSSI, 2015), (ABBASIAN et al., 2011), (AGUIAR et al., 2005), e (LAGUNA; MARTÍ, 2001), que utilizaram meta-heurísticas para resolução do problema de coloração. 3.1 UM ALGORITMO DE COLORAÇÃO DE GRAFOS PARA GRANDES PROBLEMAS DE ESCALONAMENTO No trabalho, é proposto o algoritmo RLF (Recursive Largest First). RLF é uma heurística gulosa para encontrar uma boa solução para o problema de coloração. A ideia principal do algoritmo é que vértices de maiores graus possuem mais restrições de cores, então o algoritmo tem preferência em colorir vértices com maiores graus. O RLF funciona da seguinte forma: Dado um grafo G(V,E), o vértice v, ainda não colorido, de maior grau em G é selecionado, e recebe a menor cor possível c. Enquanto existir vértices que podem ser coloridos com a corc sem gerar conflitos de cores, é escolhido o vértice u, ainda não colorido, de maior grau, e então é colorido com a cor c. Quando não existir mais nenhum vértice colorível com a corc, se todos os vértices foram coloridos, encerra o algoritmo, caso contrário, repete o processo recursivamente. O algoritmo RLF tem complexidade de tempoo(n 2 ) para um grafo de n vértices. 3.2 NOVO MÉTODO PARA COLORIR VÉRTICES DE UM GRAFO No trabalho, é proposto o algoritmo DSATUR (Degree Saturation). O algoritmo é semelhante ao RLF, pois também tem preferência em colorir vértices com maiores graus o mais breve possível. Dado um grafo G(V,E) e C uma coloração parcial de vértices de G, define-se o grau de saturação de um vértice v como sendo a quantidade de diferentes cores apresentadas nos vértices de sua vizinhança. O funcionamento do algoritmo DSATUR pode ser descrito pelo seguinte algoritmo:

33 32 Algoritmo 5: Algoritmo DSATUR Entrada: Um grafo G(V,E). Saída: Número de cores utilizadas para colorir o grafo G. Atribua cor 1 para o vértice v de maior grau; while Existe vértice não colorido do Seleciona um vértice não colorido v de maior grau de saturação; Colore o vértice v com a menor cor que não pertença a nenhum vértice na vizinhança dev; end while Retorna: A maior cor utilizada; Assim como o algoritmo RLF, o DSATUR também tem complexidade de tempo O(n 2 ) para um grafo de n vértices. 3.3 COLORAÇÃO DE GRAFOS PARA O GERENCIAMENTO DE FLUXO AÉREO Em Barnier e Brisset (2004) é proposto um algoritmo para o problema de coloração, com objetivo de aplicá-lo ao problema de fluxo aéreo, modelado por coloração de vértices. A ideia básica do algoritmo é que as maiores cliques de um grafo possuem maiores restrições de coloração, então devem ser coloridos o mais cedo possível. Dado um grafo G(V, E), é utilizado um algoritmo guloso para encontrar um conjunto de cliques do grafo, tentando encontrar as maiores cliques possíveis. A estratégia foi inspirada no trabalho (BOMZE et al., 1999), e funciona da seguinte forma: Para cada vértice do grafo, é inicializada uma clique de tamanho 1, e então cada clique é formada incrementalmente, tentando adicionar à clique um vértice de sua vizinhança que seja adjacente à todos os vértices da clique. Entretanto, várias cliques idênticos são conseguidos por vértices iniciais diferentes, então é necessário filtrar o conjunto de cliques retornado pelo algoritmo para obter apenas cliques distintas. A complexidade da proposta para o pior caso é O(n 4 ). Após conseguir um conjunto de cliques distintas, as cliques são ordenadas de forma decrescente pelo tamanho, cada clique de tamanho máximo é colorido de forma sequencial, e em seguida é aplicado a técnica de busca incompleta proposta em (PRESTWICH, 1999) com a utilização da técnica de Branch and Bound (LAND; DOIG, 1960), para descobrir uma boa sequência de coloração das cliques restantes.

34 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILIZANDO AL- GORITMOS GENÉTICOS HÍBRIDOS Esse trabalho se baseia na meta-heurística Genetic Algorithm (GA). Holland (1992) projetou uma adaptação para que um algoritmo simule a evolução de indivíduos, conhecida como a meta-heurística Genetic Algorithm. O funcionamento do GA pode ser dividido em 7 etapas (LUCAS, 2002): Geração de soluções inciais; Avaliação; Seleção; Cruzamento; Mutação; Atualização; Finalização. Na proposta de (DOUIRI; ELBERNOUSSI, 2015), é utilizado o algoritmo DSATUR, para inicializar um valor k, como a melhor solução encontrada. Após isso, o algoritmo tenta encontrar uma coloração utilizando k 1 cores, caso seja possível, repete recursivamente o processo, caso contrário, retorna a melhor coloração encontrada até o momento. Para geração de soluções inciais na busca de uma k-coloração, o trabalho utiliza o algoritmo aproximativo proposto em (DOUIRI; ELBERNOUSSI, 2011) para dividir o grafo em conjuntos independentes de vértices, e então colorir cada conjunto com uma cor. Perceba que se existir mais de k conjuntos independentes, a coloração gerada pelo algoritmo não será uma coloração própria, necessitando remover os conflitos de cores para se tornar uma solução válida. Após a geração de uma população inicial, a meta-heurística GA irá realizar repetidas vezes os processos citados anteriormente, até atingir um determinado número de interações ou encontrar uma coloração própria. O trabalho utiliza o número de conflitos de cores como critério de seleção de solução, dando maior probabilidade de permanecer na população para as soluções com menor número de conflitos de cores. O processo de cruzamento de duas soluções acontece da seguinte forma: Dado duas soluções S 1 e S 2 que são colorações de um grafo G(V,E), é escolhido aleatoriamente um valor inteiro b, tal que 1 b < V. Então, é gerada uma solução S 3 em que os vértices de índices menores ou iguais a b são coloridos com as cores dos respectivos vértices em S 1, e os demais

35 34 são coloridos utilizando as cores dos respectivos vértices em S 2. Porém, em alguns casos é necessário realizar modificações na solução gerada para se obter indivíduos que satisfazem o problema trabalhado. O processo de mutação de uma solução S é semelhante ao processo de busca utilizado em (LAGUNA; MARTÍ, 2001), em que um vértice que apresente conflitos de cores é escolhido aleatoriamente, e então sua cor é modificada para tentar reduzir o número de conflitos de cores da solução. Na etapa de atualização de solução, as soluções que possuem menor quantidade de conflitos também possuem maior probabilidade de passarem para a geração seguinte. Ao final do algoritmo, a solução que apresenta uma coloração válida e que tenha utilizado a menor quantidade de cores é retornada. 3.5 RESOLVENDO O PROBLEMA DE COLORAÇÃO DE GRAFOS UTILIZANDO AL- GORITMOS CULTURAIS Esse trabalho se baseia na meta-heurística Cultural Algorithm (CA). A CA foi introduzida por Reynolds (REYNOLDS, 1994), e é considerada uma extensão do algoritmo genético convencional. CA é um modelo computacional do processo evolutivo cultural humano, no qual possui um sistema de herança que ocorre em dois níveis: nível populacional e nível de crenças. No nível populacional são salvas as informações de conhecimento de cada indivíduo, enquanto no nível de crenças são salvos conhecimentos que auxiliam a evolução da população, normalmente armazenando boas soluções já encontradas (REYNOLDS; SALEEM, 2005). Na geração de uma população inicial, o trabalho utiliza uma heurística gulosa com prioridade para vértices de maior grau, utilizando também um fator de aleatoriedade para obter diversidade da população. No espaço de crenças, o menor número de cores de uma coloração própria já encontrada é salvo, pois isso auxilia no processo de mutação, que seleciona aleatoriamente um vértice que possua conflitos de cores, trocando sua cor para uma das cores utilizadas na solução salva no espaço de crenças. Já os processos de cruzamentos e seleções, ocorrem de forma semelhante aos processos utilizados em (DOUIRI; ELBERNOUSSI, 2015).

36 META-HEURÍSTICA BUSCA TABU PARA O PROBLEMA DE COLORAÇÃO DE GRAFOS Esse trabalho se baseia na meta-heurística Tabu Search. Tal meta-heurística é comumente utilizada para obter soluções em problemas de otimização combinatória (GLOVER, 1997). Na busca tabu, é utilizada uma estrutura de memória para evitar movimentos cíclicos (revisitar soluções previamente visitadas), conhecida como lista tabu. Porém, somente evitar que movimentos previamente realizados serem desfeitos pode também evitar que soluções não antes alcançadas sejam descobertas. Para contornar esse problema, também é utilizado um critério de aspiração nas restrições de movimentos já realizados, normalmente esse critério de aspiração está relacionado com um número de interações de busca. No trabalho, as soluções iniciais são geradas utilizando o algoritmo XRLF, proposto em (JOHNSON et al., 1991). XRLF é uma extensão do RLF, adicionando um fator aleatório na escolha do elemento de maior grau quando existe mais de uma opção. O processo de refinamento utilizado no trabalho funciona da seguinte forma: Uma classe de cor c é escolhida para ser eliminada, em seguida os vértices que pertenciam à cor eliminada são associados à outras cores, o que pode gerar conflitos de cores, então é aplicado uma busca tabu para tentar zerar os conflitos de cores. Caso a busca tabu consiga zerar os conflitos de cores na solução, a nova solução é aceita, caso contrário é rejeitada. Na busca tabu proposta para buscar uma coloração própria, são realizadas perturbações na solução atual. Cada perturbação altera a cor de um vértice para a cor que mais reduza o número de conflitos na solução. Com isso, dada uma solução T, ela possui n perturbações possíveis, sendo n o número de vértices do grafo. A estrutura de memória tabu evita que um mesmo vértice retorne para uma cor anterior, e impede trocas consecutivas de cores do mesmo vértice por um determinado número de interações. 3.7 UM GRASP PARA COLORAÇÃO DE GRAFOS ESPARSOS Esse trabalho se baseia na meta-heurística Greedy Randomized Adaptive Search Procedure (GRASP). A GRASP trata-se de uma meta-heurística de partidas múltiplas usada para obter soluções de qualidade em problemas de otimização combinatória. Para essa meta-heurística cada iteração consiste em duas fases: uma etapa construtiva e uma etapa de busca local. A solução inicial é gerada na primeira dessas duas etapas e utilizada na segunda para verificar sua vizinhança em busca do ótimo local. Ao final é retornado o melhor dentre os ótimos locais

37 36 encontrados (FEO; RESENDE, 1995). A fase construtiva do trabalho é semelhante a utilizada em (AGUIAR et al., 2005), porém a coloração é realizada por classes de cor. Para gerar uma coloração, o algoritmo colore todos os vértices possíveis de cada cor sequencialmente, primeiro a cor 1, em sequência a cor 2, e assim por diante. Para cada cor a ser utilizada, é gerado uma lista de vértices candidatos possíveis de serem coloridos com a cor atual, e então são selecionados aleatoriamente entre aqueles de maior grau para serem coloridos, até que não exista nenhum vértice não colorido. Já na fase de refinamento, o algoritmo combina as duas classes de cores com menores cardinalidades em uma, eliminando uma cor. Como esse processo pode gerar conflitos de cores, também é utilizado um processo de busca local na tentativa de zerar os conflitos. Na busca utilizada no trabalho, um vértice que possui conflitos de cores é escolhido aleatoriamente, e então é testado alterar a cor dele para qualquer uma das demais cores possíveis, sendo escolhida a solução que mais reduza o número de conflitos de cores. Se ao final da fase de busca os conflitos forem zerados, uma nova solução é aceita. Caso contrário, uma nova busca é efetuada, até que uma nova solução seja encontrada, ou um critério de parada seja satisfeito.

38 37 4 PROPOSTA 4.1 JUSTIFICATIVA O problema de coloração de grafos é um dos problemas da classe NPC, considerados intratáveis, motivam diversas pesquisas nas áreas de computação (GLOVER; KOCHENBER- GER, 2006). A versão de otimização do problema é muito estudada na ciência da computação, pois sua estrutura é bastante utilizada para modelar problemas práticos de diversas áreas (DOUIRI; ELBERNOUSSI, 2015). Algoritmos construtivos, como DSATUR (BRÉLAZ, 1979) e RLF (LEIGHTON, 1979), com tempo de execução pequeno, são considerados muito eficientes para a maioria das instâncias, porém, em algumas famílias de grafos, os algoritmos encontram soluções de baixa qualidade (RUIZ, 2012). Então, várias técnicas meta-heurísticas vêm sido aplicadas com sucesso em obter boas soluções para instâncias em que os algoritmos construtivos não conseguem boas soluções (DOUIRI; ELBERNOUSSI, 2015). Porém, as propostas que utilizam meta-heurísticas são mais custosas que os algoritmos construtivos, no que diz respeito ao tempo de processamento (GLOVER; KOCHENBERGER, 2006). Tendo em vista que muitas aplicações de coloração de grafos requerem respostas em um pequeno intervalo de tempo, o uso de algoritmos rápidos é essencial (GANDHAM et al., 2008). Portanto, o presente trabalho propõe novos algoritmos para coloração de grafos, que executam em um tempo semelhante aos algoritmos construtivos utilizados atualmente, porém, na maioria das instâncias, conseguem encontrar soluções com qualidade próxima as soluções conseguidas em trabalhos que utilizam meta-heurísticas, além disso, também conseguem boas soluções em instâncias que são consideradas difíceis para algoritmos construtivos. Também serão propostas novas instâncias baseadas na aplicação em alocação de frequências, realizando testes computacionais e comparando os algoritmos propostos nas instâncias geradas. 4.2 OBJETIVOS O objetivo geral do trabalho é desenvolver e analisar novas heurísticas para o problema de coloração de vértices, que tenham baixo custo quanto ao tempo de processamento e que consigam encontrar soluções de boa qualidade. Como objetivos específicos, temos: Gerar novas heurísticas para o problema de coloração de vértice. Proposta de modificação na b-estratégia, estudando o impacto da proposta na redução do

39 38 número de cores utilizadas em uma coloração de vértices. Testar as heurísticas propostas para o problema de coloração de vértice, realizando testes comparativos entre os métodos propostos e outros métodos encontrados na literatura. Formular novas instâncias voltados para o problema de alocação de frequência, e realização de testes computacionais nas instâncias geradas. 4.3 ALGORITMOS PROPOSTOS O trabalho traz como proposta 4 algoritmos para o problema de coloração de vértices. A principal ideia dos algoritmos é dividir o grafo G(V,E) em V subgrafos, em seguida, colori-los utilizando uma busca a partir dos vértice iniciais de cada subgrafo, e por fim utilizar b-estratégia para tentar diminuir o número de cores utilizadas na coloração Divisão em Raiz Quadrada Na divisão proposta, um grafo G(V,E) é dividido em V subgrafos, em seguida, colori-los utilizando busca em largura a partir dos vértice iniciais de cada subgrafo. A inspiração para a divisão do grafo antes da coloração vem do algoritmo de ordenação por Bucket, que divide um vetor em buckets para então ordena-lo. A divisão de um grafo G(V,E) em V grafos é realizada da seguinte forma: Inicialmente, V vértices são selecionados, e adicionados em uma fila, em seguida, é realizada uma busca em largura a partir dos vértices selecionados, realizando uma busca para cada vértice, essas buscas acontecem simultaneamente. O algoritmo da divisão de um grafo G(V,E) em V subgrafos é apresentado no Algoritmo 6. Para melhor entendimento do procedimento, a Figura 11 ilustra o passo a passo da execução do algoritmo para um grafo de 9 vértices. Na Figura 11(a), os vértices 1, 4 e 7 são selecionados como iniciais e adicionados na fila. Na Figura 11(b), o vértice 1 é removido da fila e o vértice 2 é adicionado na fila e no subgrafo iniciado em 1. Na Figura 11(c), o vértice 4 é removido da fila e os vértices 6 e 8 são adicionados na fila e no subgrafo iniciado em 4. Na Figura 11(d), o vértice 7 é removido da fila e os vértices 5 e 9 são adicionados na fila e no subgrafo iniciado em 7. Na Figura 11(e), o vértice 2 é removido da fila e o vértice 3 é adicionado na fila e no subgrafo iniciado em 1. Na Figura 11(f), não é possível adicionar outro vértice na fila, assim, todos os vértices são removidos da fila e 3 subgrafos são retornados.

40 39 Algoritmo 6: Divisão em Raiz Quadrada Entrada: Um grafo G(V,E). Saída: Os subgrafos resultantes da divisão. inteiro raiz V ; inteiro x 1; Inicializa uma fila F de pares (v, g); while x V do Acrescenta o par (x,x) na fila F; Inicializa um subgrafo com o vértice x; x x + raiz end while while fila F não vazia do (v, g) remove(f); for Cada vértice u vizinho do vértice v que ainda não foi adicionado na fila F do Acrescenta o par (u,g) na fila F; Acrescenta vértice u ao subgrafo iniciado em g; end for end while Retorna: Os subgrafos gerados; Figura 11 Execução da divisão em raiz quadrada em um grafo de 9 vértices Utilização da BFS na coloração Para utilizar uma busca em largura na coloração de grafos: Inicialmente escolhemos um vértice inicial, e o adicionamos em uma fila, após isso, enquanto a fila não estiver vazia, removemos e colorimos o vértice do inicio da fila e adicionamos na fila os vértices adjacentes ao vértice colorido que não foram adicionados anteriormente na fila. No Algoritmo 7, é apresentado o pseudocódigo do procedimento de coloração utilizando uma busca em largura. Além da utilização de busca em largura para a coloração de grafo, em algumas heurísticas propostas também é utilizada busca em largura com passos de tamanho 2, que chamamos de busca 2-Step. O funcionamento é semelhante à coloração por busca em largura,

41 40 Algoritmo 7: Algoritmo de Coloração por Busca em Largura Entrada: Um grafo G(V,E) e um vértice inicial v. Inicializa uma fila F de vértices; Adiciona v na fila; while F = 0 do v = remover(f); Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v; for Cada vértice x na vizinhança de v do if x ainda não foi adicionado na fila F then Adiciona x na fila; end if end for end while porém, após colorir um vértice v, somente serão adicionados na fila, os vértices que possuam distância igual a 2 de v. Perceba que a utilização dessa busca pode não colorir todo o grafo, como ilustrado na Figura 12, então, ao final da busca, os vértices não coloridos são coloridos de forma sequencial pelos identificadores dos vértices. Figura 12 Execução de busca em largura com utilização de passos de tamanho dois. Nessa figura é ilustrado um grafo e 4 vértices, inicialmente, não coloridos. Em (a), o vértice 1 é adicionado na fila para coloração. Em (b), o vértice 1 é colorido e o vértice 3 é adicionado na fila para coloração. Em (c), o vértice 3 é colorido, e nenhum vértice é adicionado na fila, pois todos os vértices com distância 2 do vértice 3 já foram coloridos. Em (d), os vértices 2 e 4 são coloridos Sqrt Start O primeiro algoritmo proposto nesse trabalho é o Sqrt Start 1 (SS1). Ele é a aplicação do método sequencial guloso, utilizando como ordem de coloração, a sequência em que os

42 41 vértices são visitados na divisão por raiz quadrada. Para melhor entendimento do funcionamento do algoritmo, um pseudocódigo é apresentado em Algoritmo 8. A complexidade do algoritmo é O(n 2 ), tornando sua execução tão rápida quanto os algoritmos DSATUR e RLF, o que torna possível também uma aplicação em grafos com número elevado de vértices. Algoritmo 8: Algoritmo Sqrt Start Entrada: Um grafo G(V,E). Saída: Número de cores utilizadas para colorir o grafo G. inteiro raiz V inteiro x 1 Inicializa uma fila F; while x V do Acrescenta o vértice de índice x na fila F x x + raiz end while while F = 0 do v = remove(f); Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v; Para cada vértice u na vizinhança de v que ainda não foi adicionado na fila F, adicione u na fila; end while while Existe vértices não coloridos do v vértice não colorido de menor índice; Adiciona v em F; while F = 0 do v = remove(f); Colore v com a menor cor c possível para que a coloração não se torne imprópria; Para cada vértice u na vizinhança de v que ainda não foi adicionado na fila F, adicione u na fila; end while end while Aplica a b-estratégia; Retorna: A maior cor utilizada; Sqrt Start Priority O segundo algoritmo proposto no trabalho, é o Sqrt Start Priority 1 (SSP1). O algoritmo é uma modificação do algoritmo Sqrt Start 1, adicionando um critério de prioridade na coloração dos vértices. O algoritmo prioriza como próximo vértice a ser colorido, o vértice que pode receber a menor cor possível. Para isso, é utilizada uma fila de prioridade implementada em uma árvore binária balanceada, onde são armazenados os vértices e a menor cor possível para cada vértice ainda não colorido. Durante a execução da heurística, deve-se atualizar os elementos da fila de prioridade após cada atribuição de cor para um vértice.

43 42 Algoritmo 9: Algoritmo Sqrt Start Priority Entrada: Um grafo G(V,E). Saída: Número de cores utilizadas para colorir o grafo G. inteiro raiz V inteiro x 1 Inicializa uma fila de prioridade F de pares (v, c) com prioridade para menor cor. while x V do Acrescenta o vértice de índice x na fila de prioridade F com cor 1; x x + raiz end while while F = 0 do v = remove(f); Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v; for Para cada vértice u na vizinhança de v do if u não foi colorido then c menor cor que não é utilizada por vértices na vizinhança de u if u já foi adiciona na fila de prioridade then Busca u na fila de prioridade, e atualiza a cor se necessário; else Adiciona (x,c) na fila de prioridade; end if end if end for end while while Existe vértices não coloridos do v vértice de menor índice; Adiciona v em F; while F = 0 do v = remove(f); Colore v com a menor cor c que não é utilizada por vértices na vizinhança de v; for Para cada vértice u na vizinhança de v do if u não foi colorido then c menor cor que não é utilizada por vértices na vizinhança de u if u já foi adiciona na fila de prioridade then Busca u na fila de prioridade, e atualiza a cor se necessário; else Adiciona (x,c) na fila de prioridade; end if end if end for end while end while Aplica a b-estratégia; Retorna: A maior cor utilizada; Por conta da utilização de uma árvore binária balanceada no algoritmo, sua complexidade é multiplicada por log( V ) no pior caso, tornando a complexidade do algoritmo igual a O(n 2.log(n)).

44 Modificação do procedimento de b-coloração Como dito na Seção 2.4, o procedimento para conseguir uma b-coloração, a partir de uma coloração, consiste em verificar se existem classes de cor que não pussem um b-vértice. Então podemos recolorir todos os vértices dessa classe de cor, reduzindo assim uma classe de cor. Tomando como exemplo o grafo da Figura 13(a), se utilizarmos o algoritmo sequencial para sua coloração, resultará na coloração ilustrada na Figura 13(b). Caso a b-estratégia fosse utilizada, apenas a cor 1 seria eliminada, recolorindo o vértice 1 com a cor 2, o vértice 2 com a cor 3, o vértice 4 com a cor 3 e o vértice 5 com a cor 2, resultando na Figura 14. Perceba que todas as cores utilizadas possuem um b-vértice, o vértice 6 é um b-vértice de cor 2, o vértice 7 é um b-vértice de cor 3 e o vértice 8 é um b-vértice de cor 4. Perceba também que 3 cores são utilizadas na coloração. Figura 13 (a) Representa um grafo de 8 vértices, sendo o número escrito em cada vértice correspondente ao respectivo índice. (b) Ilustra a coloração final do grafo (a) caso fosse utilizado o algoritmo sequencial para sua coloração. A modificação que propomos é permitir movimentos parciais de vértices de uma classe de cor para outra, ou seja, excluímos a necessidade de todos os vértices da classe de cor analisada precisarem ser realocados para permitir trocas de cores. Na prática, analisaremos cada classe de cor por vez, de forma sequencial, verificando se é possível recolorir cada um de seus vértices com alguma cor diferente da atual, caso seja possível, então o vértice recebe a cor em uso de menor índice possível. Continuando com a aplicação da proposta no grafo da Figura 14. Analisando a classe de cor 2, o vértice 1 recebe cor 4, o vértice 3 recebe cor 4, o vértice 5 recebe cor 3 e a cor do

45 44 Figura 14 A figura ilustra a configuração final caso o procedimento de b-coloração fosse aplicado. vértice 6 não é alterada, pois ele é um b-vértice. Resultando no grafo da Figura 15(a). Agora analisando a classe de cor 3, o vértice 2 recebe a cor 2, o vértice 4 recebe a cor 4, o vértice 5 recebe a cor 2 e o vértice 7 recebe a cor 2. Resultando no grafo da Figura 15(b). Por fim, a classe de cor 4 é analisada, porém nenhum vértice pode ser recolorido. Resultando em uma coloração que utiliza apenas 2 cores, reduzindo em uma cor do resultado alcançado pela b-estratégia padrão padrão. Figura 15 (a) Apresenta a configuração da coloração do grafo após a classe de cor 2 ser analisada. (b) Apresenta a configuração da coloração do grafo após a classe de cor 3 ser analisada. Ao decorrer do presente trabalho, sempre que nos referimos à b-estratégia, estaremos considerando a utilização da b-estratégia em conjunto com a b-estratégia modificada. O algoritmo da b-estratégia modificada é apresentado no Algoritmo 10.

46 45 Algoritmo 10: B-Estratégia Modificada Entrada: Uma coloração de um grafo G(V,E). Saída: A coloração resultante da b-estratégia modificada em G. for Cada classe de cor c i utilizada na coloração de G do for Cada vértice v j da classe de cor c i do if v j não é um b-vértice then Atribua ao vértice v j a classe de cor de menor índice que não exista na sua vizinhança e seja diferente de c i ; end if end for end for Retorna: A coloração atual de G; Heurísticas Propostas Com a utilização das estratégias explicadas anteriormente, elaboramos 4 heurísticas. Sqrt Start 1 (SS1): É utilizada a divisão por raiz quadrada, em seguida os vértices são coloridos utilizando uma busca em largura, partido do vértice central de cada subgrafo; Sqrt Start 2 (SS2): Semelhante à SS1, porém é utilizada uma busca com passos de tamanho dois, 2-Step; Sqrt Start Priority 1 (SSP1): Semelhante à SS1, porém é utilizada a prioridade de menor cor; Sqrt Start Priority 2 (SSP2): Semelhante à SSP1, porém é utilizada uma busca com passos de tamanho dois, 2-Step; Em todas as heurísticas propostas, a b-estratégia modificada é executada ao final dos algoritmos Formulação de instâncias Como dito anteriormente, uma das aplicações de coloração de vértices se dá em alocação de frequências em um sistema de comunicação sem fio, sendo o problema de alocação de frequências em estações de rádio FM uma das aplicações citadas na literatura (KIM, 2012). Instâncias de grafos voltados para essa aplicação não estão disponíveis na literatura. Então, decidimos formula-las e deixa-las disponíveis online, tanto as instâncias utilizadas em testes no presente trabalho, quanto o gerador de instâncias utilizado, possibilitando acesso e utilização em trabalhos futuros. Para gerar um grafo G(V,E), consideramos que seus vértices são estações de rádio,

47 46 e estão dispostos em um plano, sendo cada vértice adicionado aleatoriamente em uma posição (x,y) do plano, tal que 0 x,y Consideramos também que cada estação possui um raio de alcance r, tal que 80 r 100. Para finalizar, para cada par de vértice, é verificado se a distância entre eles é menor ou igual a soma de seus raios, caso positivo, adicionamos uma aresta entre eles. Figura 16 A figura ilustra o processo de geração das instâncias. Inicialmente são gerados pontos aleatórios no plano, em seguida pontos próximos são conectados por arestas. Geramos 10 instâncias utilizando o gerador: alo100, alo200, alo200, alo300, alo400, alo500, alo600, alo700, alo800, alo900 e alo1000. Tanto o gerador, quanto as instâncias geradas no presente trabalho se encontram disponíveis pelo link < dl=0>. 4.4 METODOLOGIA Inicialmente implementamos os algoritmos de coloração: DSATUR e RLF. Em seguida implementamos nossas heurísticas propostas. Implementamos o gerador de instâncias voltadas para a aplicação de alocação de frequências em estações de rádios FM. Geramos 10 instâncias, com número de vértices variando de 100 a Para os testes computacionais, foram inicialmente utilizadas as instâncias de DI- MACS (JOHNSON; TRICK, 1996), com acesso em < html>. Além das instâncias de DIMACS, também foram utilizadas as instâncias propostas em testes. Implementadas as estratégias propostas e realizamos testes comparativos com as heurísticas DSATUR e RLF. Aplicamos a construção de Mycielski duas vezes em cada instância

48 47 da família QUEEN para gerar uma extensão dessas instâncias e então utilizamos tanto as instâncias originais quanto as extensões geradas nos testes. Essas instâncias foram escolhidas por serem consideradas difíceis (AGUIAR et al., 2005). Um fato importante para decisão de aplicar a construção de Mycielski, é o fato de estar provado que o número cromático do grafo aumenta em uma unidade para cada aplicação da construção, assim temos conhecimento do número cromático de cada instância resultante. Após confrontar as abordagens propostas com os algoritmos DSATUR e RLF, selecionamos alguns trabalhos cujo objetivo principal seja encontrar boas soluções para o problema de coloração de grafos e que também utilizassem as instâncias de DIMACS, com o objetivo de comparar os resultados e tempo entre os estratégias. Os trabalhos escolhidos foram (AGUIAR et al., 2005), (ABBASIAN et al., 2011), (DOUIRI; ELBERNOUSSI, 2015) e (LAGUNA; MARTÍ, 2001), (BARNIER; BRISSET, 2004). Realizamos testes computaciais comparando a performance dos algoritmos propostos com os algoritmos DSATUR e RLF para as instâncias propostas de alocação de frequências. Também realizamos estudo sobre o impacto da utilização da b-estratégia quando aplicada nas soluções para as instâncias QUEEN. Teste realizado tanto utilizando os algoritmos propostos, quanto os algoritmos RLF e DSATUR. Para finalizar a pesquisa, expomos, analisamos e discutimos os resultados obtidos nos testes computacionais realizados.

49 48 5 TESTES COMPUTACIONAIS Foram implementadas as 4 heurísticas propostas nesse trabalho e foram testadas tanto utilizando as instâncias obtidas no repositório < como as instâncias obtidas pela construção de Mycielski, e também instâncias propostas para a aplicação em alocação de frequências de FM. Todos os testes realizados foram executados em um computador com processador Intel Core i GHz, utilizando como sistema operacional o Windows 7 Ultimate. Para verificações de tempo, os tempos dos outros autores foram ajustados utilizando a medida bogomips (DORST, 2004). Optamos em utilizar a medida, por ela apresentar boa aproximação para todos os processadores. 5.1 INSTÂNCIAS DE DIMACS Mycielski graphs Os grafos Mycielski são construídas com base na construção de Mycielski. Nas instâncias de DIMACS (JOHNSON; TRICK, 1996), são disponibilizados apenas 5 instâncias: myciel3, myciel4, myciel5, myciel6 e myciel7. A instância myciel3 pode ser representada pelo grafo da Figura 17 e os demais são conseguidos utilizando o operador de Mycielski repetidas vezes nessa instância. Figura 17 Instância myciel Queens Graphs Os grafos dessa família são inspirados no problema das 8 rainhas (WIRTH, 1971), em que o objetivo é posicionar 8 rainhas em um tabuleiro de xadrez, de tal forma que nenhuma delas se ataquem. Os grafos são gerados com base em um tabuleiro NxN, em que cada célula é um vértice do grafo, e um par vértices são ligados se rainhas posicionadas neles se atacarem. Tal

50 49 construção gera grafos considerados densos, pois cada rainha pode atacar todos as células em todas as direções. Todas as instâncias contém cliques de tamanho pelo menos N, o que significa que possuem número cromático de pelo menos N. Em (GARDNER, 1968), foi afirmado que em uma grafo Queen NxN é N-colorível se o resto da divisão de N por 6 for 1 ou 5, porém sem provas matemáticas. Nas instâncias de DIMACS, são disponibilizadas 12 instâncias desse tipo: queen_5_5, queen_6_6, queen_7_7, queen_8_8, queen_8_12, queen_9_9, queen_10_10, queen_11_11, queen_12_12, queen_13_13, queen_15_15 e queen_16_16. A Figura 18, extraída de (WEISSTEIN, 2011), ilustra alguns exemplos de Queen Graphs. Figura 18 Exemplos de Queen Graphs: queen_2_2, queen_2_2, queen_2_4, queen_2_5 e queen_2_ Miles graphs Nos grafos dessa família, os vértices são dispostos em um espaço, e um par de vértices é conectado se eles estão próximos o suficiente. Eles foram inspirados em mapas dos Estados Unidos, onde cada vértice representa uma cidade, e a ligação entre os vértices acontece caso a distância seja menor que uma certa quilometragem. Apesar de serem baseados em mapas reais, os grafos dessa família não são planares, pois os vértices não são conectados apenas com suas cidades de fronteira, e sim utilizando uma distância de ligação. Nas instâncias de DIMACS, são disponibilizadas 5 instâncias: miles250, miles500, miles750, miles1000 e miles1500.

51 50 Figura 19 Ilustração da instância Miles Books graphs Os grafos dessa família foram extraídos de livros. Para cada obra literária, cada personagem é representado por um vértice, e um par de vértices é conectado se os personagem representados por eles se encontram pelo menos uma vez nas obras. No repositório de DIMACS, são disponibilizadas 5 instâncias desse grupo: anna, david, homer, huck e jean. A instância homer não foi utilizada nesse trabalho, pois é dito na literatura que a instância apresenta erro de formatação (GONZÁLEZ-VELARDE; LAGUNA, 2002)(LAGUNA; MARTÍ, 2001)(CHAMS et al., 1987)(GALINIER; HAO, 1999). Figura 20 Ilustração da instância Huck Register graphs Com base em programas computacionais reais, foram modelados grafos para o problema de alocação de registradores, utilizando as variáveis dos programas. Nas instâncias de DIMACS, são disponibilizadas 14 instâncias: zeroin.i.1, zeroin.i.2, zeroin.i.3, mulsol.i.1, mulsol.i.2, mulsol.i.3, mulsol.i.4, mulsol.i.5, inithx.i.1, inithx.i.2, inithx.i.3, fpsol2.i.1, fpsol2.i.2

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Leia mais

Grafo planar: Definição

Grafo planar: Definição Grafo planar Considere o problema de conectar três casas a cada uma de três infraestruturas (gás, água, energia) como mostrado na figura abaixo. É possível fazer essas ligações sem que elas se cruzem?

Leia mais

Algoritmos para o Problema de Coloração de Grafos

Algoritmos para o Problema de Coloração de Grafos Algoritmos para o Problema de Coloração de Grafos Marcelo Ferreira Rego, Haroldo Gambini Santos PPGCC - Programa de Pós-Graduação em Ciência da Computação UFOP - Universidade Federal de Ouro Preto Ouro

Leia mais

15 - Coloração Considere cada um dos grafos abaixo:

15 - Coloração Considere cada um dos grafos abaixo: 15 - Coloração Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual é o número

Leia mais

Teoria dos grafos. Caminho euleriano e Hamiltoniano. Prof. Jesuliana N. Ulysses

Teoria dos grafos. Caminho euleriano e Hamiltoniano. Prof. Jesuliana N. Ulysses 1 7 Teoria dos grafos Caminho euleriano e Hamiltoniano Grafo Euleriano Grafo onde é possível achar um caminho fechado (ciclo), passando em cada aresta uma única vez Quais são os grafos de Euler? Teorema:

Leia mais

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II

04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II 04 Grafos: caminhos e coloração SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr.

Leia mais

Cap. 2 Conceitos Básicos em Teoria dos Grafos

Cap. 2 Conceitos Básicos em Teoria dos Grafos Teoria dos Grafos e Aplicações 8 Cap. 2 Conceitos Básicos em Teoria dos Grafos 2.1 Grafo É uma noção simples, abstrata e intuitiva, usada para representar a idéia de alguma espécie de relação entre os

Leia mais

Teoria da Computação. Clique de um Grafo. Alexandre Renato Rodrigues de Souza 1

Teoria da Computação. Clique de um Grafo. Alexandre Renato Rodrigues de Souza 1 Teoria da Computação Clique de um Grafo Alexandre Renato Rodrigues de Souza 1 O que é um grafo? Definição 1: grafo é uma estruturas utilizada para representar relações entre elementos de um dado conjunto.

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 13 Prof. Dr. Sylvio Barbon Junior Sumário - Problemas NP-Completo Algoritmos Não-deterministas; Classes NP-Completo e NP-Dificil; Teorema

Leia mais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 10: Introdução aos Grafos Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 10: Introdução aos Grafos História O assunto que se constitui no marco inicial da teoria de grafos é na realidade um problema algorítmico.

Leia mais

O Problema da 3- Coloração de Grafos

O Problema da 3- Coloração de Grafos Otimização Combinatória O Problema da - Coloração de Grafos Guilherme Zanardo Borduchi Hugo Armando Gualdron Colmenares Tiago Moreira Trocoli da Cunha Prof.ª Marina Andretta Introdução ao Problema Problema

Leia mais

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.

Leia mais

Paulo Guilherme Inça. 7 de dezembro de 2016

Paulo Guilherme Inça. 7 de dezembro de 2016 Coloração de grafos é NP-Difícil Paulo Guilherme Inça 7 de dezembro de 2016 Sumário 1 Introdução 1 2 O Problema da Coloração de Grafos 2 3 3-Coloração é NP-Completo 3 4 Generalizações e Restrições 6 5

Leia mais

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações?

GRAFOS. Prof. André Backes. Como representar um conjunto de objetos e as suas relações? 8/0/06 GRAFOS Prof. André Backes Definição Como representar um conjunto de objetos e as suas relações? Diversos tipos de aplicações necessitam disso Um grafo é um modelo matemático que representa as relações

Leia mais

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira

Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas. Por: Charles Pereira Estudo e implementação de heurísticas para determinação do caminho de menor custo para atender a rotas pré estabelecidas Por: Charles Pereira Objetivos Principal: - Criar, implementar e avaliar heurísticas

Leia mais

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Lista de Exercícios Programação Inteira. x 2 0 e inteiros. Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + 2 y s.a x + y 2 x + y 5 x, y 0, x e y inteiros b) Max z = 2 x + y s.a x + 2y 0 x + y 25 x, y

Leia mais

Buscas Informadas ou Heurísticas - Parte III

Buscas Informadas ou Heurísticas - Parte III Buscas Informadas ou Heurísticas - Parte III Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Mestrado em Ciência da Computação / 2006 BUSCA SMA* (Simplified Memory-Bounded A*) BUSCA SMA* (Simplified

Leia mais

Experimentos e Resultados

Experimentos e Resultados 6 Experimentos e Resultados Neste capítulo apresentamos os experimentos realizados e os resultados obtidos pelas heurísticas apresentadas. A primeira parte do capítulo aborda os experimentos e resultados

Leia mais

Otimização de horários Seminário. Clarisse Resende 25/01/2013

Otimização de horários Seminário. Clarisse Resende 25/01/2013 Otimização de horários Seminário Clarisse Resende 25/01/2013 O problema dos horários consiste numa sequência de atividades de programação, satisfazendo um conjunto de restrições de recursos. Pretende-se

Leia mais

14 Coloração de vértices Considere cada um dos grafos abaixo:

14 Coloração de vértices Considere cada um dos grafos abaixo: 14 Coloração de vértices Considere cada um dos grafos abaixo: a) Quantas cores são necessárias para colorir os vértices de um grafo de maneira que dois vértices adjacentes não recebam a mesma cor? b) Qual

Leia mais

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Grafos: componentes fortemente conexos, árvores geradoras mínimas Grafos: componentes fortemente conexos, árvores geradoras mínimas SCE-183 Algoritmos e Estruturas de Dados 2 Thiago A. S. Pardo Maria Cristina 1 Componentes fortemente conexos Um componente fortemente

Leia mais

Lista de Exercícios Programação Inteira. x 2 0 e inteiros.

Lista de Exercícios Programação Inteira. x 2 0 e inteiros. Lista de Exercícios Programação Inteira ) Resolva os problemas a seguir usando o método B&B a) Max z = 5 x + y s.a x + y x + y 5 b) Max z = x + y s.a x + y 0 x + y 5 c) Max z = x + y s.a x + 9y 6 8 x +

Leia mais

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré

PERCURSOS. André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré PERCURSOS André Falcão, Carlos Augusto, Rafael Broédel e Lucas Dipré Serra 2011 Índice 1...O que é caminho e circuito 1.1...Caminho 1.2...Circuito 1.3...Classificação 2...Caminhos Eulerianos 2.1...Definição

Leia mais

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II

01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II 01 Grafos: parte 1 SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr. (ICMCUSP) 01

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Existem três companhias que devem abastecer com gás, eletricidade e água três prédios diferentes através de tubulações subterrâneas. Estas tubulações podem estar à mesma profundidade? Isto

Leia mais

Quinta-feira, 11 de abril

Quinta-feira, 11 de abril 15.053 Quinta-feira, 11 de abril Mais alguns exemplos de programação inteira Técnicas de planos de corte para obter melhores limitações Entregar: Observações de Aula 1 Exemplo: Localização do corpo de

Leia mais

Resumo. Como um agente busca de seqüência de ações para alcançar seus objetivos.

Resumo. Como um agente busca de seqüência de ações para alcançar seus objetivos. Resumo Inteligência Artificial Russel e Norvig Capítulos 3,4 e 5 Prof. MsC Ly Freitas UEG Resolução de problemas por meio de busca Como um agente busca de seqüência de ações para alcançar seus objetivos.

Leia mais

Teoria dos Grafos Aula 5

Teoria dos Grafos Aula 5 Teoria dos Grafos Aula Aula passada Explorando grafos Mecanismos genéricos Ideias sobre BFS, DFS Aula de hoje Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Busca em Grafos Problema

Leia mais

Teoria dos Grafos. Motivação

Teoria dos Grafos. Motivação Teoria dos Grafos Aula 1 Primeiras Ideias Prof a. Alessandra Martins Coelho março/2013 Motivação Muitas aplicações em computação necessitam considerar conjunto de conexões entre pares de objetos: Existe

Leia mais

Teoria dos Grafos Coloração. Profª. Alessandra Martins Coelho

Teoria dos Grafos Coloração. Profª. Alessandra Martins Coelho Teoria dos Grafos Coloração Profª. Alessandra Martins Coelho junho/2014 Quantas cores para colorir o mapa do Brasil, sem que estados adjacentes possuam a mesma cor? Coloração de Grafos Colorir vértices

Leia mais

Teoria dos Grafos. Componentes, Conj. Indep., Cliques

Teoria dos Grafos. Componentes, Conj. Indep., Cliques Teoria dos Grafos Componentes, Conj. Indep., Cliques Grafo Conexo/Desconexo Um grafo é conexo se existe um caminho entre qualquer par de nós, caso contrário ele é chamado desconexo. Basta que não exista

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Árvores Algoritmo de Kruskal O algoritmo de Kruskal permite determinar a spanning tree de custo mínimo. Este custo corresponde à soma dos pesos (distância, tempo, qualidade,...) associados

Leia mais

Otimização por Enxame de Partículas (PSO) e Otimização por Colônias de Formigas (ASO) aplicadas ao Problema do Caixeiro Viajante (TSP)

Otimização por Enxame de Partículas (PSO) e Otimização por Colônias de Formigas (ASO) aplicadas ao Problema do Caixeiro Viajante (TSP) Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Otimização por Enxame de Partículas (PSO) e Otimização por Colônias de Formigas (ASO) aplicadas ao Problema do Caixeiro Viajante

Leia mais

Uma forma de classificação

Uma forma de classificação Uma forma de classificação L. Não-RE ou f. nãocomputáveis LRE ou MT ou f. comput. L. Indecidíveis ou Procedimentos L. Recursivas ou Decidíveis ou Algoritmos Outra forma de classificação Problemas Indecidíveis

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

Percursos em um grafo

Percursos em um grafo Percursos em um grafo Definição Um percurso ou cadeia é uma seqüência de arestas sucessivamente adjacentes, cada uma tendo uma extremidade adjacente à anterior e a outra a subsequente (à exceção da primeira

Leia mais

Teoria da Complexidade Computacional

Teoria da Complexidade Computacional Teoria da Complexidade Computacional 25 de novembro de 2011 Enquanto a teoria de análise de algoritmos estuda a análise de complexidade de algoritmos, a teoria da complexidade estuda a classificação de

Leia mais

Aula 10: Tratabilidade

Aula 10: Tratabilidade Teoria da Computação DAINF-UTFPR Aula 10: Tratabilidade Prof. Ricardo Dutra da Silva Na aula anterior discutimos problemas que podem e que não podem ser computados. Nesta aula vamos considerar apenas problemas

Leia mais

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto

Grafos representação e aplicações. Prof. Guilherme Tomaschewski Netto Grafos representação e aplicações Prof. Guilherme Tomaschewski Netto guilherme.netto@gmail.com Roteiro! Contextualização! Apresentação, um pouco de história! Conceitos Grafos! Principais aplicacões! Estruturas

Leia mais

Alguns probleminhas...

Alguns probleminhas... Introdução Vários problemas da computação, com aplicações em diversos problemas importantes, nasceram de jogos ou brincadeiras. Hoje veremos uma pequana amostra deste fato. Alguns probleminhas... Problema

Leia mais

Tecnicas Essencias Greedy e Dynamic

Tecnicas Essencias Greedy e Dynamic Tecnicas Essencias Greedy e Dynamic Paul Crocker RELEASE - Reliable and Secure Computation Group Universidade da Beira Interior, Portugal October 2010 1 / 27 Outline 1 Introdução 2 Exemplo Greedy I : Interval

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Ideia de Tarjan (1972) Durante a exploração em profundidade de um digrafo, podemos numerar seus vértices de

Leia mais

Grafos: algoritmos de busca

Grafos: algoritmos de busca busca em grafos como caminhar no grafo de modo a percorrer todos os seus vértices evitando repetições desnecessárias do mesmo vértice? e por onde começar? solução: necessidade de recursos adicionais que

Leia mais

BCC204 - Teoria dos Grafos

BCC204 - Teoria dos Grafos BCC204 - Teoria dos Grafos Marco Antonio M. Carvalho (baseado nas notas de aula do prof. Haroldo Gambini Santos) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal

Leia mais

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32 Grafos - Introdução Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/2015 1 / 32 Conceito Definição de Grafo Formalmente, um grafo é: Um conjunto de nós/vértices (V).

Leia mais

As Pontes de Königsberg

As Pontes de Königsberg As Pontes de Königsberg Anderson Freitas Ferreira e Lívia Minami Borges 13 de junho de 2015 Resumo A teoria de grafos teve seu início em 1736, quando Euler utilizou uma estrutura para resolver o Problema

Leia mais

CONCEITOS BÁSICOS EM GRAFOS

CONCEITOS BÁSICOS EM GRAFOS Um grafo (simples) G é formado por um conjunto de vértices, denotado por V(G), e um conjunto de arestas, denotado por E(G). Cada aresta é um par (não ordenado) de vértices distintos. Se xy é uma aresta,

Leia mais

Grafos: árvores geradoras mínimas. Graça Nunes

Grafos: árvores geradoras mínimas. Graça Nunes Grafos: árvores geradoras mínimas Graça Nunes 1 Motivação Suponha que queremos construir estradas para interligar n cidades Cada estrada direta entre as cidades i e j tem um custo associado Nem todas as

Leia mais

Buscas Informadas ou Heurísticas - Parte II

Buscas Informadas ou Heurísticas - Parte II Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 FUNÇÕES HEURÍSTICAS - 1/7 FUNÇÕES HEURÍSTICAS - 2/7 Solução

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial

Resolução de Problemas. Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial Resolução de Problemas Universidade Católica de Pelotas Engenharia da Computação Disciplina: Inteligência Artificial 2 Resolução de Problemas Introdução Componentes Solução Busca de soluções 3 Resolução

Leia mais

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Classe de funções e notação Propriedades da notação Funções usuais Aula de hoje Grafos direcionados Busca em grafos direcionados Ordenação topológica Tempo de execução

Leia mais

Ciência da Computação Engenharia de Computação Mestrado em Informática. Teoria dos Grafos. Maria Claudia Silva Boeres.

Ciência da Computação Engenharia de Computação Mestrado em Informática. Teoria dos Grafos. Maria Claudia Silva Boeres. Ciência da Computação Engenharia de Computação Mestrado em Informática Maria Claudia Silva Boeres boeres@inf.ufes.br Programa 1.Conceitos Básicos 2.Grafos Eulerianos e Hamiltonianos 3.Caminhos, Ciclos

Leia mais

Busca em Profundidade e em Largura

Busca em Profundidade e em Largura Busca em Profundidade e em Largura Grafos e Algoritmos Computacionais Prof. Flávio Humberto Cabral Nunes fhcnunes@yahoo.com.br 1 Mais sobre Caminhos TEOREMA: Se um grafo possui exatamente 2 vértices de

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo:

CAP4. ELEMENTOS DA TEORIA DE GRAFOS. Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E) , sendo: Matemática Discreta ESTiG\IPB Cap4. Elementos da Teoria de Grafos pg 1 CAP4. ELEMENTOS DA TEORIA DE GRAFOS Grafo [graph]. Estrutura que consiste num par ordenado de conjuntos, G ( V, E), sendo: Exemplos

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Introdução Um passeio entre os nós i e j é uma seqüência alternada de nós e arestas que começa no nó i e termina no nó j. G 1 G 2 Um exemplo de passeio entre os nós 1 e 4 do grafo G 1 é (1,(1,3),3,(2,3),2,(1,2),1,(1,4),4).

Leia mais

5COP096 TeoriadaComputação

5COP096 TeoriadaComputação Sylvio 1 Barbon Jr barbon@uel.br 5COP096 TeoriadaComputação Aula 12 Prof. Dr. Sylvio Barbon Junior Sumário - Árvore Geradora Mínima - Teorema pare reconhecer arestas seguras; - Algoritmo de Prim; - Algoritmo

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Preparado a partir do texto: Rangel, Socorro. Teoria do Grafos,

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Aula 6 Algoritmos Genéticos M.e Guylerme Velasco Roteiro Introdução Otimização Algoritmos Genéticos Representação Seleção Operadores Geneticos Aplicação Caixeiro Viajante Introdução

Leia mais

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo

Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Um Algoritmo Genético para o Problema de Roteamento de Veículos com Janelas de Tempo Francisco Henrique de Freitas Viana Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento de Informática

Leia mais

Teoria dos Grafos. Edson Prestes

Teoria dos Grafos. Edson Prestes Edson Prestes Introdução Representação Mostre que todo passeio de u até v contém um caminho de u até v. Considere um passeio de comprimento l de u até v. Se l = 0 então temos um passeio sem nenhuma aresta.

Leia mais

Buscas Informadas ou Heurísticas - Parte I

Buscas Informadas ou Heurísticas - Parte I Buscas Informadas ou Heurísticas - Parte I Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006 BUSCAS INFORMADAS OU HEURÍSTICAS Consideram a probabilidade

Leia mais

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II

05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II 05 Grafos: ordenação topológica SCC0503 Algoritmos e Estruturas de Dados II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2011/1 Moacir Ponti Jr.

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo

Leia mais

Conceito Básicos da Teoria de Grafos

Conceito Básicos da Teoria de Grafos 1 Conceito Básicos da Teoria de Grafos GRAFO Um grafo G(V,A) é definido pelo par de conjuntos V e A, onde: V - conjunto não vazio: os vértices ou nodos do grafo; A - conjunto de pares ordenados a=(v,w),

Leia mais

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo

Leia mais

Métodos de Ordenação Parte 3

Métodos de Ordenação Parte 3 Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária

Leia mais

Teoria dos Grafos Aula 2

Teoria dos Grafos Aula 2 Teoria dos Grafos Aula 2 Aula passada Logística Objetivos Grafos, o que são? Formando pares Aula de hoje Mais problemas reais Definições importantes Algumas propriedades Objetivos da Disciplina Grafos

Leia mais

QuickSort. Estrutura de Dados II Jairo Francisco de Souza

QuickSort. Estrutura de Dados II Jairo Francisco de Souza QuickSort Estrutura de Dados II Jairo Francisco de Souza Particionamento Mecanismo principal dentro do algoritmo do QuickSort Para particionar um determinado conjunto de dados, separamos de um lado todos

Leia mais

Triangulação de Delauney

Triangulação de Delauney Triangulação de Delauney Um pedaço da superfície terrestre é chamado de terreno. Um terreno é uma superfície 2-dimensional em um espaço 3-dimensional com uma propriedade especial: cada linha vertical intercepta

Leia mais

Resolução de problemas por meio de busca. Capítulo 3 Inteligência Artificial Sistemas de Informação

Resolução de problemas por meio de busca. Capítulo 3 Inteligência Artificial Sistemas de Informação Resolução de problemas por meio de busca Capítulo 3 Inteligência Artificial Sistemas de Informação Conteúdo Um exemplo Resolução de problemas por meio de busca Exemplos de problemas Em busca de soluções

Leia mais

TEORIA DE COMPLEXIDADE

TEORIA DE COMPLEXIDADE UFMG/ICEX/DCC PROJETO E ANÁLISE DE ALGORITMOS TEORIA DE COMPLEXIDADE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO 1 O SEMESTRE DE 2008 Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro

Leia mais

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato:

Métodos de Busca. Inteligência Artificial. Algoritmos Genéticos. Algoritmos Evolucionários. Prof. Ms. Luiz Alberto Contato: Inteligência Artificial Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Métodos de Busca Busca Cega ou Exaustiva: Não sabe qual o melhor nó da fronteira a ser expandido. Apenas distingue o estado objetivo

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Matemática Discreta 10

Matemática Discreta 10 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 10 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti 1 Muitas

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferencia-se das máquinas de Turing e Post principalmente pelo fato de possuir a memória de entrada separada

Leia mais

Inteligência Artificial

Inteligência Artificial Contextualizando Inteligência Artificial Buscas Onde podemos usar a IA Problemas que não possuem soluções algortimicas Problemas que possuem soluções algoritimicas, mas são impraticáveis (Complexidade,

Leia mais

Teoria dos Grafos Introdu c ao

Teoria dos Grafos Introdu c ao Teoria dos Grafos Introdução Referências P. O. Boaventura Netto, Grafos: Teoria, Modelos e Algoritmos, São Paulo, E. Blucher 001; R. J. Trudeau, Introduction to Graph Theory, New York, Dover Publications,

Leia mais

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto

Algoritmo Genético. Inteligência Artificial. Professor: Rosalvo Ferreira de Oliveira Neto Algoritmo Genético Inteligência Artificial Professor: Rosalvo Ferreira de Oliveira Neto Estrutura 1. Introdução 2. Conceitos Básicos 3. Aplicações 4. Algoritmo 5. Exemplo Introdução São técnicas de busca

Leia mais

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa Ordenação Externa Ordenação Externa Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação

Leia mais

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade

BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade BC1424 Algoritmos e Estruturas de Dados I Aula 05 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 1Q-2016 1 1995 2015 2 Custo de um algoritmo e funções de complexidade Introdução

Leia mais

Noções da Teoria dos Grafos. André Arbex Hallack

Noções da Teoria dos Grafos. André Arbex Hallack Noções da Teoria dos Grafos André Arbex Hallack Junho/2015 Índice 1 Introdução e definições básicas. Passeios eulerianos 1 1.1 Introdução histórica..................................... 1 1.2 Passeios

Leia mais

Exemplo do jogo dos fósforos Terça-feira, 9 de maio. Exemplo para o Problema do Corpo de Bombeiros. Exemplo: Localidade do Corpo de Bombeiros

Exemplo do jogo dos fósforos Terça-feira, 9 de maio. Exemplo para o Problema do Corpo de Bombeiros. Exemplo: Localidade do Corpo de Bombeiros 15.053 Terça-feira, 9 de maio Busca Heurística: métodos para resolver problemas de otimização difíceis Distribuir: Anotações da Aula Veja a introdução ao trabalho Very Large Scale Neighborhood Search (está

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos

Eduardo Camponogara. DAS-9003: Introdução a Algoritmos Caminhos Mínimos entre Todos os Vértices 1/ 48 Caminhos Mínimos entre Todos os Vértices Eduardo Camponogara Departamento de Automação e Sistemas Universidade Federal de Santa Catarina DAS-9003: Introdução

Leia mais

Teoria dos Grafos Aula 18

Teoria dos Grafos Aula 18 Teoria dos Grafos Aula 18 Aula passada Coloração Algoritmo guloso Número cromático Teorema das 4 cores Aula de hoje Clusterização (ou agrupamento) Algoritmo Variação Clusterização Coleção de objetos Agrupar

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Proposta por Alan Turing em 1936; É universalmente conhecida e aceita como formalização de algoritmo; Teoria

Leia mais

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Algoritmos 3/17/ Algoritmos como área de estudo e investigação Algoritmos e Complexidade Ana Teresa Freitas INESC-ID/IST ID/IST 3/17/2005 1 O que é um algoritmo? Algoritmos: Sequência de instruções necessárias para a resolução de um problema bem formulado [passíveis

Leia mais

Teoria dos Grafos Aula 2

Teoria dos Grafos Aula 2 Teoria dos Grafos Aula 2 Aula passada Logística, regras Objetivos Grafos, o que são? Formando pares Encontrando caminhos Aula de hoje Outro problema real Definições importantes Algumas propriedades Grafo

Leia mais

Tentativa e Erro (Backtracking)

Tentativa e Erro (Backtracking) (Backtracking) Norton T. Roman Apostila baseada no trabalho de Delano M. Beder, David Matuszek e Nivio Ziviani Suponha que você tem que tomar uma série de decisões dentre várias possibilidades, onde Você

Leia mais

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de:

Planaridade AULA. ... META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Planaridade AULA META Introduzir o problema da planaridade de grafos. OBJETIVOS Ao final da aula o aluno deverá ser capaz de: Distinguir grafo planar e plano; Determinar o dual de um grafo; Caracterizar

Leia mais

Introdução à classe de problemas NP- Completos

Introdução à classe de problemas NP- Completos Introdução à classe de problemas NP- Completos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Introdução Considerações Práticas Em alguns casos práticos, alguns

Leia mais

Otimização Aplicada à Engenharia de Processos

Otimização Aplicada à Engenharia de Processos Otimização Aplicada à Engenharia de Processos Aula 4: Programação Linear Felipe Campelo http://www.cpdee.ufmg.br/~fcampelo Programa de Pós-Graduação em Engenharia Elétrica Belo Horizonte Março de 2013

Leia mais

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008

Algoritmos Genéticos. Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Estéfane G. M. de Lacerda DCA/UFRN Outubro/2008 Introdução São técnicas de busca e otimização. É a metáfora da teoria da evolução das espécies iniciada pelo Fisiologista e Naturalista inglês Charles Darwin.

Leia mais

Inteligência Artificial

Inteligência Artificial Inteligência Artificial Prof. Rafael Stubs Parpinelli DCC / UDESC-Joinville parpinelli@joinville.udesc.br www.joinville.udesc.br/portal/professores/parpinelli www2.joinville.udesc.br/~coca/ Agentes solucionadores

Leia mais

Prof. MSc. David Roza José 1/27

Prof. MSc. David Roza José 1/27 1/27 Splines e Interpolação por Partes - A Objetivos: Compreender que splines minimizam oscilações ao ajustar polinômios de menor ordem a partições do domínio; Aprender a desenvolver um código para procurar

Leia mais

Complexidade de algoritmos Notação Big-O

Complexidade de algoritmos Notação Big-O Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema

Leia mais

Definição e Conceitos Básicos

Definição e Conceitos Básicos Definição e Conceitos Básicos Grafos e Algoritmos Computacionais Prof. Flávio Humberto Cabral Nunes fhcnunes@yahoo.com.br 1 Conceitos Básicos Em grafos ocorrem dois tipos de elementos: Vértices ou nós;

Leia mais