数独问题高效算法研究与实现
数独游戏的难度等级分析及求解算法研究

数独游戏的难度等级分析及求解算法研究2——数独难度等级2 数独难度等级数独游戏发展至今,在数独爱好者的积极探索下,求解数独的算法众多,有矩形顶点删减法、关键数删减法等[7]。
解答一道数独问题是一种或多种方法相互结合,为了使玩家能循环渐进解决数独题目,并且在解答数独过程中不断提高解决数独问题的能力。
不同的数独题目被划分为不同的难度等级。
最直接的方式是根据个人求解数独的时间长短区分难易。
但由于个人求解数独受方方面面的影响,此种划分方式主观因素太强,导致划分的准确率低。
如何划分数独的难度系数才是比较科学的呢?2.1 空格数与难度等级2.1.1 空格数与难度等级的分析数独书籍对数独难度的划分较为清晰,研究从分析数独书籍对数独难度等级的划分开始。
首先统计《旅途中的数独》[8]《数独》[9]两本书数独谜题的情况。
表一所统计的是《旅途中的数独》的题目,统计的题目总数为100道,表格的行表示空格的个数,列表示难度的级别,初级最容易,难度依次递增,超级为最难;表二所统计的是《数独》-5,题目数一样为100道,表格行表示空格的个数,列表示难度的级别,一星为最容易,二星为容易,三星为难,四星为最难。
例如:表一的首格10表示,难度为初级,空格个数为45的题目有10道;表二的首格3表示,难度为一星,空格数为50的题目有3道。
表1 统计《旅途中的数独》空格数与难度表2 统计《数独》空格数与难度分析2个表格,我们初步得到,随着难度的加大,空格数逐步增加。
书中不同难度等级的题目数目不一致,难度较低的题目数较少,难度较高的题目较多。
为进一步发现问题所在,笔者对数独题目的统计表格进行处理,在同等难度上,将每种空格的题目个数除以该难度的总题目数,得到如下表格。
表3 计算《旅途中的数独》空格率与难度The probability of space and difficulty from the book calls planes, trains andsudoku表4 计算《数独》空格率与难度表格的数据用面积图表表示(图1、图2),由图可以清晰看出,难度等级递增,空格数也不断增加。
数独求解算法的设计与实现

1 数独求解规则
通过研究数独出题资料, 发现数独必须遵循几个 很重要的原则: 逻辑性、 可推导性。在求解数独时, 必 须让每一步有规可循, 每一步推导有根有据
[ 3, 4]
。
数独通过确保以下 3点从而展开逻辑推理。 ∀ 每一行中 , 数字 1 9 各出现且只出现一次 ,
2010 年 6月 30日收到 第一作者简介 : 易 珺 ( 1976 ) , 女 , 硕士 , 讲师 , 研究方向 : 计算机
完成第一步后开始下一轮比较, 直至得出全部 结果为止。 比较排除法算法描述如下 : ( 1) 算法输入: 一组数独, 未知数数值为 0 。 ( 2) 算法输出: 一组经过运算后的数独, 至少有 一个原值为 0 的数字被改变的新状态输出。 ( 3) 算法步骤: Step 1 创建一个可取值域 [ 1 , 2 , 3 , 4 , 5 ,6 , 7 , 8 , 9]。 S tep 2 自上而下、 自左而右搜索下一个数值为 0 的空格。 S tep 3 与该空格所在宫的其他有效数字比较 , 消去在可取值域中两两相等的项。 S tep 4 与该空格所在行的其他有效数字进行 横向比较, 消去在可取值域中两两相等的项。 S tep 5 与该空格所在列的其他有效数字进行 纵向比较, 消去在可取值域中两两相等的项。 S tep 6 判断可取值域中不为 0 的数字的个数 是否为 1, 如果不是 , 则跳至 Step 8。 S tep 7 可取值域中的唯一有效数字赋值于对 应空格中, 输出数独更新后的状态, 跳至 Step 12 。 S tep 8 判断数独是否已完成, 是否还有 0, 如果 有 0, 则跳至 Step 11。 S tep 9 判断是否运算至最后一个空格, 如果不
图 2 比较排除法流程图
数独问题高效算法的设计与实现

