Um gráfico misto é um gráfico que pode ter bordas direcionadas e não direcionadas. Seu gráfico não direcionado subjacente é obtido esquecendo as orientações das arestas direcionadas e, na outra direção, uma orientação de um gráfico misto é obtida atribuindo uma direção a cada aresta não direcionada. Um conjunto de arestas forma um ciclo em um gráfico misto, se puder ser orientado para formar um ciclo direcionado. Um gráfico misto é acíclico se e somente se não tiver ciclos.
Isso tudo é padrão e há muitos artigos publicados mencionando gráficos mistos acíclicos. Portanto, o seguinte algoritmo para testar a aciclicidade de gráficos mistos deve ser conhecido:
Repita as seguintes etapas:
- Remova qualquer vértice que não tenha arestas direcionadas recebidas nem arestas não direcionadas incidentes, pois não pode fazer parte de nenhum ciclo.
- Se qualquer vértice não tiver arestas direcionadas recebidas, mas tiver exatamente uma aresta não direcionada incidente, qualquer ciclo usando a aresta não direcionada deverá entrar nessa aresta. Substitua a borda não direcionada por uma borda direcionada de entrada.
Pare quando não for possível executar mais etapas. Se o resultado for um gráfico vazio, o gráfico original deve necessariamente ter sido acíclico. Caso contrário, a partir de qualquer vértice restante, é possível voltar ao gráfico, em cada etapa seguindo para trás por uma aresta de entrada ou seguindo uma aresta não direcionada que não é a usada para alcançar o vértice atual, até ver um vértice repetido. A sequência de arestas seguida entre a primeira e a segunda repetição desse vértice (na ordem inversa) forma um ciclo no gráfico misto.
O artigo da Wikipedia sobre gráficos mistos menciona gráficos mistos acíclicos, mas não menciona como testá-los, então eu gostaria de acrescentar algo sobre esse algoritmo, mas para isso eu preciso de uma referência publicada. Alguém pode me dizer onde ele (ou qualquer outro algoritmo para testar a aciclicidade) aparece na literatura?