Ein einfacher Weg, den DAG in Bäume zu zerlegen, besteht darin, alle Verzweigungen aufzutrennen und anschließend alle Bäume einzeln abzudecken. Der Nachteil davon ist, dass beim Abdecken nur lokal innerhalb eines Baums optimiert werden kann und nicht baumübergreifend.
Eine bessere Partitionierung kann erreicht werden, indem an den aufgetrennten Stellen zusätzliche Logik eingefügt wird. Der Pfad von den Eingangsvariablen bis zum aufgetrennten Knoten wird für jede Verzweigung hinzugefügt. Das erzeugt zwar Redundanz, ermöglicht aber eine baumübergreifende Optimierung.