数独问题高效算法的设计与实现数独是一种经典的逻辑推理游戏,是一种求解问题的算法设计与实现的典型案例。
数独棋盘是一个9×9的网格,其中的部分格已经填入了数字,在其他的空格中,必须填入1到9的数字,要求每一行、每一列和每一个3×3的九宫格内的数字均不重复。
数独问题的高效算法设计与实现可以从以下几个方面进行思考和实践。
1. 数独问题建模:首先,需要将数独问题进行建模。
可以使用二维数组来表示数独棋盘,其中已经填入数字的格子用数字表示,空格用0表示。
例如,数独棋盘可以表示为一个9×9的二维数组。
建模完成后,可以通过输入参数的方式读取数独问题。
2. 空格位置查找:数独问题的求解首先需要找到空格的位置。
可以采用遍历数独棋盘的方式,对每一个位置进行判断,如果数值为0,则该位置是一个空格。
可以通过双重循环来实现该功能。
3. 数字的合法性判断:在填充数字之前,需要判断待填入的数字是否合法。
合法的数字满足以下条件:在所在行中没有重复数字,所在列中没有重复数字,所在3×3九宫格中没有重复数字。
可以通过遍历所在行、列和九宫格的方式来判断数字的合法性。
4. 回溯算法:数独问题的求解可以使用回溯算法。
回溯算法是一种逐步试错的方法,通过尝试不同的数字,直到找到合适的解。
可以从数独棋盘的空格位置开始,逐个尝试填入数字,并判断数字的合法性。
如果遇到不合法的情况,则回溯到上一个位置继续尝试。
可以使用递归实现回溯算法。
5. 数独问题的解输出:在求解完数独问题后,需要输出数独棋盘的解。
可以通过遍历数独棋盘的方式,依次输出每个位置的数字。
在实现数独问题的高效算法时,可以考虑使用优化的数据结构和算法,以提高求解效率。
可以使用位运算来表示数字的合法性,减少时间和空间复杂度。
可以使用哈希表来记录已经填入的数字,以快速判断数字的合法性。
可以使用剪枝技术,减少无效的尝试,提高算法的效率。
除了基础的算法设计,还可以考虑一些优化技巧。
毕业设计论文数独问题的设计算法研究 .docx

