Reescrita de grafos

Na Teoria dos Grafos, reescrita de grafos denota um sistema de reescrita para grafos, isto é, um conjunto de regras de reescrita de grafos da forma , sendo o grafo usado como padrão (no lado esquerdo) e o grafo de substituição (no lado direito da regra).

Uma regra de reescrita de grafos é aplicada ao grafo hospedeiro procurando por uma ocorrência do grafo padrão (resolvendo assim o problema do isomorfismo de subgrafos) e substituindo a ocorrência encontrada por uma instância do grafo de substituição.

Algumas vez gramática de grafos é usado como um sinônimo para sistema de reescrita de grafos, especialmente no contexto de linguagens formais; a expressão distinta é usada para enfatizar o objetivo de enumerar todos os grafos a partir de um grafo inicial, isto é, descrevendo uma linguagem de grafos (como em uma gramática de atributos), em vez de transformar um estado dado (um grafo hospedeiro) em um novo estado.


Abordagens à reescrita de grafos

editar

Abordagem algébrica

editar

Há muitas abordagens à reescrita de grafos, sendo uma delas é a abordagem algébrica, que é baseada na Teoria das Categorias. De fato a abordagem algébrica é dividida em algumas sub-abordagens, sendo a DPO (pushout duplo) e a SPO (pushout único) as mais importantes; há também outras, seguindo-se nesta linha, tais quais a sesqui-pushout e a abordagem pullback.

Pushout é o colimite de um diagrama, consistindo de dois morfismos   e   com um domínio comum. Pullback é o dual do pushout.

Da perspectiva da abordagem DPO uma regra de reescrita de grafos é um par de morfismos na categoria dos grafos, com morfismos totais entre os grafos como flechas:   (ou  ), em que   é injetiva. O grafo   é chamado invariante ou algumas vezes grafo colante. Um passo de reescrita ou aplicação de uma regra   para um grafo hospedeiro   é definido por dois diagramas de pushout, ambos originando-se no mesmo morfismo   (é daqui que o nome "pushout duplo" provém). Um morfismo de grafos   que modela uma ocurrência de   em   é chamado de casamento. Na prática,   é o subgrafo que é casado (ou unificado) com   (ver problema do isomorfismo de subgrafos), e depois que um casamento é encontrado,   é substituído por   em um grafo hospedeiro  , onde   funciona como uma espécie de interface.

Já na abordagem SPO uma regra de reescrita de grafos é um único morfismo na categoria dos multigrafos rotulados, com morfismos parciais entre os grafos como flechas:  . Assim, um passo de reescrita é definido por um único diagrama de pushout. Na prática, o processo é similar ao da abordagem DPO; a diferença é que não há interface entre o grafo hospedeiro   e grafo  , que é o resultado do passo de reescrita.


Abordagem por sistemas de reescrita de termos

editar

No caso de reescrita de grafos como termos, os grafos têm que ser necessariamente dirigidos, etiquetados e com ordenação nas arestas, e as operações são caracterizadas sobre uma especificação de grafo, definida como:

 

em que   é um par disjunto de nós (com variáveis) e   um termo. O nó   indica a raiz do grafo.

As seguintes propriedades devem ser respeitadas em  :

  •   não é um nó com uma única variável (então L não é da forma   ou  
  •  

(sendo   o conjunto de variáveis livres em  )

Um sistema de reescrita grafos como termos consiste de uma assinatura e um conjunto de regras de reescrita sobre essa assinatura. A assinatura geralmente é deixada implícita.

Um casamento de   para   é um homomorfismo de   em  , isto é, uma renomeação de variáveis   tal que  

Um redex (instância de uma regra de reescrita) em   é determinado pelo par  , em que   é uma regra de reescrita com  . A raiz desse redex é o nó  , em que   é a raiz de  .

A parte do casamento de   com relação ao redex   é a coleção de especificações de nós   em que   é um nó em  . A especificação da raiz desse redex é a especificação do nó dessa raiz.

E finalmente, um passo de reescrita correpondente ao redex   em  , denotado por  , consiste em substituir a especificação da raiz do redex pelo  , com uma boa escolha de variáveis ligadas (para evitar colisões com variáveis em  ). Normalmente se dá destaque à parte relevante do grafo por uma denotação conveniente do "contexto":  .


Outras abordagens

editar

Outra abordagem à reescrita de grafos, conhecida como reescrita determinante de grafos, vem da lógica da Teoria dos bancos de dados. Nessa abordagem, grafos são tratados como instâncias de bancos de dados, e operações de reescrita como um mecanismo para definição de consultas e visões; portanto, todas as reescritas devem possuir resultados únicos (salvo isomorfismo), e isto é conseguido aplicando-se qualquer regra de reescrita concorrentemente ao longo todo o grafo, onde quer que ela se aplique, de modo que o resultado é de fato unicamente definido.

Implementações e Aplicações

editar
 
Exemplo para uma regra de reescrita de grafos (otimização de uma construção de compilador: multiplicação por 2 substituído pela adição)

Grafos são um formalismo expressivo, visual e matemática preciso para modelagem de objetos (entidades) ligados por relações binárias; objetos são representados por nós e relações entre eles por arestas. Nós e arestas são normalmente etiquetados. Computações são descritas neste modelo por mudanças nas relações entre as entidades ou por mudanças nas etiquetas dos elementos do grafo. Elas são codificadas nas regras de reescrita/transformação de grafos e executadas por ferramentas de reescrita/transformação de grafos.

  • Ferramentas que são aplicáveis a domínios neutros:
    • GrGen.NET, o gerador de reescrita de grafos, ferramenta de gera sistemas de reescrita para grafos em C# ou .NET-assembly.

Referências

editar
  • Handbook of Graph Grammars and Computing by Graph Transformations. Volume 1-3. World Scientific Publishing
  • Term Rewriting Systems, Terese, Cambridge Tracts in Theoretical Computer Science, 2003.

Veja também

editar