Hola, tenemos la solución a tu pregunta, deslízate y la verás un poco más abajo.
Solución:
La transitividad se puede manejar de la siguiente manera:
$$(1−x_i,j) + (1−x_j,k) ge (1−x_i,k)tag1$$
como se explica por ejemplo en el párrafo $2.2$ de esta referencia.
Me gustaría agregar que (1), expresado bajo la forma equivalente:
$$x_i,j+x_j,k-x_i,k leq 1$$
posee una formulación lógica equivalente (¿tiene alguna práctica del lenguaje Prolog?) Bajo la siguiente “cláusula de Horn”:
$$lno x_i,j lor lno x_j,k lor x_i,k$$
(ver páginas 11 y 12 de esta referencia).
Observación: nada sorprendente de hecho porque esta cláusula expresa el hecho de que:
$$x_i,j & x_j,k implica x_i,k$$
Personalmente he estado programando con Prolog; a diferencia de su reputación (con la condición de usar buenas implementaciones como SWI-Prolog), puede ser una alternativa eficiente para trabajar con variables booleanas si no se tienen demasiadas…
Puede obtener la restricción a través de la forma normal conjuntiva de la siguiente manera:
$$ (x_i,j land x_j,k) implica x_i,k \ lno (x_i,j land x_j,k) lor x_ i,k \ lnot x_i,j lor lnot x_j,k lor x_i,k \ (1- x_i,j) + (1- x_ j,k) + x_i,k ge 1 \ x_i,j + x_j,k – x_i,k le 1 $$
Solo necesita hacer cumplir estas restricciones para $i < j < k$.
Recuerda dar visibilidad a esta división si te ayudó.