Algoritmo de gráfico

Um gráfico é uma notação abstrata usada para representar a conexão entre pares de objetos. Um gráfico consiste em -

  • Vertices- Objetos interconectados em um gráfico são chamados de vértices. Vértices também são conhecidos comonodes.

  • Edges - Bordas são os links que conectam os vértices.

Existem dois tipos de gráficos -

  • Directed graph - Em um grafo direcionado, as arestas têm direção, ou seja, as arestas vão de um vértice a outro.

  • Undirected graph - Em um gráfico não direcionado, as arestas não têm direção.

Coloração de Gráfico

A coloração do gráfico é um método para atribuir cores aos vértices de um gráfico de forma que dois vértices adjacentes não tenham a mesma cor. Alguns problemas de coloração de gráfico são -

  • Vertex coloring - Uma forma de colorir os vértices de um gráfico de forma que não haja dois vértices adjacentes com a mesma cor.

  • Edge Coloring - É o método de atribuir uma cor a cada aresta de forma que duas arestas adjacentes não tenham a mesma cor.

  • Face coloring - Atribui uma cor a cada face ou região de um gráfico planar de modo que nenhuma das duas faces que compartilham um limite comum tenha a mesma cor.

Número Cromático

O número cromático é o número mínimo de cores necessárias para colorir um gráfico. Por exemplo, o número cromático do gráfico a seguir é 3.

O conceito de coloração de gráfico é aplicado na preparação de horários, atribuição de radiofrequência móvel, Suduku, atribuição de registro e coloração de mapas.

Etapas para colorir gráfico

  • Defina o valor inicial de cada processador na matriz n-dimensional como 1.

  • Agora, para atribuir uma cor particular a um vértice, determine se essa cor já está atribuída aos vértices adjacentes ou não.

  • Se um processador detectar a mesma cor nos vértices adjacentes, ele definirá seu valor na matriz como 0.

  • Depois de fazer n 2 comparações, se qualquer elemento da matriz for 1, então é uma coloração válida.

Pseudocódigo para colorir gráfico

begin

   create the processors P(i0,i1,...in-1) where 0_iv < m, 0 _ v < n
   status[i0,..in-1] = 1
	
   for j varies from 0 to n-1 do
      begin
		
         for k varies from 0 to n-1 do
         begin
            if aj,k=1 and ij=ikthen
            status[i0,..in-1] =0
         end
			
      end
      ok = ΣStatus
		
   if ok > 0, then display valid coloring exists
   else
      display invalid coloring
      
end

Árvore de amplitude mínima

Uma árvore geradora cuja soma de peso (ou comprimento) de todas as suas arestas é menor do que todas as outras árvores geradoras possíveis do grafo G é conhecida como um minimal spanning tree ou minimum cost spanningárvore. A figura a seguir mostra um gráfico conectado ponderado.

Algumas árvores abrangentes possíveis do gráfico acima são mostradas abaixo -

Entre todas as árvores de abrangência acima, a figura (d) é a árvore de abrangência mínima. O conceito de árvore geradora de custo mínimo é aplicado no problema do caixeiro-viajante, projetando circuitos eletrônicos, projetando redes eficientes e projetando algoritmos de roteamento eficientes.

Para implementar a árvore de abrangência de custo mínimo, os dois métodos a seguir são usados ​​-

  • Algoritmo de Prim
  • Algoritmo de Kruskal

Algoritmo de Prim

O algoritmo de Prim é um algoritmo ganancioso, que nos ajuda a encontrar a árvore de abrangência mínima para um gráfico não direcionado ponderado. Ele seleciona um vértice primeiro e encontra uma aresta com o menor peso incidente naquele vértice.

Etapas do Algoritmo de Prim

  • Selecione qualquer vértice, digamos v 1 do Gráfico G.

  • Selecione uma aresta, digamos e 1 de G tal que e 1 = v 1 v 2 ev 1 ≠ v 2 e e 1 tenha peso mínimo entre as arestas incidentes em v 1 no gráfico G.

  • Agora, seguindo a etapa 2, selecione o incidente mínimo de aresta ponderada em v 2 .

  • Continue até que n – 1 arestas tenham sido escolhidas. Aquin é o número de vértices.

A árvore de abrangência mínima é -

Algoritmo de Kruskal

O algoritmo de Kruskal é um algoritmo guloso, que nos ajuda a encontrar a árvore geradora mínima para um grafo ponderado conectado, adicionando arcos de custo crescentes a cada etapa. É um algoritmo de árvore de abrangência mínima que encontra uma aresta com o menor peso possível que conecta quaisquer duas árvores na floresta.

Etapas do Algoritmo de Kruskal

  • Selecione uma aresta de peso mínimo; digamos que e 1 do gráfico G e e 1 não seja um loop.

  • Selecione a próxima aresta de peso mínimo conectada a e 1 .

  • Continue até que n – 1 arestas tenham sido escolhidas. Aquin é o número de vértices.

A árvore de abrangência mínima do gráfico acima é -

Algoritmo de caminho mais curto

O algoritmo de caminho mais curto é um método para encontrar o caminho de menor custo do nó de origem (S) ao nó de destino (D). Aqui, discutiremos o algoritmo de Moore, também conhecido como algoritmo de primeira pesquisa de amplitude.

Algoritmo de Moore

  • Rotule o vértice de origem, S e rotule-o i E definir i=0.

  • Encontre todos os vértices não rotulados adjacentes ao vértice rotulado i. Se nenhum vértice estiver conectado ao vértice S, então o vértice D não está conectado a S. Se houver vértices conectados a S, rotule-osi+1.

  • Se D estiver rotulado, vá para a etapa 4, caso contrário, vá para a etapa 2 para aumentar i = i + 1.

  • Pare depois que o comprimento do caminho mais curto for encontrado.