数独(sudoku)是一种源自瑞士,18世纪末在美国发展、并且在日本得以发扬光大的数字拼图。
数独的整体页面是一个九宫格,其中每一宫又分为九个小格。
只要在这已知的八十一格中给出一定的已知数字(提示数)和解题条件,玩家自己开动脑筋运用推理,在其他的空格上分别填入数字1到9,使1到9每个数字在每一行、每一列和每一宫中都只出现一次。
因为在填充“每个数字都是唯一的”的空间中,游戏被称为数独。
这种安排,数独游戏中的数字,可以充分地测试和培养观察和推理能力,并解决问题。
很多专业人上认为数独是提升智力开动脑筋的最佳途径。
本文主要研究数独方的基本理论,介绍数独设计的应用,并举例说明。
利用C++软件编程实现。
第一章简略介绍数独问题的由来以及数独问题的相关概念和术语;第二章介绍数独游戏的基本玩法;第三章重点研究数独问题如何设计,并通利用C++软件来编程实现。
从而得出数据结构清晰明了、算法逻辑简单、程序事懂、运行高效率阳设迸方法]| :- * W I关键词:数独;设计算法;回溯法;乱序法;异形数独AbstractSudoku is a kind of digital puzzles what came from Switzer land 5and carried forward in Japan at the end of the 18th century ・ Each palace of Sudoku disk is divided into nine lattices・As long as in the eighty-one!s, under the condition of given certain known number and problem solving, using logic and reasoning in the other spaces to fill in the numbers from 1 to 9. Each of the numbers from 1 to 9 appear in every column and every court only once. Because each number in the lattices is exclusive ? known as Sudoku game. This arrangement, the number of Sudokupuzzles, can fully test and cultivate the ability to observe and reasoning, and solve problems. Many education workers think Sudoku is the best way to train your brain.This paper mainly studies the basic theories of Sudoku and introduces the application of Sudoku design and illustrates・ Using c++ software programming to realize the result. The first chapter briefly introduces the origin of Sudoku and the related concepts and terms of Sudoku. Chapter 2 introduces the basic play of Sudoku; Chapter 3 iocuses on the design of Sudoku problems and uses c++ software programing to realize the result. Therefore, the data structure is clear, the algorithm logic is simple, the program is easily to understand, and the efficient design method is running.Keywords: Sudoku; Design algorithm; Backtracking method; Random - sequence method; Alien Sudoku・摘要 (I)Abstract ...................................................................................................................... I I 目录. (III)第一章绪论 (1)1.1数独的起源 (1)1.2数独近现代的发展 (2)第二章数独玩法 (3)2.1数独玩法介绍 (3)2.2数独的基本解法 (5)2.2.1唯-•解法 (5)2.2.2目的数标线法 (8)2.2.3回溯法 (13)第三章数独的设计 (15)3.1数独游戏设计的难易程度 (15)3.2回溯法的算法设计 (17)3.2.1回溯法设计思路 (17)3.2.2回溯法设计过程 (17)3.3乱序法的算法设计 (18)3.3.1乱序设计法思路 (18)3.3.2乱序设计的过程 (18)3.4回溯搜索法的算法设计 (18)3.4.1回溯搜索法的设计思路 (18)3.4.2回溯搜索法设计过程 (19)3.5算法分析比较 (19)第四章异型数独 (21)4.1异型数独介绍 (21)4.2终盘设计 (29)4.2.1交换法 (29)4.2.2随机试探法 (30)4.2.3算法分析 (30)4.3额外区域数独设计 (30)第五章总结与展望 (32)参考文献 (34)致谢 (35)附录 (36)图表目录图2.1 (3)图2.2 (4)图2.3 (5)图2.4 (5)图2.5 (6)图2.6 (6)图2.7 (7)图2.8 (7)图2.9 (8)图2.10 (9)S 2.11 (9)图2.12 (10)图2.13 (10)图2.14 (11)S 2.15 .... . (11)图2.16 (12)图2.17 (12)图3.1 (15)图3.2 (15)图3.3 (16)图3.4 (16)图3.5 (16)图3.6 (16)图4.1 (21)图4.2 (22)图4.3 (22)图4.4 (23)图4.5 (23)图4.6 (23)图4.7 (24)图4.8 (24)图4.9 (25)图4.10 (25)图4.11 (26)图4.12 (26)图4.13 (27)图4.14 (27)图4.15 (27)图4.16 (28)图4.17 (28)图4.18 (29)第一章绪论1.1数独的起源数独是十八世纪末的瑞士人发明,之后风靡美国,并在日本进行的数字拼图。
数独问题高效算法的设计与实现

数独问题高效算法的设计与实现一、引言数独是一种经典的逻辑游戏,它的规则简单易懂,但是解题难度却不低。
在实际应用中,数独问题也被广泛运用于密码学、人工智能等领域。
本文将介绍数独问题高效算法的设计与实现。
二、数独问题的基本原理数独游戏是在一个9*9的方格中填入数字1-9,使得每行、每列和每个小九宫格内都恰好包含1-9这些数字。
其中,已经填好的数字称为已知数,需要填写的数字称为未知数。
解题过程就是找到所有未知数的正确填法。
三、暴力搜索算法暴力搜索算法是一种朴素的解题方法,其思路是枚举所有未知数可能取到的值,并检查其是否符合规则。
具体步骤如下:(1)从左到右、从上到下遍历整个棋盘。
(2)对于每一个未知数,枚举其可能取到的值,并检查是否符合规则。
(3)如果符合规则,则继续往下遍历;如果不符合规则,则回溯到上一个未知数重新尝试。
暴力搜索算法虽然简单易懂,但是其时间复杂度非常高,难以处理大规模的数独问题。
因此,我们需要更高效的算法来解决这个问题。
四、DLX算法DLX(Dancing Links)算法是Donald E. Knuth在他的《The Art of Computer Programming》中提出的一种高效的精确覆盖算法。
它可以解决多种组合优化问题,包括数独问题。
DLX算法的基本思路是将问题转化为一个精确覆盖问题,并使用回溯和剪枝技术来求解。
具体步骤如下:(1)将数独问题转化为一个精确覆盖问题。
(2)使用Dancing Links数据结构来表示精确覆盖问题,并用回溯和剪枝技术来求解。
(3)对于每个未知数,在其可能取到的值中选择一个值进行填写,并更新DLX数据结构。
(4)如果当前填写符合规则,则继续往下搜索;如果不符合规则,则回溯到上一个未知数重新尝试。
DLX算法具有时间复杂度为O(9^(n^2)),空间复杂度为O(n^4)的优点,可以在较短时间内求解大规模数独问题。
五、SAT求解器SAT(Satisfiability)求解器是一种能够自动求解布尔逻辑问题的程序,其基本思路是将问题转化为一个布尔公式,并使用SAT算法来求解。
数独游戏的算法研究与实现

