В предыдущих моих сообщениях были ложные предложения.
Вот новое решение.
1 Рассматривается компонент связности.
2 Доказывается распадение на циклы индукцией по количеству вершин.
3 Множество циклов не пусто. Идем по стрелкам и когда-нибудь зацикливаемся. Возьмем цикл
.
4 Если он не содержит все вершины, то исключим
(вершины и дуги) из графа. Остальные входящие и исходящие дуги каждой из вершин
соединим попарно в одну дугу общего направления (для каждой пары). Получим такой же граф с меньшим количеством вершин. По предположению индукции его можно разбить на циклы.
5 Если новообразованные дуги не входят в циклы уменьшенного графа, то стираем эти дуги, добавляем
и получаем нужное разбиение на циклы.
6 Если какие-либо новообразованные дуги входят в такие циклы, то стираем те новообразованные, которые не входят, а из
и циклов уменьшенного графа которые касаются
образуем один цикл следующим образом. Начиная с общей вершины
и какого-то из касающегося цикла обходим присоединенный цикл и двигаемся по
до следующего касающегося, обходим его и т. д. Получаем требуемое разбиение на циклы.
Замечание 1. Решение можно оформить и в виде процесса.
Замечание 2. Речь идет о циклах, у которых повтор вершин допускается в отличие от простых циклов. Это весьма существенно, поскольку существует пример, когда разбиение на простые циклы не возможно.
Значит не каждый граф удалением вершин можно разбить на несколько циклов.
Задача, кажется, решена без всяких теорем.
Конечно представление в виде одного цикла также считается разбиением. Также и допустимо удаление нуля дуг. Пример: Исходный граф -- простой цикл.