999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用回溯法編程求解愛因斯坦謎題

2016-02-05 08:05:34謝玉庚
電腦與電信 2016年10期
關鍵詞:程序分析

謝玉庚

(中國石化中原石油化工有限責任公司,河南 濮陽 457004)

用回溯法編程求解愛因斯坦謎題

謝玉庚

(中國石化中原石油化工有限責任公司,河南 濮陽 457004)

本文模擬人工智能的思路,用回溯法編程求解愛因斯坦謎題,使總排列數下降了7個數量級,極大提高了解題速度。程序編寫了線索輸入函數,把迷題線索存入向量中,可隨意修改線索的內容、數量及順序,進而對新的謎題進行重新求解,而不用修改剪枝函數的代碼,適用性好。

愛因斯坦謎題;回溯法;拼圖;人工智能;向量

1 引言

愛因斯坦謎題又稱Zebra謎題[1],是一道很有趣的邏輯推理題,基本內容如下:有一排五間房子,每一間房子的顏色都不同,在這些房子里住著五個不同國籍的人,每個人喂養了不同的寵物,喜歡不同的飲料,抽不同的雪茄。目的是最后要找到養魚的人。這是一個能夠進行人工求解的謎題。有很多人嘗試用計算機來求解問題。文獻[2]列舉了人工圖表法和SAT求解法。文獻[2]本身論述了定理證明器PVS求解法,都可以在有限的時間里取得較好的結果。文獻[3]提供了編程求解法,需要在(5!)5個排列中找到答案,這是個天文數字,如果能調整好合適的線索順序,也許可以找到令人滿意的求解速度。網絡上也逐漸給出了具體的編程求解方案如文獻[4],其基本思路屬于回溯法[5],速度也很快,但不能像文獻[2]所述的那些輔助辦法那樣具有較廣泛的適用性。綜合以上文獻及程序,本文根據圖表解題思路結合拼圖的概念用回溯法及向量技術[6]編寫了求解愛因斯坦謎題的程序,取得了進一步的良好效果。

2 人工解題思路

畫好5行5列的空表格,先根據線索8、9、14填入固定的元素“挪威人”、“藍色”、“牛奶”。然后根據第一條線索盡可能從最左側的列填入其它活動的元素,再分析判斷剩下的空格可否滿足第二條線索,依此類推。如果不能繼續滿足下一個線索,則右移上一個線索的列位置,繼續分析,直至符合所有的線索就可以找出謎題的出答案。

以下估算這種思路的排列數:

首先,線索8、9、14固定了相關元素內容。其排列數都是1。

第一個線索“英國人住紅房子”只能在第3列至第5列任選其一,排列數為3。

第二個線索“瑞典人養狗”可在第2、4、5列任選其一,排列數為3,依此類推,如表1所示為部分估算過程。

表1 表格拼圖求解愛因斯坦謎題

按照這種思路,本人估算的排列數總數為3*3*2*3*1*4* 1*1*1*4*2*2*1*1*1=3456個,這種估算因人而異,但其數量級相差不大。

這個問題的最大排列數是(5!)5,是250億,比這種拼圖法高了7個數量級。

這種思路實際上是把25個小方格的拼圖簡化成16個小圖案的拼圖,其中有12個小圖案是可以左右移動的,但是因為有上下行交錯占位的排斥關系,其總排列數會進一步減少。看來這種思路的確很“劃算”。

3 具體的程序設計實現

用5行5列的字符串數組string houses[5][5]代表5個房子,存儲國家、顏色、飲料、香煙、寵物5種屬性及其內容。

數組初始化:線索8、9、14無需分析,用函數void settlement(int,int,string)把它們的內容直接分配到相應的數組元素里,其他的元素為空,程序中用字符串“____”表示。

其他12條線索每個都分為兩個子因素,其列范圍都可以從0到5,綠色除外。但還是需要根據不同的邏輯確定各個子因素各自的列范圍。

在分析過程中,有些線索的第一子因素已經在前面的線索中出現過,其列范圍被視為已固定,不需進行列范圍的試探,用void initfactors1(int)函數處理。例如線索4和5都出現了綠房子。

第二子因素的列范圍確認比較復雜,其邏輯包括“自己”、“隔壁”、“左面”、“左隔壁”等類型,用函數void initfactors2(int)處理。

將結構struct hint的對象加入向量vector

當同時滿足兩個子因素時,用向前試探標志factor1記錄內層子因素是否完成列循環。線索號condnum加1,通過search(condnum)進入下一個線索,進行向前試探分析。

不能同時滿足兩個子因素時進行回溯分析。線索號condnum減1后,用search(condnum)回溯到上一個線索的分析,如果其內層的子因素列循環尚未完成,則根據factor1的值穿透外層循環先進行內層循環,否則按照正常邏輯從外層循環向內層循環逐步分析。會經常發生連續回溯的情況。

程序用while語句對search(int)函數進行循環分析,這樣程序就出現了三層while循環的嵌套分析,從而實現了對向量中每個元素(線索)里內外層子因素的回溯分析。

程序結果如圖1所示。本程序將線索4認定為綠房子可以在白房子左面所有的位置,不僅限于左隔壁,故而求解出7組答案。

4 程序的優點及難點