"数独"游戏的算法研究与实现作者:李盘荣, LI Pan-tong作者单位:无锡市广播电视大学,江苏,无锡,214011刊名:电脑知识与技术英文刊名:COMPUTER KNOWLEDGE AND TECHNOLOGY年,卷(期):2008,3(26)引用次数:0次1.今天,你数独了吗?(NO.19)[期刊论文]-快乐青春 2007(11)2.严蔚敏.吴伟比数据结构 19933.谭浩强C程序设计 20054.刘晓宝数独游戏的解题算法[期刊论文]-电脑编程技巧与维护 2007(5)1.学位论文谭志明基于图论的图像分割及其嵌入式应用研究2007图像分割是一种底层的图像处理技术,它根据特定的特征将图像分离为连通的有意义区域,可以广泛应用在图像及视频的高级处理任务中。
图像分割技术经过几十年的发展,形成了众多的方法、繁杂的类别和海量的文献,但是与人眼视觉特征相一致的全局分割问题一直得不到解决。
在这些方法中,基于图论最小生成树的方法利用区域比较准则和最小生成树算法分割图像,具有获取全局特征的能力,计算速度快,是一种可以作为应用研究的分割方法之一。
本文的工作主要基于此算法。
为了提高此算法应用的可能性,我们需要更改算法及优化程序,提高其全局分割效果和计算速度。
本文在分析基于最小生成树分割算法概念、原理、数据结构和实现方式的基础上,发现其运算瓶颈为边的数目,也就是图中实际计算的节点数目。
因此本文利用图像局部特征相似的特性,使用N×N,N=1,2,3大小的自适应像素块映射为单个计算节点,大大降低了实际计算的节点和边的数目,从而降低了核心算法的计算复杂度。
为了适应块结构,本文更改了邻域系统,提出了基本连接和超连接的层次。
基本连接保证了相邻区域的邻近性,而超连接提供了区域之间的连续性。
这种两层的连接方式提高了算法获取全局特征的能力,获得了既不过分割也不欠分割的效果,接近图像对象的数目,减少了原算法分割区域的数目。
数独游戏毕业论文

数独游戏毕业论文数独游戏毕业论文引言:数独游戏是一种经典的数字逻辑游戏,通过填充9x9的格子,使每一行、每一列和每一个3x3的九宫格中的数字都不重复。
这个简单的规则背后蕴含着复杂的数学原理和算法。
本篇论文将探讨数独游戏的起源、数学原理和算法优化,以及对玩家智力发展的影响。
第一部分:数独游戏的起源数独游戏起源于18世纪的瑞士,最初被称为“拉丁方块”。
直到20世纪70年代,数独游戏才在美国得到普及,并在日本迅速流行起来。
数独游戏在全球范围内受到广泛欢迎,成为一种独特的智力挑战。
第二部分:数独游戏的数学原理数独游戏的核心是在一个9x9的格子中填充数字,使得每一行、每一列和每一个3x3的九宫格中的数字都不重复。
这个看似简单的规则背后蕴含着一些重要的数学原理。
1. 排列组合:数独游戏中的数字填充需要满足不重复的条件,这涉及到排列组合的概念。
通过计算每个格子可填充数字的可能性,可以确定数独游戏的解。
2. 约束条件:数独游戏中的每个数字填充都受到行、列和九宫格的约束条件限制。
这些约束条件可以通过数学模型来描述,从而帮助解题过程。
第三部分:数独游戏的算法优化为了提高数独游戏的解题效率,研究者们提出了许多算法优化的方法。
以下是一些常用的算法:1. 回溯算法:回溯算法是最常用的解决数独游戏的方法之一。
它通过递归的方式尝试每个格子的可能数字,直到找到一个有效的解或者发现无解。
2. 剪枝算法:剪枝算法通过排除无效的数字选择,减少了解题的搜索空间。
它基于约束条件和已填充数字的信息,快速缩小可能性。
3. 启发式算法:启发式算法通过一系列启发式规则来指导解题过程。
例如,填充可能性最小的格子、优先选择约束条件最多的格子等。
第四部分:数独游戏对智力发展的影响数独游戏不仅仅是一种娱乐活动,它还对玩家的智力发展有积极的影响。
1. 逻辑思维:数独游戏需要玩家进行逻辑推理和分析,培养了玩家的逻辑思维能力。
2. 注意力和集中力:数独游戏需要玩家集中注意力,分析每个格子的可能性。
数独高效随机生成算法的研究与实现

