在prolog中解决不平等问题

时间:2014-08-25 18:57:52

标签: prolog swi-prolog clpfd

我想解决 ax ^ 2 + bx + c> 0型不等式问题使用prolog。

我可以使用此编码来解决问题。 2

:-use_module(library(fd)).

compute(L=R, X) :-
        term_variables(L, [X]),
        L #= R.

1 个答案:

答案 0 :(得分:0)

据我所知,首先library(clpfd)(不是fd)是一个有限域求解器。因此,您需要提供有限域。

其次,你提供了一个等式约束,你应该提供一个不等式约束。

示例:

:- use_module(library(cplfd)).

compute(L=R,X,Low,High) :-
    term_variables(L, [X]),
    X in Low..High,
    L #> R,
    label([X]).

或者当没有域名时:

compute(L=R,X) :-
    term_variables(L,[X]),
    L #> R.

然后实例化:

?- compute(5*X*X-2*X+7=0,X).
2*X#=_G1114,
_G1128*X#=_G1126,
5*X#=_G1128,
_G1152+_G1114#=_G1126,
_G1152 in -6..sup,
_G1152+7#=_G1174,
_G1174 in 1..sup.