Definições: Seja um DAG sem auto-loops e e sejam gráficos.
Entrada: . Saída: A composição relacional composição relacional em .
- Caso 1:. Dois para loops acima de e : Tempo de execução .
- Caso 2:
- Desenhe o gráfico : . Chamamos arestas de preto e de vermelho.
- Classifique-o topologicamente (Kahn: ). Deixe o primeiro nível ser , e as arestas vão de um nível para um nível mais alto.
- Desenhe este gráfico duas vezes.
- Na primeira cópia, remova todas as bordas vermelhas que começam no nível par e todas as bordas pretas que começam no nível ímpar: .
- Na segunda cópia, remova cada "par preto" e "ímpar vermelho": .
- Para a primeira cópia:
- para todos os nós no nível
- para todos os nós no nível
- borda do relatório (Tempo de execução ).
- Para a segunda cópia: O mesmo para " ".
- União os nós relatados, elimine duplicatas (espero que a representação gráfica permita isso).
Alguns de vocês poderiam examinar meu algoritmo e verificar se
- isso está correto
- está em
Se estiver correto, meu algoritmo já "existe"? Caso contrário, você poderia fornecer uma alternativa? Aceito a primeira resposta, mas voto a favor se mais algumas pessoas tiverem a gentileza de verificar.
EDIT: Etapa 6 Parece estar em às vezes. Eu gostaria que isso não fosse verdade. Alguém tem um algoritmo de trabalho?