由于使用了向量,可以隨意增減線索輸入函數addhint()的調用次數,再通過修改形參、改變調用次序等辦法就可以隨意改變謎題線索的數量、內容、順序,而不用修改剪枝函數源代碼,甚至可從控制臺進行線索的輸入,使程序具有很好的靈活性及類似SAT求解器的適用性。靈活性的代價就是提高了出錯率,本程序最不經意的錯誤是第二因素的重復出現,程序提供了必要的檢查重復輸入的函數isrepeat(),來提醒這種錯誤的發生。

用while語句結合線性結構還減少了遞歸法容易發生的堆棧溢出的問題。但三層while循環經常發生“跳層”的情況,也增加了程序調試的難度,除非不得已,盡量不采用“跳層”的辦法。

圖1 謎題的第7個答案

5 結語

綜合以上分析,雖然本文程序邏輯較復雜,但程序具有更好的靈活性和適用性。本程序通過修改houses[][]數組下標、修改越界檢查極限、修改setelement()函數形參、修改addhint()函數的形參、增減函數的調用次數、改變調用次序,便可用于更多維度、更多線索的Einstein謎題的靈活分析。

[1]田聰,段振華,王小兵.Einstein謎的SA T求解[J].計算機科學,2010(0 5):18 4-18 6.

[2]朱維軍,周清雷.求解愛因斯坦謎題的一種形式系統及推理方法[J].計算機科學,2012(0 9):2 44-2 46.

[3]鄔曉鈞.愛因斯坦的謎題解答[J].程序員,200 7(0 7):10 7-10 9.

[4]“愛因斯坦謎語”C語言智能分析源碼[EB/OL].http://www.openloongson.org/forum.php?mod=viewthread&tid=148&extra=page%3D3,2015.

[5]管西京.程序設計算法新手自學手冊[M].北京:機械工業出版社,2012.

The Solution of Einstein’S Riddle with Backtracking Algorithm

Xie Yugeng
(Sinopec Zhongyuan Petrochemical Co.,Ltd.,Puyang 457004,Henan)

With the thought of artificial intelligence,this paper uses the backtracking algorithm in solving Einstein’s Riddle, which can reduce the number of permutations by seven orders of magnitude and greatly improve the problem solving speed.The program includes a clue input function and puts the puzzle clues in vector.The content,quantity and sequence of the clues can be modified at random,to resolve new puzzles without modification of pruning function code.Therefore,the program has good applicability.

Einstein’S Riddle;backtracking algorithm;jigsaw;A.I.;vector

TP18

A

1008-6609(2016)10-0050-02

謝玉庚(19 72-),男,陜西白水人,本科,工程師,研究方向為設備管理信息化。

猜你喜歡
程序分析
隱蔽失效適航要求符合性驗證分析
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
電力系統不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
電力系統及其自動化發展趨勢分析
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
中西醫結合治療抑郁癥100例分析
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 色妞永久免费视频| 日本91视频| 成人在线综合| 一级在线毛片| 色九九视频| 久久精品丝袜高跟鞋| 国产免费网址| 99精品国产自在现线观看| 三区在线视频| 国产精品jizz在线观看软件| 成人午夜亚洲影视在线观看| 毛片久久久| 午夜丁香婷婷| 一区二区三区高清视频国产女人| 亚洲三级片在线看| 日本一区二区三区精品国产| 99精品视频在线观看免费播放| 亚洲水蜜桃久久综合网站 | 三级欧美在线| 国产夜色视频| 91色国产在线| 国产在线98福利播放视频免费| 国产乱码精品一区二区三区中文 | 免费aa毛片| 婷婷在线网站| 欧美一级黄片一区2区| 国产爽歪歪免费视频在线观看| 亚洲无线一二三四区男男| 91成人免费观看在线观看| 国产精品区网红主播在线观看| 久久综合成人| 色婷婷国产精品视频| 国产成人综合网| 天堂亚洲网| 国产精品亚洲五月天高清| 日本伊人色综合网| 日本91视频| 成人精品在线观看| 国产成人免费| 亚洲一区免费看| 国产精品无码制服丝袜| 免费又爽又刺激高潮网址| 国产精品一区二区久久精品无码| 国产乱论视频| 国产最新无码专区在线| 亚洲精品桃花岛av在线| 亚洲综合激情另类专区| 成人字幕网视频在线观看| 青青操国产视频| www.亚洲一区| 欧美一级在线看| 2021国产v亚洲v天堂无码| 国产91麻豆免费观看| 最近最新中文字幕免费的一页| 午夜国产理论| 999福利激情视频| www.91中文字幕| 精品国产www| 日韩大乳视频中文字幕| 91色国产在线| 91精品啪在线观看国产91| 国产乱子伦视频三区| 精品99在线观看| 无码一区18禁| 国产精品一区二区在线播放| 久久久久久久久18禁秘| 精品国产欧美精品v| 国产精品久久久久久影院| 成人免费黄色小视频| 欧美性久久久久| 日韩欧美中文字幕在线精品| 欧美日韩国产综合视频在线观看| 色婷婷在线影院| 人妻无码AⅤ中文字| 国产精品页| 大学生久久香蕉国产线观看| 综合五月天网| 成人精品在线观看| 色婷婷在线影院| 女人毛片a级大学毛片免费| 国外欧美一区另类中文字幕| 老司国产精品视频|