Wykres mieszany to wykres, który może mieć zarówno skierowane, jak i nieukierowane krawędzie. Podstawowy nieukierowany wykres jest uzyskiwany przez zapomnienie orientacji skierowanych krawędzi, a w drugim kierunku orientacja mieszanego wykresu jest uzyskiwana przez przypisanie kierunku każdej nieukierunkowanej krawędzi. Zestaw krawędzi tworzy cykl na wykresie mieszanym, jeśli można go zorientować w celu utworzenia ukierunkowanego cyklu. Wykres mieszany jest acykliczny wtedy i tylko wtedy, gdy nie ma cykli.
To wszystko jest standardowe i istnieje wiele opublikowanych prac wymieniających acykliczne wykresy mieszane. Dlatego musi być znany następujący algorytm do testowania acykliczności wykresów mieszanych:
Powtórz następujące kroki:
- Usuń każdy wierzchołek, który nie ma żadnych skierowanych krawędzi skierowanych i żadnych przypadkowych nieukierowanych krawędzi, ponieważ nie może on być częścią żadnego cyklu.
- Jeśli jakikolwiek wierzchołek nie ma żadnych skierowanych krawędzi skierowanych, ale ma dokładnie jeden przypadek nieukierunkowanej krawędzi, wówczas każdy cykl używający nieukierunkowanej krawędzi musi nadejść na tej krawędzi. Zastąp nieukierowaną krawędź przez przychodzącą skierowaną krawędź.
Zatrzymaj, gdy nie będzie można wykonać więcej kroków. Jeśli wynikiem jest pusty wykres, oryginalny wykres musi być koniecznie acykliczny. W przeciwnym razie, zaczynając od dowolnego pozostałego wierzchołka, można cofać się przez wykres, na każdym kroku, przechodząc do tyłu przez przychodzącą krawędź lub podążając za nieukierowaną krawędzią, która nie jest używana do osiągnięcia bieżącego wierzchołka, aż do zobaczenia powtarzającego się wierzchołka. Sekwencja krawędzi następująca między pierwszym i drugim powtórzeniem tego wierzchołka (w odwrotnej kolejności) tworzy cykl na wykresie mieszanym.
Artykuł w Wikipedii na temat wykresów mieszanych wspomina o acyklicznych wykresach mieszanych, ale nie wspomina o tym, jak je przetestować, więc chciałbym dodać do tego coś o tym algorytmie, ale w tym celu potrzebuję opublikowanego odniesienia. Czy ktoś może mi powiedzieć, gdzie (lub inny algorytm do testowania acykliczności) pojawia się w literaturze?