尹鵬飛,曹發(fā)生
(貴州民族大學(xué)文學(xué)院,貴州 貴陽(yáng) 550025)
蔡曙山指出認(rèn)知科學(xué)是心理學(xué)、計(jì)算機(jī)科學(xué)、哲學(xué)、人類學(xué)、神經(jīng)科學(xué)、語(yǔ)言學(xué)和教育學(xué)等的交叉融合。他提出人類認(rèn)知五層級(jí)理論,形成一個(gè)認(rèn)知序列:神經(jīng)認(rèn)知—心理認(rèn)知—語(yǔ)言認(rèn)知—思維認(rèn)知—文化認(rèn)知。低階認(rèn)知包括神經(jīng)認(rèn)知和心理認(rèn)知,高階認(rèn)知?jiǎng)t是從語(yǔ)言認(rèn)知到思維認(rèn)知,最終再到文化認(rèn)知;低階認(rèn)知是高階認(rèn)知的基礎(chǔ),高階認(rèn)知向下包含并影響低階認(rèn)知:即神經(jīng)認(rèn)知和心理認(rèn)知是語(yǔ)言認(rèn)知、思維認(rèn)知、文化認(rèn)知作用生成的基礎(chǔ),而語(yǔ)言認(rèn)知、思維認(rèn)知、文化認(rèn)知在作用過(guò)程中又向下包含并影響著神經(jīng)認(rèn)知和心理認(rèn)知。[1][2][3]2006 年,美國(guó)卡內(nèi)基·梅隆大學(xué)的周以真(Jeannette M.Wing)教授在文中[4]指出計(jì)算思維是實(shí)現(xiàn)人工智能的重要途徑,而計(jì)算思維可以通過(guò)Python 語(yǔ)言來(lái)實(shí)現(xiàn)。Java 大師Bruce Eckel 和Python 之父Guido van Rossum 留下一句名言“Life is short,you need Python”,即人生苦短,我用Python。自20 世紀(jì)90 年代初面世的Python 語(yǔ)言近兩年連續(xù)贏得了久負(fù)盛名的TIOBE 編程語(yǔ)言獎(jiǎng),在被該獎(jiǎng)項(xiàng)授予一年內(nèi)就獲得最高使用率增長(zhǎng)的編程語(yǔ)言。①Python 語(yǔ)言程序設(shè)計(jì)已經(jīng)進(jìn)入浙江省等地區(qū)的中學(xué)教材,并且列入高考內(nèi)容,正是因?yàn)閜ython 語(yǔ)言作為一種解釋類型的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,在一定程度上不僅具有簡(jiǎn)單易學(xué)的特點(diǎn),使得中學(xué)生也可以較快地習(xí)得這項(xiàng)技能,大大增強(qiáng)解決問(wèn)題的能力,鍛煉自己的邏輯思維,提升自己的邏輯思維能力;而且它的功能齊全完備,幾乎可以實(shí)現(xiàn)大多數(shù)我們所涉及的學(xué)習(xí)領(lǐng)域,應(yīng)用極其廣泛。Python語(yǔ)言是最接近自然語(yǔ)言的程序設(shè)計(jì)語(yǔ)言[5],非常有利于培養(yǎng)計(jì)算思維,更有利于解決一些計(jì)算問(wèn)題。Python 語(yǔ)言適合更多普通人解決一般的計(jì)算問(wèn)題,相比其他語(yǔ)言具有更多的適用人群。在此背景下,本文以Python 程序進(jìn)行設(shè)計(jì)解答一道典型的邏輯推理題,從而可以看到Python語(yǔ)言幫助解決具體計(jì)算問(wèn)題的作用。
在邏輯學(xué)中,邏輯推理作為思維運(yùn)作的一種基本形式,是從一個(gè)或一些已知判斷推出新判斷的思維形式,有類比推理、歸納推理、溯因推理和演繹推理四種推理類型。在邏輯推理題的應(yīng)用中,邏輯推理以類比推理和演繹推理形式最為常見(jiàn)。本質(zhì)以邏輯推理關(guān)系為主的類比推理,既有兩項(xiàng)式,也有三項(xiàng)式,可分為全同、全異、相交、包含和包含于、條件等各種邏輯對(duì)應(yīng)形式,比如行政職業(yè)能力測(cè)驗(yàn)中經(jīng)常出現(xiàn)的“紐約:中國(guó);金屬:鑰匙;棉花:棉線:棉鞋”等一系列類比邏輯推理考題。此外,還有演繹推理,演繹推理題大致分為三種形式,分別為三段論、選言推理和假言推理。其中,三段論邏輯推理題主要以四種基本結(jié)構(gòu)呈現(xiàn):“所有A 是B,所有B是C→所有B是C”;所有A 是B,所有B非C→所有A非C;有些A 是B,所有B是C→有些A是C;有些A 是B,所有B非C→有些A非C。選言邏輯推理題的基本形式有相容(A 或B)和不相容(要么A 要么B)兩類,其中“A 或B”的邏輯推理關(guān)系有:“A 或B”為假→A 假且B假,“A或B”為真→至少一個(gè)為真,也可同真;“要么A要么B”的邏輯推理關(guān)系有:“要么A要么B”為假→A 和B 同真/A 和B 同假,“要么A 要么B”為真→A 真B 假/A 假B 真。而假言邏輯推理題的形式呈現(xiàn)有兩種,其一為充分條件假言邏輯推理,如肯定前件式:如果p,那么q,已知p,所以q;否定后件式:如果p,那么q,非q,所以非p。其二為必要條件假言邏輯推理,如否定前件式:只有p,才q,非p,所以,非q;肯定前件式:只有p,才q,已知q,所以p。
隨著社會(huì)發(fā)展對(duì)人類思維進(jìn)步的高標(biāo)準(zhǔn)和高要求,邏輯推理也受到越來(lái)越多的關(guān)注和學(xué)習(xí),大量的邏輯推理題也因此高頻率地出現(xiàn)在國(guó)家公務(wù)員、事業(yè)單位考試以及央國(guó)企等等大型招聘考試中,作為職業(yè)能力測(cè)驗(yàn)中的一個(gè)重要環(huán)節(jié),其目的就是因?yàn)檫壿嬐评砟軌蝈憻挻竽X思維的縝密度,提高人的思維能力,進(jìn)而能夠更高效率地選拔出高思維素質(zhì)人才,以更好地應(yīng)對(duì)、解決日后工作遇到的難題。
如在《科技導(dǎo)報(bào)》2009年10期有這樣一道邏輯推理題:刑偵大隊(duì)的六名探員被派出執(zhí)行任務(wù),且要求如下:
那該派誰(shuí)去執(zhí)行任務(wù)?
在人工智能飛速發(fā)展的大背景下,Python 程序得到越來(lái)越多人的青睞,無(wú)論是在工作中、生活中還是在學(xué)習(xí)中,都可以看到python 的身影,使用靈活,廣泛應(yīng)用于多種行業(yè)和領(lǐng)域中,為人們帶來(lái)了高效率。
在正常情況下,利用真值表法能解決幾乎所有的未知命題,如信息真假但已知有幾個(gè)真假的情況下決策的問(wèn)題,只是有時(shí)真值表要牽涉到的變?cè)喽@得有些復(fù)雜。但是如果用Python程序語(yǔ)言來(lái)實(shí)現(xiàn)時(shí),有限個(gè)變?cè)獙?duì)于Python程序來(lái)說(shuō)非常簡(jiǎn)單。所以接下來(lái)我們用Python語(yǔ)言設(shè)計(jì)出程序來(lái)實(shí)現(xiàn)這個(gè)選派方案。首先將選派6 個(gè)人的結(jié)果情況描述為6 位二進(jìn)制中的數(shù)字,即是從0 到63 中的一個(gè)數(shù)字。具體程序如下:
對(duì)6 名嫌疑人進(jìn)行分析后得出如下真命題:(1)A、B 至少有1人犯罪;(2)A、E、F,3人中至少有2人犯罪;(3)A、D不可能同時(shí)犯罪;(4)B、C或者同時(shí)犯罪,或者與本案無(wú)關(guān);(5)C、D中有且僅有1人犯罪;(6)如果D沒(méi)犯罪,則E也不可能犯罪。請(qǐng)問(wèn)哪些人是罪犯?
下面給出用Python 語(yǔ)言實(shí)現(xiàn)這個(gè)推理。Python 的版本采用3.6 以上版本編譯運(yùn)行。這個(gè)給出兩套按枚舉式搜索的源程序代碼,經(jīng)過(guò)26步重復(fù)執(zhí)行,運(yùn)行后的結(jié)果都得出ABCF犯罪。
可以用下面命名為1.py的源程序來(lái)實(shí)現(xiàn)。
本文給出邏輯推理題的數(shù)理邏輯解答和Python語(yǔ)言程序的解答,以希望Python初學(xué)者能看懂并且能解答邏輯推理題。如果邏輯推理題中含有多個(gè)命題變?cè)四X在利用真值表方法時(shí)候可能會(huì)在真值表的計(jì)算上會(huì)出錯(cuò),而如果利用Python 語(yǔ)言程序來(lái)解答就不會(huì)出現(xiàn)這樣的現(xiàn)象,計(jì)算機(jī)程序最明顯的優(yōu)勢(shì)在于反復(fù)執(zhí)行若干次操作而不會(huì)出現(xiàn)人腦的疲憊現(xiàn)象。
注 釋:
①https://www.tiobe.com/tiobe-index/。