Разделите множество узлов на два непустых множества, A и B. Рассмотрим множество ребер от A до B и множество ребер от B до A. Выкиньте ребра из меньшего множества и оставьте ребра из больший набор (разрывать связи произвольно). Рекурсировать на А и Б индивидуально.
Полученный граф является ациклическим, потому что каждый цикл будет разбит при первом разбиении узлов цикла между А и В. Общий набор ребер, которые мы выбрасываем, не больше, чем общий набор ребер, которые мы сохраняем, поэтому выкидывается не более половины ребер.
[примечание: я не думаю, что вы имеете в виду «максимальный» здесь, вы имеете в виду «максимальный». «Максимальный» график обычно означает тот, у которого нет надлежащего надмножества, отвечающего условию. Максимальный ациклический подграф легко построить без фактора аппроксимации, просто добавьте все ребра в новый граф по одному, только если они не добавляют цикл.]