Похоже, вы можете изменить любые правила вида:
A -> BC
в
A -> B
и
A -> C
и любые правила вида:
AB -> C
в
A -> C
и
B -> C
После этого рефакторинга у вас должен быть набор правил для одиночных пар:
X -> Y
(Вероятно, с большим количеством избыточных копий вы можете немедленно удалить).
Это формирует частичный порядок, на который, похоже, ссылался rlotun.
Например, в результате вы получите:
A -> B
B -> C
A -> C
Если вы затем минимизируете частичный порядок (например, удалите все лишние ссылки,
любые книги структуры данных по частичному должны сказать вам, как это сделать), вы будете
иметь минимальный частичный заказ, и я думаю, что это ответ, который вы хотите.
Минимизируя частичный порядок в примере, вы удалили A -> C из
частичный заказ, заканчивающийся вашим ответом.