数独高效随机生成算法的研究与实现作者:肖波来源:《电脑知识与技术》2019年第09期摘要:数独谜题的随机生成,是在数独基本规则的限制下,向空白盘面中随机填入一些数字,在适当的时机进行求解,根据解的情况,快速定位到一个具有唯一解的布局,并通过减少提示数来提高数独的难度,最终得到一个有效的数独初盘。
实验证明,随机生成算法出题的随机性、效率和难度都达到了比较好的效果。
关键词:数独;初盘;随机;生成中图分类号:TP312 文献标识码:A文章编号:1009-3044(2019)09-0086-02Abstract: The method of random generation of sudoku puzzles, is based on the restriction of sudoku basic rules, randomly filling some numbers into the blank grid, solving them at the appropriate time, locating a layout with unique solution quickly according to the situation of the solution, and improving its difficulty by reducing the hints, finally obtaining an effective initial layout of sudoku. Experiments show that the randomness, efficiency and difficulty of the random generation algorithm have achieved good results.Key words: sudoku; initial layout; random; generation1 概述数独(Sudoku)是一种当前非常流行的填数游戏,但与数字的运算毫无关系,主要考察人们的逻辑推理能力和观察能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数独问题高效算法的研究与实现
摘要:数独益智游戏(sudoku)是近年来全球流行的一种智力游戏。
本文通过分析数据结构、“非循环判断”预处理算法和回溯算法,深入探讨了数独问题的解决方案,并给出了该方案的实现算法,实验证明该算法是正确高效的。
关键词:数独;非循环判断;算法;回溯法
中图分类号:tp302
“数独”益智游戏(sudoku)是瑞士数学家欧拉发明的,目前在国内外非常流行。
游戏在9*9的单元表格中进行,单元表格不仅被分为9行、9列,也被分为3*3个九宫格。
单元表格中已存在若干数字,其余为空格。
游戏规则要求玩家在每个空格中填入1~9之间的数字,使每个数字在每行、每列、每个九宫格仅出现一次。
国内许多论文对数独游戏的教学意义做了深入讨论,但研究其求解算法的论文不多[1],用计算机进行快速求解的算法更少,参考文献[2]使用“有限递推”预处理提高了算法的执行速度,但其本身每次都要处理候选数字也耗时不少;参考文献[3]提出了效率较高的算法,但其冲突检测还可提高效率。
本文对“数独”游戏进行深入研究后用c语言设计出一种基于“非循环判断”预处理的回溯算法,然后用参考文献[2]中的三个实例及号称世界上迄今难度最大的数独游戏[4](芬兰数学家因卡拉花费3个月时间设计的)进行测试,实践证明该算法正确且高效。
1 数据结构与回溯法简介
1.1 数据结构
精心设计的数据结构可让算法更加高效[5]。
主要的数据结构是5个整型数组,其中2个一维数组,3个二维数组:
(1)int aresult [81],该数组的用途是接收题目(空白处则初始值为0)以及保存最终结果(所有的9*9个数字按序存储在该数组中);
(2)int aempty [81],该数组记载空白单元表格的序号和试填数字(前2位表示序号,第3位表示数字),这样既可减少搜索空间又方便下一次试填数字(原试填数字+1);
(3)int arow [9][9],该数组标识某行某个数字是否存在,减少判断时间;
(4)int acol[9][9],该数组标识某列某个数字是否存在,减少判断时间;
(5)int anine [9][9],该数组标识某九宫格某个数字是否存在,减少判断时间。
1.2 回溯法简介
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。
探索到某一步,发现原先选择并不优或达不到目标时,就退回一步重新选择[6]。
2 预处理算法
在读取数独问题时用特定数组记载空白单元表格的序号,过滤掉已填数字表格,减少搜索空间;判断某一空格能否填入某一数字时
本文采用“非循环判断”预处理算法(一般采用循环判断[2][3]),该算法思想是:按序扫描问题时,对原有数字进行预处理,即根据该格序号及数字对arow、acol和anine数组进行相应标记,如:第9格(下标从0开始)的数字为5,预处理时该格行号为1、列号为0、九宫格序号为0,结果为:arow[1][4]=1,acol [0][4]=1,anine [0][4]=1,则表明第1行、第0列和第0九宫格不能填数字5。
3 算法设计
(1)读入数独问题。
(2)给数组aempty、aresult、arow、acol 和anine赋初值。
(3)按序扫描问题,把未填数字的空格序号乘以10后存入aempty 数组,把已填数字或0按序号存入aresult数组,同时根据序号及已经填的数字给arow、acol和anine数组进行预处理。
(4)如果aempty数组中存在未填写数字的空格序号,则从aempty 数组中取出一个未填写数字的空格序号,否则执行(11)。
(5)把取出的空格序号进行行号、列号及九宫格序号分解。
(6)从数字1开始直到数字9尝试填写,并对其行、列及九宫格进行冲突判断,若尝试成功执行(7),否则执行(8)。
(7)执行相应标识处理后转到(4)。
(8)退回到上一个填数序号,若该填数序号存在则执行相应标识处理后执行(9),否则执行(12)。
(9)如果原来填写数字的下一个数字存在,对原来填写数字的
下一个数字尝试填写。
(10)下一个数字尝试填写成功执行(7),否则执行(8)。
(11)成功找到1个解,退出。
(12)无解,退出。
//关键源代码
void getanswer(int tx)
{
// tx表示未填空格数
while (no // bnum表示小格试填数字
for (num = bnum+1; num < 10; num++)
{
if (arow[row][num - 1] == 1) continue; //判断同行
if (acol[col][num - 1] == 1) continue; //判断同列
if (anine[jno][num - 1] == 1) continue; //判断九宫格aresult[tno] = num; //填数字
arow[row][num - 1] = 1; //标识行
acol[col][num - 1] = 1; //标识列
anine[jno][num - 1] = 1; //标识九宫格
aempty[no] = tno * 10 + num; //第no个为”序号*10+数字”no++;
rflag = 1;
break; //填好1个就跳出for循环
}
//没有填数
if (no==0)
{
printf(”no answer\n”);
break;
}
else if(rflag==0)
{
no--; //返回上一数重填
}
}
}
4 实例测试
前3个实例取自参考文献[2],第4个实例出自芬兰数学家因卡拉[4]:
下面是对上述4题各计算5次的时间测试结果(在操作系统xp 和cpu为amd 4600+(2.4g)的环境下测试的):从上面结果可知,一般的数独难题(包括号称世界上迄今难度最大的数独游戏)可在15ms内找出答案;由此可见,本算法是高效的;通过检验本算法所给答案也是正确的。
参考文献:
[1]王琼,邹晟.数独问题的求解、评价与生成算法的研究[j].南京师范大学学报(工程技术版),2010,10(1):76-79.
[2]雷蕾,沈富可.关于数独问题的算法的设计与实现[j].电脑知识与技术,2007,2(2):481-482.
[3]李盘荣.“数独”游戏的算法研究与实现[j].电脑知识与技术,2008,3(8):1715-1717.
[4]http:
///news/sh/2013-05-26/144777326.html.
[5]严蔚敏,吴伟民.数据结构[m].北京:清华大学出版社.
[6]http:///view/45.htm.
作者简介:姜华林(1971-),男,土家族,贵州省遵义市人,讲师,硕士(西南大学),主要研究方向为:软件设计与开发,算法设计与分析。
作者单位:遵义职业技术学院,贵州遵义 563000。