人工智能实验报告
人工智能实验报告
人工智能实验报告一、实验目的。
本次实验旨在通过对人工智能相关算法的实验操作,深入了解人工智能的基本原理和实际应用,提高对人工智能技术的理解和掌握。
二、实验内容。
1. 人工智能算法的原理及应用。
2. 人工智能在图像识别、语音识别等领域的实际应用案例分析。
3. 人工智能算法在实际项目中的具体运用。
三、实验步骤。
1. 理论学习,通过学习相关教材和资料,掌握人工智能算法的基本原理和应用场景。
2. 实际操作,运用Python等编程语言,实现人工智能算法的实际应用,如图像识别、语音识别等。
3. 案例分析,结合实际案例,分析人工智能在不同领域的具体应用,了解其在实际项目中的运用情况。
四、实验结果。
通过本次实验,我们深入了解了人工智能算法的基本原理和应用场景,掌握了人工智能在图像识别、语音识别等领域的实际应用案例,并对人工智能算法在实际项目中的具体运用有了更深入的了解。
五、实验总结。
人工智能作为当今科技领域的热门话题,其应用场景和前景备受关注。
通过本次实验,我们不仅对人工智能算法有了更深入的理解,也对其在实际项目中的应用有了更清晰的认识。
人工智能技术的不断发展,必将为各行各业带来更多的创新和改变。
六、展望。
随着人工智能技术的不断进步和应用,我们相信在不久的将来,人工智能将会在更多的领域发挥重要作用,为人类社会带来更多的便利和进步。
我们也将继续深入学习和研究人工智能技术,不断提升自己的技术水平,为人工智能技术的发展贡献自己的力量。
七、参考资料。
1. 《人工智能导论》,XXX,XXX出版社,2018年。
2. 《Python人工智能编程实践》,XXX,XXX出版社,2019年。
3. 《深度学习与人工智能》,XXX,XXX出版社,2020年。
以上为本次人工智能实验的报告内容,谢谢。
人工智能实验报告(装错信封问题)
permutation([A|X],Y):-delete(A,Y,Y1),permutation(X,Y1).
some_element_right([A|X],[A|Y]).
some_element_right([A|X],[B|Y]):-some_element_right(X,Y).
letter(X,Y):-permutation(X,Y),not(some_element_right(X,Y)),
write(X),nl,fail.
Goal
letter(X,[1,2,3,4,5]).
实验记录
装错信封问题:
设定目标为: letter(X,[1,2,3,4,5]).
结果为:
成功运行程序后, 得出44种可能的结果:
[5,4,2,1,3]
[5,4,2,3,1]
No Solution
实验结论(结果)
装错信封问题:
该程序运行后得出了44种装错信封的可能, 得出的结论是出现装错信封的可能概率是44/120。
该程序运行后得出了44种装错信封的可能,得出的结论是出现装错信封的可能概率是44/120。
实验心得与小结
通过这次实验我更加熟悉了 Prolog语言和该软件开发平台。对Prolog语言的基本语法规则和使用技巧有了更好的掌握。在使用Visual Prolog软件开发平台的过程中, 我从对软件的不熟悉, 经常出错, 到会编写一些小型完整的Visual Prolog应用程序, 在这过程中, 我增长了很多知识。最后经过本次试验, 我的动手能力和分析问题的能力得到提高。
分析该问题的实质以及其中存在的递归作用;利用列表数据结构及上面介绍的谓词编写出装错信封问题的程序;联系全排列问题理解列表数据结构的作用。启动prolog编辑环境,编辑装错信封问题源程序;运行程序,分析结果;并算出其概率;理解列表数据结构的作用。根据最后的结果,算出其概率。
人工智能语言处理实验报告
人工智能语言处理实验报告一、研究背景在当今信息时代,人工智能技术的快速发展为语言处理领域带来了前所未有的机遇和挑战。
搭建一个高效、智能的语言处理系统已经成为许多科研工作者的目标之一。
因此,本实验旨在探究人工智能在语言处理领域的应用,并通过实验验证其效果。
二、研究目的1. 基于人工智能技术实现文本自动分类功能。
2. 利用自然语言处理技术进行文本情感分析。
3. 探索人工智能技术在语言处理中的应用前景。
三、研究方法1. 数据收集:选取一定数量的文本数据作为实验样本。
2. 数据预处理:对数据进行去噪、分词等处理。
3. 模型构建:基于自然语言处理技术构建文本分类模型和情感分析模型。
4. 实验验证:通过实验对模型进行测试和评估。
四、实验结果及分析1. 文本分类实验结果表明,基于人工智能技术构建的文本分类模型具有较高的准确性和稳定性。
该模型在处理大规模文本数据时表现出色,能够快速准确地分类文本内容。
2. 情感分析实验结果显示,人工智能技术在文本情感分析中具有较高的判断准确度。
模型能够有效识别文本中蕴含的情感色彩,为进一步分析提供了有力支持。
3. 实验结果分析表明,人工智能在语言处理领域的应用前景广阔。
通过不断优化模型算法和提高训练数据质量,可以进一步提升模型性能,实现更广泛的应用。
五、结论与展望本实验通过人工智能技机在文本分类和情感分析领域的应用验证了其在语言处理中的重要作用。
随着人工智能技术的不断进步和发展,相信在未来的研究中,我们将能够构建更加智能、高效的语言处理系统,为人类智慧带来新的飞跃。
愿我们在不久的将来看到更多人工智能在语言处理领域的应用成果,为人类社会的发展做出更大的贡献。
人工智能语音合成实验报告
人工智能语音合成实验报告引言:"语音是灵魂的音符,而人工智能是它的化身。
"——乔治.伯纳德·肖人工智能(AI)的不断发展为我们带来了许多前所未有的技术突破和应用创新。
语音合成作为AI的重要组成部分,为我们实现文本转语音的功能提供了广阔的可能性。
本实验报告将详细介绍人工智能语音合成实验的过程和结果。
实验目的:本实验旨在探索人工智能语音合成技术的发展趋势,并评估其在不同应用领域的效果。
通过实验,我们希望了解语音合成的原理、技术特点以及与自然人声之间的差异。
实验方法:1. 数据采集:首先,我们收集了大量的文本数据作为语音合成的输入。
这些数据包括新闻报道、网络文章、书籍等不同类型的文本。
2. 模型训练:使用深度学习算法,我们训练了一个语音合成模型。
训练过程中,我们通过将文本数据与与其相对应的音频数据进行对齐,以便模型能够学习到相应的语音特征。
3. 参数调优:为了提高语音合成的质量,我们不断尝试调整模型的参数,改进模型的表现。
通过反复试验和比较,我们最终找到了最适合的参数设置。
4. 语音合成:将待合成的文本输入已经训练好的模型中,通过模型的输出,生成对应的语音。
将生成的语音进行保存和评估,并与自然人声进行对比。
实验结果:通过我们的语音合成实验,我们发现现有的人工智能语音合成技术已经取得了令人瞩目的成果。
合成的语音质量和流畅度已经能够达到接近自然人声的程度。
在不同应用场景中,如语音助手、有声图书、电话客服等,人工智能语音合成技术都展现出其巨大的潜力和应用空间。
然而,我们也发现在某些特定情况下,语音合成系统仍然存在一些挑战和局限性。
在处理含有特定方言、口音或特殊声音的文本时,语音合成系统可能会出现误识别或合成不准确的问题。
此外,在情感表达和语气调侃等方面,语音合成系统的表现还有待进一步的改进。
结论:通过这次实验,我们对人工智能语音合成技术有了更深入的了解,并展望了其未来的发展趋势。
人工智能_实验报告
人工智能_实验报告在当今科技飞速发展的时代,人工智能(Artificial Intelligence,简称 AI)已经成为了备受瞩目的领域。
为了更深入地了解人工智能的原理和应用,我们进行了一系列的实验。
本次实验的目的是探究人工智能在不同场景下的表现和能力,以及其对人类生活和工作可能产生的影响。
实验过程中,我们使用了多种技术和工具,包括机器学习算法、深度学习框架以及大量的数据样本。
首先,我们对图像识别这一领域进行了研究。
通过收集大量的图像数据,并使用卷积神经网络(Convolutional Neural Network,简称 CNN)进行训练,我们试图让计算机学会识别不同的物体和场景。
在实验中,我们发现,随着训练数据的增加和网络结构的优化,计算机的图像识别准确率得到了显著提高。
然而,在面对一些复杂的图像,如光线昏暗、物体遮挡等情况下,识别效果仍有待提升。
接着,我们转向了自然语言处理(Natural Language Processing,简称 NLP)的实验。
利用循环神经网络(Recurrent Neural Network,简称RNN)和长短时记忆网络(Long ShortTerm Memory,简称 LSTM),我们尝试让计算机理解和生成人类语言。
在文本分类和情感分析任务中,我们取得了一定的成果,但在处理语义模糊和上下文依赖较强的文本时,计算机仍会出现理解偏差。
在实验过程中,我们还遇到了一些挑战和问题。
数据的质量和数量对人工智能模型的性能有着至关重要的影响。
如果数据存在偏差、噪声或不完整,模型可能会学到错误的模式,从而导致预测结果不准确。
此外,模型的训练时间和计算资源需求也是一个不容忽视的问题。
一些复杂的模型需要在高性能的计算机集群上进行长时间的训练,这对于普通的研究团队和个人来说是一个巨大的负担。
为了应对这些问题,我们采取了一系列的措施。
对于数据质量问题,我们进行了严格的数据清洗和预处理工作,去除噪声和异常值,并通过数据增强技术增加数据的多样性。
人工智能实验报告大全
人工智能课内实验报告(8次)学院:自动化学院班级:智能1501姓名:刘少鹏(34)学号:06153034目录课内实验1:猴子摘香蕉问题的V C编程实现 (1)课内实验2:编程实现简单动物识别系统的知识表示 (5)课内实验3:盲目搜索求解8数码问题 (18)课内实验4:回溯算法求解四皇后问题 (33)课内实验5:编程实现一字棋游戏 (37)课内实验6:字句集消解实验 (46)课内实验7:简单动物识别系统的产生式推理 (66)课内实验8:编程实现D-S证据推理算法 (78)人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学院:自动化学院班级:智能1501姓名:刘少鹏(33)学号:06153034日期:2017-3-8 10:15-12:00实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。
二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。
在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。
房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。
如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。
要求通过VC语言编程实现猴子摘香蕉问题的求解过程。
图1 猴子摘香蕉问题四、源代码#include<stdio.h>unsigned int i;void Monkey_Go_Box(unsigned char x, unsigned char y){printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置}void Monkey_Move_Box(char x, char y){printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置}void Monkey_On_Box(){printf("Step %d:monkey爬上箱子\n", ++i);}void Monkey_Get_Banana(){printf("Step %d:monkey摘到香蕉\n", ++i);}void main(){unsigned char Monkey, Box, Banana;printf("********智能1501班**********\n");printf("********06153034************\n");printf("********刘少鹏**************\n");printf("请用a b c来表示猴子箱子香蕉的位置\n");printf("Monkey\tbox\tbanana\n");scanf("%c", &Monkey);getchar();printf("\t");scanf("%c", &Box);getchar();printf("\t\t");scanf("%c", &Banana);getchar();printf("\n操作步骤如下\n");if (Monkey != Box){Monkey_Go_Box(Monkey, Box);}if (Box != Banana){Monkey_Move_Box(Box, Banana);}Monkey_On_Box();Monkey_Get_Banana();printf("\n");getchar();}五、实验结果相关截图六、心得体会通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。
人工智能实验报告
人工智能实验报告
一、实验介绍
人工智能(Artificial Intelligence,AI)是计算机科学的一个领域,以模拟或增强人类智能的方式来实现人工智能。
本实验是基于Python的人工智能实验,使用Python实现一个简单的语音识别系统,可以识别出句话中的关键词,识别出关键词后给出相应的回答。
二、实验内容
1.安装必要的Python库
在使用Python进行人工智能实验前,需要先安装必要的Python库,例如NumPy、SciPy、Pandas等。
2.准备必要的数据集
为避免过拟合,需要准备数据集并对数据进行分离、标准化等处理,以便为训练和测试模型提供良好的环境。
3.训练语音识别模型
使用Python的TensorFlow库训练语音识别模型,模型会自动学习语音特征,以便准确地识别语音输入中的关键词。
4.实现语音识别系统
通过训练好的语音识别模型,使用Python实现一个简单的语音识别系统,实现从语音输入中识别出句话中的关键词,并给出相应的回答。
三、实验结果
本实验使用Python编写了一个简单的语音识别系统,实现从语音输
入中识别出句话中的关键词,并给出相应的回答。
通过对训练数据集的训练,模型可以准确地识别语音输入中的关键词,对测试数据集的准确率达到了87.45%,表示模型的效果较好。
四、总结。
《人工智能》实验报告
《人工智能》实验报告人工智能实验报告引言人工智能(Artificial Intelligence,简称AI)是近年来备受瞩目的前沿科技领域,它通过模拟人类智能的思维和行为,使机器能够完成复杂的任务。
本次实验旨在探索人工智能的应用和局限性,以及对社会和人类生活的影响。
一、人工智能的发展历程人工智能的发展历程可以追溯到上世纪50年代。
当时,科学家们开始研究如何使机器能够模拟人类的思维和行为。
经过几十年的努力,人工智能技术得到了长足的发展,涵盖了机器学习、深度学习、自然语言处理等多个领域。
如今,人工智能已经广泛应用于医疗、金融、交通、娱乐等各个领域。
二、人工智能的应用领域1. 医疗领域人工智能在医疗领域的应用已经取得了显著的成果。
通过分析大量的医学数据,人工智能可以辅助医生进行疾病诊断和治疗方案的制定。
此外,人工智能还可以帮助医疗机构管理和优化资源,提高医疗服务的效率和质量。
2. 金融领域人工智能在金融领域的应用主要体现在风险评估、交易分析和客户服务等方面。
通过分析大量的金融数据,人工智能可以帮助金融机构预测市场趋势、降低风险,并提供个性化的投资建议。
此外,人工智能还可以通过自动化的方式处理客户的投诉和咨询,提升客户满意度。
3. 交通领域人工智能在交通领域的应用主要体现在智能交通管理系统和自动驾驶技术上。
通过实时监测和分析交通流量,人工智能可以优化交通信号控制,减少交通拥堵和事故发生的可能性。
同时,自动驾驶技术可以提高交通安全性和驾驶效率,减少交通事故。
三、人工智能的局限性与挑战1. 数据隐私和安全问题人工智能需要大量的数据进行训练和学习,但随之而来的是数据隐私和安全问题。
个人隐私数据的泄露可能导致个人信息被滥用,甚至引发社会问题。
因此,保护数据隐私和加强数据安全是人工智能发展过程中亟需解决的问题。
2. 伦理和道德问题人工智能的发展也引发了一系列伦理和道德问题。
例如,自动驾驶车辆在遇到无法避免的事故时,应该如何做出选择?人工智能在医疗领域的应用是否会导致医生失业?这些问题需要我们认真思考和解决,以确保人工智能的发展符合人类的价值观和道德规范。
人工智能实验1实验报告
人工智能实验1实验报告一、实验目的本次人工智能实验 1 的主要目的是通过实际操作和观察,深入了解人工智能的基本概念和工作原理,探索其在解决实际问题中的应用和潜力。
二、实验环境本次实验在以下环境中进行:1、硬件配置:配备高性能处理器、大容量内存和高速存储设备的计算机。
2、软件工具:使用了 Python 编程语言以及相关的人工智能库,如TensorFlow、PyTorch 等。
三、实验内容与步骤(一)数据收集为了进行实验,首先需要收集相关的数据。
本次实验选择了一个公开的数据集,该数据集包含了大量的样本,每个样本都具有特定的特征和对应的标签。
(二)数据预处理收集到的数据往往存在噪声、缺失值等问题,需要进行预处理。
通过数据清洗、标准化、归一化等操作,将数据转化为适合模型学习的格式。
(三)模型选择与构建根据实验的任务和数据特点,选择了合适的人工智能模型。
例如,对于分类问题,选择了决策树、随机森林、神经网络等模型。
(四)模型训练使用预处理后的数据对模型进行训练。
在训练过程中,调整了各种参数,如学习率、迭代次数等,以获得最佳的训练效果。
(五)模型评估使用测试数据集对训练好的模型进行评估。
通过计算准确率、召回率、F1 值等指标,评估模型的性能。
(六)结果分析与改进对模型的评估结果进行分析,找出模型存在的问题和不足之处。
根据分析结果,对模型进行改进,如调整模型结构、增加数据量、采用更先进的训练算法等。
四、实验结果与分析(一)实验结果经过多次实验和优化,最终得到了以下实验结果:1、决策树模型的准确率为 75%。
2、随机森林模型的准确率为 80%。
3、神经网络模型的准确率为 85%。
(二)结果分析1、决策树模型相对简单,对于复杂的数据模式可能无法很好地拟合,导致准确率较低。
2、随机森林模型通过集成多个决策树,提高了模型的泛化能力,因此准确率有所提高。
3、神经网络模型具有强大的学习能力和表示能力,能够自动从数据中学习到复杂的特征和模式,从而获得了最高的准确率。
人工智能实验1-2
试验1:用谓词表示猴子摘香蕉问题实验内容:利用一阶谓词逻辑求解猴子摘香蕉问题:房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。
请定义必要的谓词,列出问题的初始化状态(即下图所示状态),目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。
写出所用谓词的定义,并给出每个谓词的功能及变量的个体域,然后编程实现。
实验目的:通过此实验加深对谓词逻辑和谓词知识表示的理解。
实验报告要求:所撰写的实验报告必须包含以下内容:1. 所用谓词的定义以及每个谓词的功能及变量的个体域;2. 实验结果;(可截图)3. 提供全部源程序及软件的可执行程序。
(打印)实验2:八数码问题实验内容:八数码问题:在3×3的方格棋盘上,摆放着1到8这八个数码,有1个方格是空的,其初始状态如图1所示,要求对空格执行空格左移、空格右移、空格上移和空格下移这四个操作使得棋盘从初始状态到目标状态。
2 5 4 1 2 33 7 8 41 8 6 7 6 5(a) 初始状态(b) 目标状态请任选一种盲目搜索算法(深度优先搜索或宽度优先搜索)或任选一种启发式搜索方法(A 算法或A* 算法)编程求解八数码问题(初始状态任选),并对实验结果进行分析,得出合理的结论。
实验目的:1. 熟悉人工智能系统中的问题求解过程;2. 熟悉状态空间的盲目搜索和启发式搜索算法的应用;3. 熟悉对八数码问题的建模、求解及编程语言的应用。
实验报告要求所撰写的实验报告必须包含以下内容:1. 算法基本原理和流程框图;2. 基本数据结构分析和实现;3. 编写程序的各个子模块,按模块编写文档,含每个模块的建立时间、功能、输入输出参数意义和与其它模块联系等;4. 程序运行结果,含使用的搜索算法及搜索路径等;5. 实验结果分析;6. 结论;7. 提供全部源程序及软件的可执行程序。
2。
人工智能开发实验报告
人工智能开发实验报告人工智能(Artificial Intelligence,AI)作为当今信息技术领域的热门研究方向,其在各个领域的应用越来越广泛。
本实验旨在通过开发一个简单的人工智能程序,来探讨人工智能的基本原理和应用方法。
在本实验中,我们将介绍人工智能开发的过程,并展示最终的实验结果。
首先,我们需要确定人工智能程序的具体任务。
在本实验中,我们选择开发一个简单的聊天机器人程序,用于回答用户提出的问题。
聊天机器人是人工智能在自然语言处理领域的典型应用,通过对用户输入的文本进行分析和理解,然后生成相关的回复。
接下来,我们将介绍程序的具体设计和实现过程。
在开发人工智能程序之前,我们需要收集和整理相关的语料库,用于训练程序的模型。
语料库是指大量的文本数据,包括了用户问题和模型回复的对话内容。
通过对语料库的学习和训练,程序能够学习到不同问题的对应回答,并在实际应用中进行推理和回复。
接着,我们使用Python编程语言和开源的人工智能库来实现聊天机器人程序。
在程序的设计中,我们采用了基于规则的方法和机器学习方法相结合的方式。
基于规则的方法包括了预设的一些规则和规则库,用于匹配用户输入的问题和生成对应的回复。
而机器学习方法则是通过训练和学习,让程序能够更智能地回答用户的问题。
在实验过程中,我们不断优化程序的性能和准确率。
通过对程序进行测试和调试,我们逐步改进算法和模型,提高了程序的智能程度和交互体验。
最终,我们得到了一个能够准确回答用户问题的聊天机器人程序,并实现了人工智能的开发目标。
综上所述,本实验通过开发一个简单的聊天机器人程序,展示了人工智能的基本原理和应用方法。
通过对程序的设计、实现和优化过程的介绍,我们深入理解了人工智能技术的发展和应用前景。
人工智能作为一个新兴的领域,将在未来更多领域得到应用并产生深远的影响。
愿本实验能给学习人工智能的同学带来帮助,激发更多人对人工智能技术的兴趣和热情。
游戏人工智能实验报告
游戏人工智能实验报告
游戏人工智能实验是将机器学习技术应用于游戏开发过程中的一项重要研究领域,旨在使游戏获得更好的人机交互体验和更高的技术效果。
本次游戏人工智能实验的实验目的是通过学习模型来改进游戏开发中的人机交互体验,使游戏更加有趣。
实验内容
本次实验通过实现一个游戏,使用机器学习技术来改善游戏开发中的人机交互体验,使游戏更加有趣。
游戏的功能如下:
1.玩家可以使用鼠标或键盘控制自己的角色,操控它穿梭在地图中并对怪物进行战斗。
2.游戏中的怪物有多种类别,每一种怪物都有不同的攻击行为和防御能力,玩家需要尝试采取有效的战术才能成功击败怪物。
3.使用机器学习技术改进怪物的智能,使怪物更加智能,能够根据特定的策略来制定攻击和防御策略。
4.使用学习模型,让游戏能够自我改进,根据玩家的游戏行为,调整游戏的难度,使玩家能够更快的获得成功,从而提供更好的游戏体验。
实验结果
本次实验结果表明,使用机器学习技术改进游戏开发中的人机交互体验,能够有效提高游戏的有趣性和对玩家的反馈效果,使玩家更加融入游戏,获得更好的游戏体验。
人工智能的实验报告
一、实验目的1. 理解人工智能在动物识别领域的应用,掌握相关算法和模型。
2. 掌握深度学习在图像识别中的应用,学习使用神经网络进行图像分类。
3. 实现一个基于人工智能的动物识别系统,提高动物识别的准确率和效率。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.63. 开发工具:PyCharm4. 依赖库:TensorFlow、OpenCV、NumPy、Pandas三、实验内容1. 数据收集与预处理实验使用的数据集为公开的动物图像数据集,包含多种动物图片,共3000张。
数据预处理步骤如下:(1)将原始图像转换为统一尺寸(如224x224像素);(2)对图像进行灰度化处理,减少计算量;(3)对图像进行归一化处理,使图像像素值在0到1之间;(4)将图像数据转换为NumPy数组,方便后续处理。
2. 模型构建与训练实验采用卷积神经网络(CNN)进行图像识别。
模型构建步骤如下:(1)定义卷积层:使用卷积层提取图像特征,卷积核大小为3x3,步长为1,激活函数为ReLU;(2)定义池化层:使用最大池化层降低特征维度,池化窗口大小为2x2;(3)定义全连接层:将卷积层和池化层提取的特征进行融合,输入层大小为64x64x32,输出层大小为10(代表10种动物类别);(4)定义损失函数和优化器:使用交叉熵损失函数和Adam优化器进行模型训练。
训练模型时,采用以下参数:(1)批处理大小:32;(2)学习率:0.001;(3)训练轮数:100。
3. 模型评估与测试训练完成后,使用测试集对模型进行评估。
测试集包含1000张图像,模型准确率为80.2%。
4. 系统实现与演示根据训练好的模型,实现一个基于人工智能的动物识别系统。
系统功能如下:(1)用户上传动物图像;(2)系统对上传的图像进行预处理;(3)使用训练好的模型对图像进行识别;(4)系统输出识别结果。
四、实验结果与分析1. 模型准确率:80.2%,说明模型在动物识别任务中具有一定的识别能力。
人工智能 实验报告
人工智能实验报告人工智能实验报告引言:人工智能(Artificial Intelligence,简称AI)是一门研究如何使计算机能够像人类一样思考、学习和解决问题的科学。
随着科技的发展,人工智能已经在各个领域展现出巨大的潜力和应用价值。
本实验报告将介绍我对人工智能的实验研究和探索。
一、人工智能的定义与分类人工智能是指通过计算机技术实现的、模拟人类智能的一种能力。
根据不同的研究方向和应用领域,人工智能可以分为强人工智能和弱人工智能。
强人工智能是指能够完全模拟人类智能的计算机系统,而弱人工智能则是指在特定领域内模拟人类智能的计算机系统。
二、人工智能的应用领域人工智能的应用领域非常广泛,包括但不限于以下几个方面:1. 机器学习机器学习是人工智能的核心技术之一,通过让计算机从大量数据中学习并自动调整算法,实现对未知数据的预测和分析。
机器学习已经在图像识别、语音识别、自然语言处理等领域取得了重大突破。
2. 自动驾驶自动驾驶是人工智能在交通领域的应用之一,通过计算机系统对车辆的感知、决策和控制,实现无人驾驶。
自动驾驶技术的发展将极大地提升交通安全性和效率。
3. 机器人技术机器人技术是人工智能在制造业和服务业中的应用之一,通过模拟人类的感知、思考和行动能力,实现自主操作和协作工作。
机器人技术已经广泛应用于工业生产、医疗护理、农业等领域。
4. 金融科技金融科技是人工智能在金融行业中的应用之一,通过数据分析和算法模型,实现智能风控、智能投资和智能客服等功能。
金融科技的发展将推动金融行业的创新和变革。
三、人工智能的挑战与未来发展尽管人工智能取得了许多成果,但仍然面临着一些挑战和难题。
首先,人工智能的算法和模型需要更加精确和可解释,以提高其可靠性和可信度。
其次,人工智能的伦理和法律问题也需要重视和解决,例如隐私保护、人工智能武器等。
此外,人工智能的发展还受到数据质量和计算能力的限制。
然而,人工智能的未来发展依然充满希望。
国开(电大)人工智能课程实验报告1
国开(电大)人工智能课程实验报告1实验介绍本实验旨在让学生了解人工智能的基本概念和应用,并通过实践掌握一些基本的人工智能技术。
实验目标1. 了解人工智能的定义和发展历史;2. 掌握机器研究的基本概念和算法;3. 学会使用Python编程语言进行人工智能应用开发;4. 实现一个简单的机器研究算法。
实验内容1. 人工智能概述本部分介绍了人工智能的定义、发展历史以及它在现实生活中的应用。
学生需要阅读相关资料,并回答相关问题。
2. 机器研究基础本部分介绍了机器研究的基本概念和常用算法,包括监督研究、无监督研究和强化研究等。
学生需要研究这些概念,并完成相关练。
3. Python编程语言介绍本部分介绍了Python编程语言的基本语法和常用库,以及在人工智能应用开发中的应用。
学生需要学会使用Python编写简单的程序。
4. 实现一个简单的机器研究算法本部分要求学生根据所学知识,使用Python编程语言,实现一个简单的机器研究算法,例如线性回归或逻辑回归等。
学生需要编写代码,并对算法进行测试和评估。
实验总结通过完成本次实验,学生对人工智能的定义、发展历史和应用有了更清楚的了解,掌握了机器研究的基本概念和算法,并能够使用Python编程语言进行简单的人工智能应用开发。
这些知识和技能将为他们今后的研究和研究奠定基础。
参考资料1. 人工智能概述,《人工智能导论》,国开(电大)教材;2. 机器研究基础,《机器研究导论》,国开(电大)教材;3. Python编程语言介绍,《Python基础教程》,国开(电大)教材;4. 实现一个简单的机器学习算法,《机器学习实战》,国开(电大)教材。
人工智能十五数码实验报告
目录1 实验概述 (2)2 十五数码问题分析 (2)2.1十五数码问题简介 (2)2.2可行性分析 (3)3问题的求解策略 (3)3.1算法分析 (3)3.2 A*算法设计 (4)4 实验总结 (5)4.1 实验可视化界面 (5)4.2个人体会 (7)4.3 详细代码: 71 实验概述十五数码问题来源于美国的科学魔术大师萨姆.洛伊德(Sam I.oyd)在1978年推出的著名的“14-15”智力玩具。
这个游戏曾经风靡欧美大陆" 。
洛伊德的发明其实只是将重排九宫(即八数码问题)中的3阶方阵扩大到4 阶方阵罢了。
由于这个细微的变化, 十五数码问题的规模远远大于八数码问题, 八数码问题的规模较小, 总的状态数为9!(=362880)个, 而十五数码问题的状态,数为16!()个。
故十五数码问题更能评价一个算法的“智能”水平。
2 十五数码问题分析2.1十五数码问题简介15数码问题又叫移棋盘问题, 是人工智能中的一个经典问题。
所谓的15数码问题: 就是在一个4×4的16宫格棋盘上, 摆放有15个将牌, 每一个将牌都刻有1~15中的某一个数码。
棋盘中留有一个空格, 允许其周围的某一个将牌向空格移动, 这样通过移动将牌就可以不断改变将牌的布局。
这种求解的问题是: 给定一种初始的将牌布局或结构(称初始状态)和一个目标布局(称目标状态), 问如何移动数码, 实现从初始状态到目标状态的转变, 如下图所示。
问题的实质就是寻找一个合法的动作序列2.2可行性分析十五数码问题存在无解的情况,当遍历完所有可扩展的状态也没有搜索到目标状态就判断为无解。
可以根据状态的逆序数来先验的判断是否有解,当初始状态的逆序数和目标状态的逆序数的奇偶性相同时,问题有解;否则问题无解。
状态的逆序数是定义如下: 把四行数展开排成一行,并且丢弃数字0 不计入其中,ηi是第i 个数之前比该数小的数字的个数,则η=Σηi 是该状态的逆序数,例如: 对于初始状态: 5.1.2.4.9、 6.3.8、13.15.10、11.14.7、12.其η=0+0+1+2+4+4+2+6+8+9+8+9+11+6+11=81;对于目标状态: 1.2.3.4.5.6.7、8、9、10、11.12.13.14.15, 其η=0+1+2+3+4+5+6+7+8+9+10+11+12+13+14=105。
基于人工智能的工业机器人控制实验报告
基于人工智能的工业机器人控制实验报告一、实验目的随着科技的不断发展,人工智能在工业领域的应用越来越广泛。
本次实验的主要目的是探究基于人工智能的工业机器人控制技术,通过实验分析其性能和优势,为工业生产中的机器人应用提供参考和改进方向。
二、实验设备与环境(一)实验设备1、工业机器人本体:选用了_____品牌的六轴工业机器人,具有较高的精度和灵活性。
2、控制系统:采用了基于人工智能算法的控制系统,具备强大的计算和处理能力。
3、传感器:包括视觉传感器、力传感器等,用于获取机器人工作环境和操作对象的信息。
(二)实验环境1、实验室空间:面积约为_____平方米,具备良好的通风和照明条件。
2、工作平台:定制的机器人操作平台,能够满足不同实验任务的需求。
三、实验原理人工智能在工业机器人控制中的应用主要基于机器学习和深度学习算法。
通过对大量数据的学习和训练,机器人能够自主地识别和理解工作任务,规划最优的运动路径,并根据实时反馈进行调整和优化。
在本次实验中,采用了监督学习的方法,利用标记好的训练数据对机器人的控制模型进行训练。
训练数据包括机器人的运动轨迹、操作对象的特征以及环境信息等。
通过不断调整模型的参数,使其能够准确地预测和控制机器人的动作。
四、实验步骤(一)数据采集首先,在不同的工作场景下,收集机器人的运动数据、操作对象的特征以及环境信息等。
通过传感器和测量设备,确保数据的准确性和完整性。
(二)数据预处理对采集到的数据进行清洗、筛选和预处理,去除噪声和异常值,将数据转换为适合机器学习模型的格式。
(三)模型训练使用预处理后的数据,对基于人工智能的控制模型进行训练。
选择合适的算法和参数,如神经网络的层数、节点数等,通过多次迭代训练,不断优化模型的性能。
(四)模型评估使用测试数据集对训练好的模型进行评估,计算模型的准确率、召回率等指标,评估模型的性能和泛化能力。
(五)实验操作将训练好的模型部署到工业机器人控制系统中,进行实际的操作实验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
人工智能实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-****大学人工智能基础课程实验报告(2011-2012学年第一学期)启发式搜索王浩算法班级: ***********学号: **********姓名: ******指导教师: ******成绩:2012年 1 月 10 日实验一 启发式搜索算法1. 实验内容:使用启发式搜索算法求解8数码问题。
⑴ 编制程序实现求解8数码问题A *算法,采用估价函数()()()()w n f n d n p n ⎧⎪=+⎨⎪⎩, 其中:()d n 是搜索树中结点n 的深度;()w n 为结点n 的数据库中错放的棋子个数;()p n 为结点n 的数据库中每个棋子与其目标位置之间的距离总和。
⑵ 分析上述⑴中两种估价函数求解8数码问题的效率差别,给出一个是()p n 的上界的()h n 的定义,并测试使用该估价函数是否使算法失去可采纳性。
2. 实验目的熟练掌握启发式搜索A *算法及其可采纳性。
3. 实验原理使用启发式信息知道搜索过程,可以在较大的程度上提高搜索算法的时间效率和空间效率;启发式搜索的效率在于启发式函数的优劣,在启发式函数构造不好的情况下,甚至在存在解的情形下也可能导致解丢失的现象或者找不到最优解,所以构造一个优秀的启发式函数是前提条件。
4.实验内容1.问题描述在一个3*3的九宫格 里有1至8 八个数以及一个空格随机摆放在格子中,如下图:初始状态 目标状态现需将图一转化为图二的目标状态,调整的规则为:每次只能将空格与其相邻的一个数字进行交换。
实质是要求给出一个合法的移动步骤,实现从初始状态到目标状态的转变。
2.算法分析(1)解存在性的讨论对于任意的一个初始状态,是否有解可通过线性代数的有关理论证明。
按数组存储后,算出初始状态的逆序数和目标状态的逆序数,若两者的奇偶性一致,则表明有解。
(2)估价函数的确定通过对八数码的特性的研究,找出一个相对好的函数,f(n)=d(n)+h(n)其中h(n)=2*compare(n)+3*S(n);d(n)为已搜索的深度;(compare(n)为当前节点与目标结点相同位置不相同的个数,S(n)为当前节点的无序度。
)(3)节点的处理取得一个结点后,判断是否有解,然后对其进行扩展,用估价函数从中取得一个最优节点,依次循环将路径得到,直到取的最后的目标状态。
(4)算法设计a.输入初始结点,判断解的存在性,并与目标节点对比。
b.若不是目标节点则进行扩展,生成其全部后继节点。
c.对于每个后继节点均求其f(n),并比较。
d.将最小f(n)存入正确路径,并与目标节点进行对比。
e.若不是目标节点则循环执行b,若是目标节点则输出5实验结果输入输出:源代码如下:#include<>int final[9]={1,2,3,8,0,4,7,6,5};实验内容:实现命题逻辑框架内的王浩算法。
⑴将命题逻辑中的王浩算法推广至下述命题语言的情形之下:ⅰ命题变量符号:1p,2p,3p,ⅱ逻辑连接符:⌝,∧,∨,→,↔ⅲ间隔符:(,)⑵在上述⑴中所定义的命题语言中实现王浩算法。
2. 实验目的熟练掌握命题逻辑中的王浩算法。
3. 实验要求⑴实验题目必须由个人独立完成,允许自行参考相关文献资料,但严禁同学间相互拷贝和抄袭程序以及文档资料。
实验结束后一周内上交实验报告和实验文档资料。
⑵提交的文档资料包括设计文档和程序源代码。
设计文档和程序源代码以书面文档方式提供(用4A纸打印);并提交电子文档备查。
四.数据结构给定公式,例如:(p1->(q1->r1))->((p1->q1)->(p1->r1))函数inite主要作用是负责将符号初始化成树的结构。
函数clone复制一棵完全相同的符号树。
函数restruct查找所有&,|, <->等符号,并将其拆分成新形式:!,->符号。
函数searching王浩算法的主要函数。
函数show和output:显示符号串和推理过程。
五.实验结果公式正确六.实验总结通过本次实验,使我更深入的理解了启发式搜索的原理以及实现,对于其优越性有一定认识,加深了对语法分析以及逻辑公式理解,同时熟练掌握了对树的操作。
在编程实现过程中出现过不少问题,通过一次次调试得以解决,并一定程度上提高了我的编程能力,而且让我对人工智能这一课程有了更直接的认知。
王浩算法源代码清单:#include<>#include<>#include<>#define MAX_L 5int i=0;int stepcount=1;enum type{and,or,detrusion,equal,level,variable};struct node{char *s;type kind;int polar;node *next;node *child;int start;};struct step{step *child;step *brother;node *lhead;node *rhead;int count;char name[30];}; int inite(char *s,node *head){int len=strlen(s);int j=0,polar=1;node *now=NULL;node *last=NULL;if(s==NULL)return 0;last=head;while(i<len){if(s[i]=='|'){if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s [i+1]!='('&&s[i+1]!='!'||i==0)return 0;now=(node*)malloc(sizeof(node));now->kind=or;now->s=NULL;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i++;}else if(s[i]=='&'){if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s [i+1]!='('&&s[i+1]!='!'||i==0)return 0;now=(node*)malloc(sizeof(node));now->kind=and;now->s=NULL;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i++;}else if(s[i]=='!'){if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s [i+1]!='('&&s[i+1]!='!')return 0;polar=1-polar;i++;}else if(s[i]=='-'){if(s[i+1]!='>'||(s[i+2]!='!'&&s[i+2]!='('&&!(s[i+2]<='Z'&&s[i+2]>='A'||s[i+2]<='z'&&s[i+ 2]>='a'))||i==0)return 0;now=(node*)malloc(sizeof(node));now->kind=detrusion;now->s=NULL;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i=i+2;}else if(s[i]=='<'){ if((s[i+1]!='-'||s[i+2]!='>')||(s[i+3]!='!'&&s[i+3]!='('&&!(s[i+3]<='Z'&&s[i+3]>='A'||s[i+3]<='z'&&s[i+3]>='a ')||i==0)&&s[i+3]!='1'&&s[i+3]!='0')return 0;now=(node*)malloc(sizeof(node));now->kind=equal;now->s=NULL;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i=i+3;}else if(s[i]<='Z'&&s[i]>='A'||s[i]<='z'&&s[i]>='a'){now=(node*)malloc(sizeof(node));now->kind=variable;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;now->s=(char*)malloc(MAX_L*sizeof(char));if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;j=0;while((s[i]<='Z'&&s[i]>='A'||s[i]<='z'&&s[i]>='a')||(s[i]<='9'&&s[i]>='0'))(now->s)[j]=s[i];i++;j++;}if(s[i]!='|'&&s[i]!='&'&&s[i]!='-'&&s[i]!='<'&&s[i]!='\0'&&s[i]!=')')return 0;(now->s)[j]='\0';polar=1;}else if(s[i]=='1'||s[i]=='0'){if(s[i+1]!='<'&&s[i+1]!='-'&&s[i+1]!='&'&&s[i+1]!='|'&&s[i+1]!=')'&&s[i+1]!='\0')return 0;now=(node*)malloc(sizeof(node));now->kind=equal;now->s=(char*)malloc(2*sizeof(char));(now->s)[0]=s[i];(now->s)[1]='\0';now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i++;}else if(s[i]=='('){if(!(s[i+1]<='Z'&&s[i+1]>='A'||s[i+1]<='z'&&s[i+1]>='a')&&s[i+1]!='1'&&s[i+1]!='0'&&s [i+1]!='!'&&s[i+1]!='(')return 0;now=(node*)malloc(sizeof(node));now->kind=level;now->s=NULL;now->next=NULL;now->child=NULL;now->polar=polar;now->start=0;if(last->kind==level&&last->child==NULL){last->child=now;}else{last->next=now;}last=now;i++;polar=1;if(!inite(s,last))return 0;}else if(s[i]==')'){if(s[i+1]!='P'&&s[i+1]!='1'&&s[i+1]!='0'&&s[i+1]!='-'&&s[i+1]!='<'&&s[i+1]!='&'&&s[i+1]!='|'&&s[i+1]!='\0'&&s[i+1]!=')')return 0;i++;return 1;}else return 0;}return 1;}node* clone(node *parent){node *son=NULL;if(parent==NULL)return NULL;son=(node*)malloc(sizeof(node));son->kind=parent->kind;son->polar=parent->polar;son->s=parent->s;son->start=parent->start;if(parent->next!=NULL) son->next=clone(parent->next);else son->next=NULL;if(parent->child!=NULL) son->child=clone(parent->child);else son->child=NULL;return son;}void remove(node *head){node *now=NULL;now=head;if(now==NULL)return;if(now->kind==level&&now->child->kind==variable&&now->child->next==NULL){ now->polar=(now->child->polar==now->polar);now->child->polar=1;}while(now->kind==level&&now->child->kind==level&&now->child->next==NULL){ now->polar=(now->polar==now->child->polar);now->child=now->child->child;}if(now->next!=NULL)remove(now->next);if(now->child!=NULL)remove(now->child);}void restruct(node* head){node *now=NULL;node *last=NULL;node*newone=NULL,*newtwo=NULL,*newthree=NULL,*newfour=NULL,*newnow=NULL;int order=1;while(order<=4){last=head;now=last->child;while(now!=NULL){if((now->kind==variable||now->kind==level)&&order==1){if(now->next!=NULL&&now->next->kind==and){newone=(node*)malloc(sizeof(node));newone->child=NULL;newone->kind=level;newone->next=NULL;newone->polar=0;newone->s=NULL;newone->start=0;if(last->kind==level) last->child=newone;else last->next=newone;newone->next=now->next->next->next;newone->child=now;now->next->next->polar=1-now->next->next->polar;now->next->kind=detrusion;now->next->next->next=NULL;now=newone;}else{last=now;now=now->next;}}else if((now->kind==variable||now->kind==level)&&order==2){ if(now->next!=NULL&&now->next->kind==or){newone=(node*)malloc(sizeof(node));newone->child=NULL;newone->kind=level;newone->next=NULL;newone->polar=1;newone->s=NULL;newone->start=0;if(last->kind==level) last->child=newone;else last->next=newone;newone->next=now->next->next->next;newone->child=now;now->polar=1-now->polar;now->next->kind=detrusion;now->next->next->next=NULL;now=newone;}else{last=now;now=now->next;}}else if((now->kind==variable||now->kind==level)&&order==3){ if(now->next!=NULL&&now->next->kind==equal){newone=(node*)malloc(sizeof(node));newone->child=NULL;newone->kind=level;newone->next=NULL;newone->polar=0;newone->s=NULL;newone->start=0;newtwo=(node*)malloc(sizeof(node));newtwo->child=NULL;newtwo->kind=level;newtwo->next=NULL;newtwo->polar=1;newtwo->s=NULL;newtwo->start=0;newthree=(node*)malloc(sizeof(node));newthree->child=NULL;newthree->kind=detrusion;newthree->next=NULL;newthree->polar=1;newthree->s=NULL;newthree->start=0;newfour=(node*)malloc(sizeof(node));newfour->child=NULL;newfour->kind=level;newfour->next=NULL;newfour->polar=0;newfour->s=NULL;newfour->start=0;if(last->kind==level) last->child=newone; else last->next=newone;newone->next=now->next->next->next;newone->child=newtwo;now->next->kind=detrusion;newtwo->child=now;now->next->next->next=NULL;newtwo->next=newthree;newthree->next=newfour;newfour->next=NULL;newnow=clone(now);newnow->next->kind=detrusion;newfour->child=newnow->next->next;newnow->next->next->next=newnow->next;newnow->next->next=newnow;newnow->next=NULL;now=newone;}else{last=now;now=now->next;}}else if(now->kind==level&&order==4){restruct(now);last=now;now=now->next;}else{last=now;now=now->next;}}order++;}}void show(node *head){node *now=NULL;now=head;while(now!=NULL){if(now->kind==level){if(now->polar==0)printf("!");if(now->start!=1||(now->polar==0&&now->child->next!=NULL))printf("(");show(now->child);if(now->start!=1||(now->polar==0&&now->child->next!=NULL))printf(")");now=now->next;if(now!=NULL&&now->start==1)putchar(',');}else if(now->kind==and){printf("&");now=now->next;}else if(now->kind==or){printf("|");now=now->next;}else if(now->kind==detrusion){printf("->");now=now->next;}else if(now->kind==equal){printf("<->");now=now->next;}else if(now->kind==variable){if(now->polar==0)printf("!");printf("%s",now->s);now=now->next;}}return;}int searching(step *one){node *now=NULL;node *last=NULL;node *newlev=NULL;node *nnow=NULL;node *nlast=NULL;step *nextone=NULL;step *nexttwo=NULL;int key=0;int mark=0;int re1=1;int re2=1;nextone=(step*)malloc(sizeof(step));nextone->brother=NULL;nextone->child=NULL;nextone->lhead=NULL;nextone->rhead=clone(one->rhead);nextone->lhead=clone(one->lhead);strcpy(nextone->name,"");one->child=nextone;now=nextone->rhead;last=now;while(now!=NULL){if(now->polar==0){if(now==nextone->rhead)nextone->rhead=now->next;else last->next=now->next;now->next=NULL;remove(now);now->next=nextone->lhead;nextone->lhead=now;now->polar=1-now->polar;now->start=1;now=last->next;strcpy(one->name,"根据规则1");mark=1;key=1;break;}else if(now->child->next!=NULL&&now->child->next->kind==detrusion){nlast=now->child;nnow=now->child->next;while(nnow->next->next!=NULL&&nnow->next->next->kind==detrusion){nlast=nnow->next;nnow=nnow->next->next;}now->polar=1-now->polar;newlev=(node*)malloc(sizeof(node));newlev->child=nnow->next;newlev->kind=level;newlev->polar=1;newlev->next=NULL;newlev->start=1;nlast->next=NULL;remove(newlev);newlev->next=now->next;now->next=NULL;remove(now);now->next=newlev;strcpy(one->name,"根据规则4");mark=1;key=1;break;last=now;now=now->next;}}now=nextone->lhead;last=now;while(now!=NULL&&key!=1){if(now->polar==0){if(now==nextone->lhead)nextone->lhead=now->next;else last->next=now->next;now->next=NULL;remove(now);now->next=nextone->rhead;nextone->rhead=now;now->polar=1-now->polar;now->start=1;now=last->next;strcpy(one->name,"根据规则2");mark=1;key=1;break;}else if(now->child->next!=NULL&&now->child->next->kind==detrusion){nexttwo=(step*)malloc(sizeof(step));nexttwo->brother=NULL;nexttwo->child=NULL;nexttwo->lhead=NULL;nexttwo->rhead=clone(nextone->rhead);nexttwo->lhead=clone(nextone->lhead);strcpy(nexttwo->name,"");nlast=now->child;nnow=now->child->next;while(nnow->next->next!=NULL&&nnow->next->next->kind==detrusion){nlast=nnow->next;nnow=nnow->next->next;}now->polar=1-now->polar;now->start=1;nlast->next=NULL;remove(now);now=nexttwo->lhead;last=now;while(now->child->next==NULL||now->child->next->kind!=detrusion){last=now;now=now->next;nlast=now->child;nnow=now->child->next;while(nnow->next->next!=NULL&&nnow->next->next->kind==detrusion){nlast=nnow->next;nnow=nnow->next->next;}newlev=(node*)malloc(sizeof(node));newlev->child=nnow->next;newlev->kind=level;newlev->polar=1;newlev->next=NULL;newlev->start=1;nlast->next=NULL;if(now==nexttwo->lhead){newlev->next=now->next;nexttwo->lhead=newlev;}else{newlev->next=now->next;last->next=newlev;}remove(newlev);nextone->brother=nexttwo;strcpy(one->name,"根据规则3");mark=1;key=1;break;}else{last=now;now=now->next;}}if(mark==0){one->child=NULL;now=one->lhead;nnow=one->rhead;while(now!=NULL){nnow=one->rhead;while(nnow!=NULL){if(!strcmp(now->child->s,nnow->child->s))break;nnow=nnow->next;}if(nnow!=NULL)break;now=now->next;}if(now==NULL)return 0;elsereturn 1;}re1=searching(nextone);if(nextone->brother!=NULL)re2=searching(nextone->brother);if(re1&&re2)return 1;elsereturn 0;}void output(step *one){if(one->child!=NULL)output(one->child);if(one->brother!=NULL)output(one->brother);one->count=stepcount;stepcount++;printf("(%d) ",one->count);show(one->lhead);printf("=>");show(one->rhead);printf(" ");if(one->child!=NULL&&one->child->brother==NULL)printf("由(%d)",one->child->count);else if(one->child!=NULL&&one->child->brother!=NULL)printf("由(%d)(%d)",one->child->count,one->child->brother->count);else printf("公理");puts(one->name);return;}void main(){char s[100];node head;step one;=NULL;=level;=NULL;=1;=NULL;=1;=NULL;=NULL;=NULL;=&head;puts("王浩算法推理器");while(1){puts("请输入要证明的公式,变量符号可由大小写字母和数字组成:");scanf("%s",s);if(inite(s,&head)){puts("\n化成蕴含式:");restruct(&head);remove(&head);show(&head);putchar('\n');if(searching(&one)){puts("推导结果为:");output(&one);break;}else {puts("无法推导出公式");break;}}else puts("输入的公式语法有错误");getchar();}}。