柯春梅
(廈門海洋職業(yè)技術(shù)學(xué)院公共教育學(xué)院,福建 廈門 361101)
數(shù)和是一種根據(jù)數(shù)字之和作為推理線索的智力謎題,解題者不僅要觀察題目中提示的數(shù)字之和,分析其數(shù)字組合,還要根據(jù)數(shù)字不能重復(fù)的條件進(jìn)行排除、剩余等推理出答案,是一種非常具有趣味性的智力謎題[1]。例如圖1 是一道簡(jiǎn)單6×6 數(shù)和謎題[1],圖2是它的解。數(shù)學(xué)建模是聯(lián)系數(shù)學(xué)與應(yīng)用的重要橋梁,是數(shù)學(xué)走向應(yīng)用的必經(jīng)之路[2]。數(shù)和游戲是一種智力游戲,我們?cè)诮鈹?shù)和游戲題時(shí),知道這種游戲題實(shí)際上也是一種數(shù)學(xué)應(yīng)用,如果引入變量,根據(jù)填數(shù)規(guī)則,可以建立數(shù)學(xué)模型,再利用數(shù)學(xué)軟件進(jìn)行求解。將此類問題作為數(shù)學(xué)建模培訓(xùn)的實(shí)例,會(huì)引起學(xué)生的興趣。
圖1 數(shù)和游戲題1
圖2 數(shù)和游戲題1的解
已有不少利用數(shù)學(xué)建模思想方法求解益智游戲的研究與討論,如許曉寧[3]用類比圖論染色問題對(duì)數(shù)獨(dú)問題進(jìn)行建模,給出了一種用多項(xiàng)式組表示數(shù)獨(dú)問題的方法;繆克俊等[4]基于Lab VIEW 軟件設(shè)計(jì)了一款求解9×9 金字塔數(shù)獨(dú)的系統(tǒng);吳濤[5]建立一種排除法填充數(shù)獨(dú)的數(shù)學(xué)模型;柯春梅[6]建立武士數(shù)獨(dú)和花型數(shù)獨(dú)的數(shù)學(xué)模型并給出LINGO 求解程序;胡英武[7]對(duì)“開關(guān)”游戲的控制問題進(jìn)行了一般性推廣,給出了其基于有限域上的線性方程組的數(shù)學(xué)模型及求解;曹建莉等[8]利用二進(jìn)制代數(shù)學(xué)給出了一個(gè)關(guān)燈游戲的數(shù)學(xué)模型。而利用數(shù)學(xué)建模的思想方法求解數(shù)和游戲題尚少見。本文對(duì)此作實(shí)踐探索,期望能起到拋磚引玉的作用。
數(shù)和是一種根據(jù)數(shù)字之和作為推理線索的智力謎題,數(shù)和的每道謎題都由一個(gè)空白網(wǎng)格組成,該網(wǎng)格中散布著很多代表數(shù)字之和的提示數(shù)字。其填寫規(guī)則是:①用數(shù)字1-9將所有空白方格填滿;②每一水平方格區(qū)所填數(shù)字之和等于其左側(cè)的提示數(shù)字,而每一垂直方格區(qū)所填數(shù)字之和等于其上方的提示數(shù)字;③一個(gè)水平(或者垂直)方格區(qū)內(nèi)不能重復(fù)出現(xiàn)同一數(shù)字[9]。文獻(xiàn)[1,9,10]給出了各種難度的數(shù)和游戲題,圖1是一道簡(jiǎn)單6×6數(shù)和謎題[1],而圖3是一道專家級(jí)13×21 數(shù)和謎題[10],可以讓學(xué)生在求解數(shù)和謎題時(shí)思考:能否用數(shù)學(xué)建模的思想方法來解數(shù)和游戲題?如何建立模型?用什么方法求解模型?
圖3 數(shù)和游戲題2
針對(duì)數(shù)和游戲題,根據(jù)數(shù)和的解題規(guī)則,按照問題分析、符號(hào)假設(shè)、模型建立、模型求解等數(shù)學(xué)建?;静襟E,建立數(shù)學(xué)模型,并編制相應(yīng)的Lingo 求解程序求解。
為便于建立數(shù)學(xué)模型,我們將連續(xù)的水平空白方格組稱為行區(qū)組,連續(xù)的垂直空白方格組稱為列區(qū)組。假設(shè)數(shù)和是s×t 的,有m 個(gè)行區(qū)組,n 個(gè)列區(qū)組,行區(qū)組序號(hào)按從上往下,從左往右順序,計(jì)為A1,A2,…,Am,第p個(gè)行區(qū)組數(shù)字和為cp(p=1,2,…,m),列區(qū)組序號(hào)按從左往右,從上往下順序,計(jì)為B1,B2,…,Bn,第q個(gè)列區(qū)組數(shù)字和為dq(q=1,2,…,n)。
直觀的,我們可以設(shè)數(shù)和空格總數(shù)為r 個(gè),分別按照從上往下,從左往右順序計(jì),第i 個(gè)空格填入的數(shù)字為xi,i=1,2,…,r。圖1 所示數(shù)和引入變量xi后得到圖4。
圖4 引入變量xi的數(shù)和游戲題1
設(shè)數(shù)和空格總數(shù)為r,第i 個(gè)空格填入的數(shù)字為xi,i=1,2,…,r。根據(jù)數(shù)和填數(shù)規(guī)則,空白處要么填寫數(shù)字k,要么不填數(shù)字k,只能有一種狀態(tài),引入0-1變量:
根據(jù)符號(hào)假設(shè)及數(shù)和的填數(shù)規(guī)則可得該數(shù)和的數(shù)學(xué)模型為:
其中:
⑴表示每個(gè)空白格子必須填1-9中的一個(gè)數(shù)字;
⑵表示每一行區(qū)組所填數(shù)字之和等于其左側(cè)的提示數(shù)字;
⑶表示每一列區(qū)組所填數(shù)字之和等于其上方的提示數(shù)字;
⑷表示一個(gè)行區(qū)組內(nèi)不能重復(fù)出現(xiàn)同一數(shù)字,即每個(gè)數(shù)字在每個(gè)行區(qū)組最多填一次;
⑸表示一個(gè)列區(qū)組內(nèi)不能重復(fù)出現(xiàn)同一數(shù)字,即每個(gè)數(shù)字在每個(gè)列區(qū)組最多填一次;
⑹表示每個(gè)變量為0-1變量。
Lingo 軟件是求解優(yōu)化問題的專業(yè)軟件包,主要用于求解規(guī)劃問題、線性及非線性方程組等問題。它內(nèi)置建模語(yǔ)言,提供幾十個(gè)內(nèi)部函數(shù),包括很有特色的“集合”概念,從而能以較少的語(yǔ)句,較直觀的方式描述大規(guī)模的優(yōu)化問題,因?yàn)槭褂昧思弦约癅for、@sum 等集合操作函數(shù)以后可以用簡(jiǎn)潔的語(yǔ)句表達(dá)出常見的模型中的目標(biāo)函數(shù)和約束條件,即使模型有大量決策變量和大量數(shù)據(jù),組成模型的語(yǔ)句并不隨之增加,Lingo 程序運(yùn)算速度快,計(jì)算結(jié)果可靠[11-12]。我們利用Lingo軟件,編制圖1所示數(shù)和的求解程序。
x(i,k)=1 表示xi=k,將結(jié)果填入圖1 即得到數(shù)和游戲題1的解如圖2。
可以看出,這種設(shè)題方法很直觀,但對(duì)于空格數(shù)量多的數(shù)和游戲題,如圖3 所示數(shù)和游戲題有220 個(gè)空格,由于變量序號(hào)沒有規(guī)律,編程容易出錯(cuò)。對(duì)此我們重新假設(shè)變量:
設(shè)處于第i 行、第j 列的格子記為(i,j),它所填的數(shù)字記為xij,圖1所示數(shù)和引入變量xij后得到圖5。
圖5 引入變量xij的數(shù)和題1
數(shù)和的空白方格(i,j)處,或填寫數(shù)字k,或不填寫數(shù)字k,只能有一種狀態(tài),引入三維0-1變量:
可以得到數(shù)學(xué)模型為
對(duì)于圖1 所示數(shù)和,可以根據(jù)圖5 編寫對(duì)應(yīng)的Lingo求解程序,使用Lingo12運(yùn)行程序,輸出如下:
對(duì)于數(shù)和盤面上不是空白的格子(灰色陰影),由于它們的數(shù)字沒有參與計(jì)算,系統(tǒng)自動(dòng)分配了一個(gè)數(shù)字,我們需要在輸出的結(jié)果中將他們刪除。本題需刪除以下16 個(gè)格子上的數(shù)字:(1,1)、(1,2)、(1,5)、(1,6)、(2,1)、(3,3)、(3,4)、(4,3)、(4,4)、(5,1)、(5,2)、(5,6)、(6,1)、(6,2)、(6,5)、(6,6)。刪除后結(jié)果如下:
(i,j,k)=1 表示xij=k,將結(jié)果填入圖1 即得到數(shù)和的解圖2。
數(shù)和的數(shù)學(xué)模型和求解程序具有普遍適用性,對(duì)于每一個(gè)數(shù)和題目,數(shù)學(xué)模型是相同的,由于每個(gè)題的大小、行區(qū)組、列區(qū)組、提示數(shù)都存在不同,在編寫求解程序時(shí),應(yīng)根據(jù)具體題目編寫相應(yīng)程序。Lingo中@for、@sum 等語(yǔ)句并沒有指定循環(huán)或求和的上下限,如果在集合定義部分增加集合成員的個(gè)數(shù),則循環(huán)或求和自然擴(kuò)展。請(qǐng)每位同學(xué)從文獻(xiàn)[9,10]中選取題目,據(jù)題目所給行區(qū)組、列區(qū)組和提示數(shù),修改lingo求解程序,進(jìn)行求解。從同學(xué)們的求解結(jié)果看出,圖3所示的13×21 專家級(jí)題運(yùn)行時(shí)間為1 分54 秒,文獻(xiàn)[10]的游戲題的運(yùn)行時(shí)間均不足2分鐘。
數(shù)學(xué)游戲是一種很好的學(xué)習(xí)方式,當(dāng)學(xué)生被數(shù)學(xué)游戲所吸引,他們就會(huì)去思考其中的奧妙,當(dāng)他們了解到數(shù)學(xué)的神奇與魅力,就不會(huì)厭惡數(shù)學(xué)、疏遠(yuǎn)數(shù)學(xué)。數(shù)和作為一款挑戰(zhàn)智力的數(shù)學(xué)游戲,既具有邏輯性,又具有數(shù)字和的運(yùn)算性。我們通過實(shí)踐探索,利用數(shù)學(xué)建模的思想方法快速準(zhǔn)確求解數(shù)和游戲題,讓學(xué)生在游戲中學(xué)習(xí)數(shù)學(xué)建模和軟件使用技巧,既激發(fā)學(xué)生的學(xué)習(xí)興趣,又培養(yǎng)學(xué)生的多種能力,對(duì)提高教學(xué)效果起到促進(jìn)作用。