如b>a大,c>a,怎么样用程序语言来保存和判断c不一定比b大这样的逻辑关系?
Vdass 2020-03-21 05:06:40 用什么样一种方法来保存和判断b和c的逻辑关系?
比如输入条件是:
b>a,c>a,
假如这样保存
if(b>a)
b=2,a=1;
if(c>a)
c=a+1;
即c=2;
if(b==c) //即b==2,c==2
输出b与c大小不确定.
else
b与c大小确定
输出
但这里有个问题
如果 c>b>a, e>d>a
设a=1那么
b=2,c=3
d=2,e=3
如果按照相等来判断的话
判断方法:
if(c==e)
print("c与e关系不确定")
else
print("c与e关系能确定")
但 这样的话b和e的关系也能确定,因为b!=e,
可实际上b和e的关系不能确定
如果用集合来保存这样的关系的话,那怎么样表示这个集合上限?
输入:b>a,c>a
设置a=100,
b=[101,无穷大]
c=[101,无穷大]
输入增加 d>b 即变为:d>b>a,c>a
给d赋值:
d=[b[0]+1,无穷大]即d=[102,无穷大]
这样判断d是否大于a只需判断d[0]是否大于a[0]即可,就是集合的利用包含关系来判断
如果此时输入
e>c 即变为:d>b>a,e>c>a
给e赋值:
e就应该是[c[0]+1,无穷大]即:[101+1,无穷大] [102,无穷大]
e与d的集合一样,说明e与d不确定
问题来了:
如果增加了一个f>e 即:d>b>a,f>e>c>a
为f赋值就应该是: f=[e[0]+1,无穷大] 即[103,无穷大]
f=[103,无穷大] 而d=[102,无穷大] f[0]>d[0],f比d大! 实际上f与d的关系不确定!这就矛盾了
如果这样改进:
条件 :b>a,c>a
设 a=100,
int x=某个具体的数
b=[101,x]
c=[101,x]
这样保存
如果此时输入:
d>b 即d>b>a,c>a
如果设置 d=[x+1,x*2] 即d的每个数都比b大,
实际上这样也是有问题 的,
某个具体的数x 怎么确定? 随便设置一个?比如10000,但这样还是有bug
这里写不下了..这个bug很容易想到这里就暂时不写了.
那么到底怎么保存这样的一种逻辑关系呢?