Журнал "Программная инженерия"
Теоретический и прикладной научно-технический журнал
ISSN 2220-3397
Номер 7 2014 год
Представлены два метода оптимальной линеаризации программ с точки зрения минимизации числа переходов. Первый из них относится к простому случаю, когда принимаются во внимание только безусловные переходы. Эта задача может быть сформулирована как поиск оптимального покрытия путями вершин графа, являющегося подграфом графа потоков управления (Control Flow Graph — CFG). Рассматриваемый подграф (Fall Through Graph — FTG) включает только дуги, соответствующие безусловным переходам, и соединяемые ими вершины. Метод заключается в построении оптимального покрытия FTG путями и циклами с последующим размыканием циклов. Сложность алгоритма O(N), где N — число вершин FTG.
В заключительном разделе рассматривается NP-полная задача оптимального покрытия путями произвольного орграфа, к которой сводится задача оптимальной линеаризации программ с учетом всех переходов, включая условные. Предлагается решение рекурсивным перебором, основанным на построении оптимального покрытия путями и циклами с последующим размыканием циклов.