计算机逻辑判断问题
[日期:2014-05-19] | 作者:信息技术 次浏览 | [字体:大 中 小] |
计算机可以模拟人的思维推理过程来解决智力判断、逻辑推理问题。利用计算机高速的计算功能,可以使用枚举法解决此类问题。所谓枚举法,就是将各种可能都试一下,以找到满足条件的解。
解决逻辑判断问题的关键是怎样描述条件。一道题中可能有几种判断,每个判断可以用一个关系式描述。这几个关系式有真有假,找到符合题目要求的关系式即可找到问题的答案。
例 甲、乙、丙、丁四个人中有一个人是小偷,请根据四个人的谈话判断谁是小偷。已知四人中有一个人说假话。
甲:我不是小偷。 乙:丙是小偷。
丙:丁是小偷。 丁:丙说谎。
分析:可以采用枚举法,依次假设甲、乙、丙、丁是小偷,再根据他们的谈话找到关系式。由于有一个人说谎,所以四个关系式相加值为-3时即可找到小偷。
FOR X=1 TO 4
P=(X<>1)+(X=3)+(X=4)+(X<>4)
IF P=-3 THEN PRINT X: END
NEXT X
END
例 四大湖问题(湖南省1986年青少年程序设计竞赛试题)。
上地理课时,四个学生回答我国四大淡水湖的大小时说:
甲:洞庭湖最大,洪泽湖最小,鄱阳湖第三。
乙:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。
丙:洪泽湖最小,洞庭湖第三。
丁:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
对于每个湖的大小,每人仅答对了一个。请判断四个湖的大小。
分析:用变量A、B、C、D分别表示洞庭湖、洪泽湖、鄱阳湖和太湖,变量的值表示湖是第几大。让A、B、C、D分别从1到4变化,找出满足条件的解。由于四个变量的值各不相同,所以四个变量的和为10,积为24,为减少循环次数,用三个变量的值,即可确定第四个变量的值。
FOR A=1 TO 4
FOR B=1 TO 4
FOR C=1 TO 4
D=10-A-B-C
IF A*B*C*D<>24 THEN GOTO 5
P1=(A=1)+(B=4)+(C=3)
P2=(B=1)+(A=4)+(C=2)+(D=3)
P3=(B=4)+(A=3)
P4=(C=1)+(D=4)+(B=2)+(A=3)
IF NOT(P1=-1 AND P2=-1 AND P3=-1 AND P4=-1) THEN GOTO 5
PRINT "洞庭湖", "洪泽湖", "鄱阳湖", "太湖"
PRINT A,B,C,D
5 NEXT C,B,A
END
以一道简单例题看策略的谋划:
对于某一个具体问题,如何思考分析,从而谋划策略,是十分重要的。策略的谋划过程是一个思维发散的过程。问题本身千变万化,解决问题的策略也比较多,谋划策略的方法不一而足,根据人们的思维方式,我们论述以下几种谋划策略的思想。
(1)、降格思想
从问题的特殊和简单状态的分析种归纳出问题的实质内涵或规律,从而得到问题的一般解法,也就是我们常说的“投石问路”或者叫做“尝试归纳”。这种通过特殊求得一般、通过实际求得抽象得思想再谋划策略得过程中是十分有效的,特别是当题目中所给的数据比较打或者很抽象而难以入手时。
问题:(台阶问题)一个人登上一个10级的台阶,可以一步登1级,也可以一步登2级。问:一共有几种登法?
这道题种的台阶数为10,虽然不是很大,但一时也很难入手。我们运用降格思想分析这个问题,先看几种简单的情形:
A、 仅有1级台阶时,登法只有1种:一步1级。
B、 有2级台阶时,登法有2种:一步2级;1级+1级(两步)。
C、 有3级台阶时,登法有3种:
1级+1级+1级;1级+2级;2级+1级。
D、有4级台阶时,登法有5种:
1级+1级+1级+1级;
1级+1级+2级;
1级+2级+1级;
1级+1级+1级;
2级+2级。
E、 有5级台阶时,登法有8种:(不再列举)
按照台阶递增的次序把登法的种数排列如下:1、2、3、5、8……
容易想到这是菲波那契数列的一部分,这就找到了问题的规律,同时也谋划出解决问题的策略:数学模型(规律)策略。容易得到后继数据是:13、21、34、55、89……问题得解。
(2)升格思想
这种思想与第一种思想恰恰相反,它是把一些过于具体得问题抽象化,目的是忽略其中的一些次要因素,从而更好的把握其中的主要因素,通过解决一般问题从而解决具体问题。有时会发生这样的情况:由于问题中给出的数据过于具体,往往会形成一种思维定势,一直针对具体的数据进行分析,而忽视了问题种显而易见的东西。运用这一思想有利于突破思维定势,更快地找到解决问题的策略,其关键是在于对抽象问题的分析和推理。
我们把“台阶问题”抽象化,设有n级台阶,登台阶规则不变。对于登n级台阶的最后一步有两种情况:
(1) 由第n-1级台阶跨一步(1级)到达第n级;
(2) 由第n-2级台阶跨一步(2级)到达第n级。
显然,以上的两类登法是不同的,n级台阶的总登法就是这两类登法的和。我们用F(X)表示X级台阶的登法总数,则有:
F(N)=F(N-1)+F(N-2)以及F(1)=1;F(2)=2。
这就迅速地得到了问题得数学模型,也就谋划出解决问题得策略:数学模型(规律)策略。
从这个例子的分析中可以看出,对问题的抽象概括,寻求问题的一般解法,对于某些问题的解决是十分简便的。适当运用升格思想往往可以“一箭中的”,迅速描述出问题的本质,从而得到解决问题的策略。
(3) 分格思想
把整个问题划分为几个相联系的子问题或几个连续的解题步骤,再一一设法解决,最后综合各个部分的解就可以得到整个问题的解。作为一种思维方法,在分析问题的时候恰当运用,对于谋划解题粗略是很有效的。划分问题的方法有很多种,最基本的原则是把难以描述的问题化为易于描述的问题,把不易求解的化为易求解的。
仍是看上面的“台阶问题”,由登10级台阶所用的步数不同,可以划分为如下的几种情况:
A、共要登10步(全部都是每步登1级):有1种登法;
B、共要登9步(只有某一步登2级,其余每步登1级):有9种登法;
C、共要登8步(只有某两步每步登2级,其余每步登1级):有28种登法;
D、共要登7步(有三步登2级):有35种登法;
E、共要登6步(四步登2级):有15种登法;
F、 共要登5步(全登2步):有1种登法;
因此总共的登法有1+9+28+35+15+1=89种。
通过上面的对问题划分的过程以及计算的结果的分析,我们可以得到以下的两种策略:
(1)、分治策略,直接仿照上面的划分过程由计算机加以实现。
(2)、数学模型(规律)策略,从中归纳出:对于n级台阶的登法有:
练习:
1、 求数15,18,30,75,33,69的最大公约数。
2、 A、B、C、D、E五人为竞赛前5名,他们在名次公布前猜名次。
A说:B得第三名,C得第五名。
B说:D得第二名,E得第四名。
C说:B得第一名,E得第四名。
D说:C得第一名,B得第二名。
E说:D得第二名,A得第三名。
每个人都猜对一半,实际名次是什么?
3、 谁去破案?
某侦察队长接到一项紧急任务,要他在代号为A、B、C、D、E、F六个队员中挑选出若干人去侦破一件案子,人选的配备要求,必须注意下列各点:
(1)、A、B二人中至少去一人;
(2)、A、D不能一起去;
(3)、A、E、F三人中要派两人去;
(4)、B、C两人中都去或都不去;
(5)、C、D两人中去一人;
(6)、若D不去,则E也不去。
请问应该让谁去?
4、四人分书:把23本书发给甲、乙、丙、丁四人,要求这四人得到得书得数量分别不得超过9本、8本、7本、6本,问有多少种不同的分法?并找出每种具体分法。