Без заголовка
Ну если делать автоматическую тулзу общего вида - то это конечно сложно.
А если не затачиваться на автоматизм, а делать полу-автоматическую тулзу, в которой эвристики будут добавляться по ходу дела (т.е. рассматривать не как продукт, а как процесс), то задача существенно упрощается, ибо NP-полные (и хуже) проблемы решать не надо.