Estou trabalhando em um projeto de algoritmos para meu curso de Projeto e Análise de Algoritmos, e estou enfrentando dificuldades em resolver duas tarefas relacionadas a grafos não-direcionados. Gostaria de pedir a ajuda de vocês para entender melhor como implementar esses algoritmos.
Preciso implementar usando backtracking e branch and brounch.
Tarefa 1: Encontrar o Maior Clique A primeira tarefa é encontrar o maior clique em um grafo não-direcionado. Um clique é um subconjunto de vértices onde cada par de vértices está conectado por uma aresta. O clique máximo é o clique que não pode ser aumentado adicionando mais vértices.
entrada:
c FILE: brock200_4.b p edge 200 13089 e 3 1 e 4 3 e 5 1 ...
saída:
17 160 27 116 164 126 53 64 78 191 138 11 92 37 70 185 18 28
Tarefa 2: Minimizar o Número de Cliques para Cobrir Todos os Vértices A segunda tarefa é minimizar o número de cliques necessários para cobrir todos os vértices do grafo. Isso significa encontrar a menor cobertura de cliques possível.
entrada: c FILE: C125.9.clq p col 125 6963 e 2 1 e 3 1 e 4 1 ...
saída:
7 24 15 18 21 29 31 35 36 44 49 54 64 68 72 74 82 83 92 ... 23 1 2 10 11 27 32 46 58 60 61 73 76 78 81 85 88 94 ... ...