当前位置: 首页 > news >正文

山东大学软件学院人工智能导论实验之知识库推理

 

目录

 实验目的:

实验代码:

实验内容:

实验结果


实验目的:

输入相应的条件,根据知识库推理得出相应的知识。

实验代码:

def find_data(input_process_data_list):for epoch, data_process in enumerate(data_process_list):number = 0for i in input_process_data_list:if i in data_process:number += 1if number == len(data_process):if data_result_list[epoch] not in result_list:# 弹出前提和此过程结论,因为该过程已经推理过过,此结果存入需要查找的过程中result = data_result_list.pop(epoch)process = data_process_list.pop(epoch)# 判断临时结论是否已经存在中,存在则重新寻找,不存在则加入到字典中,并将其存入推导结果if result not in input_process_data_list:dict_input[','.join(process)] = result#键为前提,值为结果end_result = find_data(input_process_data_list + [result])if end_result == 1:return 1else:return 0# 存在则直接寻找else:end_result = find_data(input_process_data_list)if end_result == 1:return 1else:return 0# 已经是动物结果,取出结果后返回else:process = data_process_list.pop(epoch)dict_input[','.join(process)] = data_result_list[epoch]return 1if __name__ == '__main__':# 存储IF前提data_process_list = []# 存储THEN结果data_result_list = []# 存储用于查询的数据list_data = []# 用于存储输出结果dict_input = {}# 规则库txt = '''有毛发,哺乳类
产奶,哺乳类
有羽毛,鸟类
会飞,会下蛋,鸟类
吃肉,食肉类
有犬齿,有爪,眼盯前方,食肉类
哺乳类,有蹄,蹄类
哺乳类,反刍,蹄类
哺乳类,食肉类,黄褐色,有斑点,金钱豹
哺乳类,食肉类,黄褐色,有黑色条纹,虎
蹄类,长脖,长腿,有斑点,长颈鹿
蹄类,有黑色条纹,斑马
鸟类,长脖,长腿,不会飞,黑白二色,鸵鸟
鸟类,会游泳,不会飞,黑白二色,企鹅
鸟类,善飞,信天翁'''# 将数据预处理datas = txt.split('\n')for data in datas:data = data.split(',')data_process_list.append(data[:-1])data_result_list.append(data[-1].replace('\n', ''))# 最终结果列表result_list = ['信天翁', '鸵鸟', '斑马', '长颈鹿', '虎', '金钱豹', '企鹅']# 数据库对应的过程database = {'1': '有毛发', '2': '产奶', '3': '有羽毛', '4': '会飞', '5': '会下蛋', '6': '吃肉', '7': '有犬齿','8': '有爪', '9': '眼盯前方', '10': '有蹄', '11': '反刍', '12': '黄褐色','13': '有斑点', '14': '有黑色条纹','15': '长脖', '16': '长腿', '17': '不会飞', '18': '会游泳', '19': '黑白二色', '20': '善飞','21': '哺乳类','22': '鸟类', '23': '食肉类', '24': '蹄类'}# 打印顶部星号边框print('****************************** 输入对应条件前面的数字: ******************************\n')# 打印数据库内容,每6个一行,保持对齐for i, (key, value) in enumerate(database.items(), 1):if i % 6 ==1:  # 每6个一行print('*',end='')print(f"{key}:{value:<8}", end=' ')  # 保持每列宽度相同,对齐if i % 6 == 0:  # 每6个一行print(' *')  # 换行,并加上右侧的星号if len(database) % 6 != 0:print(' *')  # 如果最后一行不足6个,也加上右侧的星号# 打印底部星号边框和提示信息print('**********************************************************************************')print('****************************** 当输入数字0时,程序结束 ******************************\n')# 循环输入,遇0退出while 1:print('请输入:',end='')term = input("")if term == '0':breakif database[term] not in list_data:list_data.append(database[term])# 打印前提条件print('前提条件为:')print(' '.join(list_data) + '\n')# 进行递归查找,直到找到最终结果,返回1则找到最终结果end_result = find_data(list_data)if end_result == 1:print('推理过程如下:')# 将结果进行打印for i in dict_input.keys():print(f"{i}->{dict_input[i]}")# 得到最终结果即输出所识别动物if dict_input[i] in result_list:print()print(f'所识别的动物为{dict_input[i]}')else:# 将结果进行打印for i in dict_input.keys():print(f"{i}->{dict_input[i]}")

实验内容:

首先,将已知的动物特征及其对应的种类整理成规则库。规则库中的每一条规则都包含两部分:前提(动物的特征)和结果(动物的种类)。

然后通过命令行界面,用户可以输入一系列动物的特征。这些特征从规则库中的前提部分选取,并通过数字进行标识。用户输入的特征被存储在一个列表中,作为推理系统的输入;

推理过程采用递归方法。首先,将用户输入的特征列表作为输入参数传递给递归函数。函数遍历规则库中的每一条规则,检查当前特征列表是否满足规则的前提部分。如果满足,则进一步检查该规则的结果是否已经在之前的结果列表中。如果结果不在结果列表中,则将该结果添加到输入特征列表中,并继续递归调用函数进行推理。如果找到满足所有条件的动物种类,则停止递归并返回结果。

推理完成后,系统输出推理过程及最终结果。推理过程以键值对的形式展示,最终结果是满足所有输入特征的动物种类。

实验结果

相关文章:

山东大学软件学院人工智能导论实验之知识库推理

目录 实验目的&#xff1a; 实验代码&#xff1a; 实验内容&#xff1a; 实验结果 实验目的&#xff1a; 输入相应的条件&#xff0c;根据知识库推理得出相应的知识。 实验代码&#xff1a; def find_data(input_process_data_list):for epoch, data_process in enumerat…...

【Uniapp-Vue3】点击将内容复制到剪切板

具体使用方法在官网&#xff1a; uni-app官网https://uniapp.dcloud.net.cn/api/system/clipboard.html大致使用方法如下&#xff1a; // value是需要复制的值 function copyValue (value) { uni.setClipboardData({data: value,success: res>{// 复制成功逻辑},fail:err&…...

英伟达 Isaac Sim仿真平台体验【2】

一、产品基础信息 仿真平台&#xff1a;NVIDIA Isaac Sim 4.1.0硬件配置&#xff1a;NVIDIA RTX 4090 2 (24GB显存)核心特性&#xff1a; Omniverse内核的多GPU物理加速原生PyTorch/TensorFlow集成支持基于USD的场景构建体系 二、GPU加速仿真实战 ▶ 多球体跌落测试 操作步…...

低代码与开发框架的一些整合[3]

1.基本说明 审批流程是企业内部运营的运行流程&#xff0c;与业务板块进行关联&#xff0c;在企业数智化过程中启动业务串联的作用&#xff0c;与AI业务模型及业务agent整合后&#xff0c;将大大提升企业的运行效率以及降低运营风险。 近期对开源的近40个携带流程平台的项目进…...

deepseek-r1-centos-本地服务器配置方法

参考&#xff1a; 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek&#xff0c;一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…...

C语言实现通讯录项目

一、通讯录功能 实现一个可以存放100个人的信息的通讯录&#xff08;这里采用静态版本&#xff09;&#xff0c;每个人的信息有姓名、性别、年龄、电话、地址等。 通讯录可以执行的操作有添加联系人信息、删除指定联系人、查找指定联系人信息、修改指定联系人信息、显示联系人信…...

Effective Java读书笔记 draft

一、创建和销毁对象 1、静态工厂方法代替构造器 class Person{//构造器public Person(){}//静态工厂方法public static Person getInstance(){return new Person();} } 优势&#xff1a;1、有名字&#xff0c;代码更容易阅读理解&#xff1b;2、不用每次被调用时都创建新对…...

DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

wordpress使用CorePress主题设置项总结

宝塔面板设置 软件商店中安装的软件有&#xff1a;&#xff08;宝塔网站加速3.1&#xff09;&#xff08;Nginx 1.18.0&#xff09;&#xff08;MySql 5.6.50&#xff09;&#xff08;PHP-5.6&#xff09;&#xff08;phpMyAdmin 4.4&#xff09;&#xff08;Python项目管理器 …...

逆向pyinstaller打包的exe软件,获取python源码(6)

在ailx10&#xff1a;逆向pyinstaller打包的exe软件&#xff0c;获取python源码(3)中&#xff0c;我们逆向出了主程序&#xff0c;但是对其依赖的其他python文件并没有给出逆向方法&#xff0c;实际上非常简单&#xff0c;在PYZ-00.pyz_extracted 文件夹中&#xff0c;只要逆向…...

蓝桥杯 五子棋对弈

五子棋对弈 问题描述 “在五子棋的对弈中&#xff0c;友谊的小船说翻就翻&#xff1f;” 不&#xff01;对小蓝和小桥来说&#xff0c;五子棋不仅是棋盘上的较量&#xff0c;更是心与心之间的沟通。这两位挚友秉承着"友谊第一&#xff0c;比赛第二"的宗旨&#xff…...

【单片机】MSP430MSP432入门

文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP&#xff0c;所以把之前卸载的CCS给装回来了&#xff0c;手头也还有之前电赛剩下的MSP430和MSP432的板子&#xff0c;由于年代久远&#xff0c;想着花点…...

货车一键启动无钥匙进入手机远程启动的正确使用方法

一、移动管家货车无钥匙进入系统的使用方法 基本原理&#xff1a;无钥匙进入系统通常采用RFID无线射频技术和车辆身份识别码识别系统。车钥匙需要随身携带&#xff0c;当车钥匙靠近货车时&#xff0c;它会自动与货车的解码器匹配。开门操作&#xff1a;当靠近货车后&#xff0…...

自学c++之类、对象、封装

class 类名{int a;//属性 public://权限操作&#xff1b; } 1、权限 public(公共权限&#xff09;类内可以访问&#xff0c;类外可以访问protected&#xff08;保护权限&#xff09;类内可以访问&#xff0c;类外不可以访问&#xff08;儿子可以访问父亲中的保护内容&#xf…...

在VSCode中安装jupyter跑.ipynb格式文件

个人用vs用的较多&#xff0c;不习惯在浏览器单独打开jupyter&#xff0c;看着不舒服&#xff0c;直接上教程。 1、在你的环境中pip install ipykernel 2、在vscode的插件中安装jupyter扩展 3、安装扩展后&#xff0c;打开一个ipynb文件&#xff0c;并且在页面右上角配置内核 …...

SQL_优化

1 SQL优化 (1) 数据读取 ①分区裁剪:使用时只读取需要的分区. ②列裁剪:读取操作(select、where、join、group by、sort by等),不读取不需要的列,减少IO消耗. (2) 数据筛选 ①分区先过滤,区分度大的字段先过滤. ②不在筛选字段上使用函数和表达式. (3) 分组聚合 ①使用窗口函数…...

Neo4j使用neo4j-admin导入csv数据方法

在neo4j desktop里创建project&#xff0c;创建dbms&#xff0c;创建database。 将csv文件放入如下import路径中&#xff0c;然后就可以使用相对路径来使用csv了。 在neo4j desktop中打开Terminal 键入导入数据语句&#xff1a; neo4j-admin database import full --nodes&qu…...

Node.js 登录鉴权

目录 Session express-session 配置 express-session 函数 ts 要配置声明文件 express-session.d.ts express-session 使用 express-session 带角色 Token 什么是 JWT token jsonwebtoken 使用 jsonwebtoken 带角色 Session express 使用 express-session 管理会话&…...

内存泄漏指什么?常见的内存泄漏有哪些?

内存泄漏是指程序在运行过程中&#xff0c;由于某些原因导致程序无法释放已经不再使用的内存&#xff0c;使得这部分内存持续被占用&#xff0c;最终可能导致系统可用内存逐渐减少&#xff0c;严重时会影响系统性能甚至导致程序崩溃。&#xff08;内存泄漏是指程序中已经分配的…...

【PromptCoder】使用 package.json 生成 cursorrules

【PromptCoder】使用 package.json 生成 cursorrules 在当今快节奏的开发世界中&#xff0c;效率和准确性至关重要。开发者们不断寻找能够优化工作流程、帮助他们更快编写高质量代码的工具。Cursor 作为一款 AI 驱动的代码编辑器&#xff0c;正在彻底改变我们的编程方式。但如…...

COMSOL环偶极子增强磁光克尔效应

comsol环偶极子增强磁光克尔效应最近在玩COMSOL模拟磁光克尔效应的时候&#xff0c;发现环偶极子结构对增强效果特别有意思。这玩意儿就像给光波装了个磁力放大器&#xff0c;咱们今天直接上干货&#xff0c;看看怎么用COMSOL玩转这个现象。先搞明白环偶极子怎么在模型里构建。…...

**Bun运行时实战:用超快启动速度重构Node.js开发体验**在现代前端与后端协同开发中,*

Bun运行时实战&#xff1a;用超快启动速度重构Node.js开发体验 在现代前端与后端协同开发中&#xff0c;启动速度、开发效率和生态兼容性成为衡量一个运行时是否优秀的核心指标。近年来&#xff0c;Bun&#xff08;https://bun.sh&#xff09;作为一款新兴的JavaScript/TypeScr…...

2025届最火的五大AI写作工具实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 免费的AI论文工具&#xff0c;给学术写作送去了高效的解决办法&#xff0c;这般的软件大幅借…...

从开源硬件到空间AI:深度解析OAK(OpenCV AI Kit)的架构与核心优势

1. OAK的前世今生&#xff1a;从自行车安全到空间AI革命 第一次听说OAK&#xff08;OpenCV AI Kit&#xff09;是在2021年的一个机器人开发者社区里&#xff0c;当时有个做智能仓储的朋友兴奋地告诉我&#xff1a;"这玩意儿把双目视觉、AI推理和视频编码全塞进了一个火柴盒…...

mysql如何通过防火墙保护MySQL权限_MySQL网络层安全配置

MySQL 默认监听0.0.0.0:3306&#xff0c;必须通过bind-address限制监听地址、系统防火墙&#xff08;ufw/firewalld&#xff09;设置IP白名单、云平台安全组精确放行&#xff0c;并与MySQL用户host字段协同配置&#xff0c;四层防护缺一不可。MySQL 默认监听所有网卡&#xff0…...

如何用imFile下载工具提升你的下载效率:完整使用指南

如何用imFile下载工具提升你的下载效率&#xff1a;完整使用指南 【免费下载链接】imfile-desktop A full-featured download manager. 项目地址: https://gitcode.com/gh_mirrors/im/imfile-desktop imFile是一款功能全面的下载管理器&#xff0c;专为解决现代网络下载…...

Nunchaku-flux-1-dev环境部署详解:Anaconda虚拟环境与依赖管理

Nunchaku-flux-1-dev环境部署详解&#xff1a;Anaconda虚拟环境与依赖管理 想试试最近挺火的Nunchaku-flux-1-dev模型&#xff0c;结果第一步就被环境依赖给卡住了&#xff1f;这太正常了。不同模型、不同版本的库之间打架&#xff0c;是每个搞AI开发的人都绕不开的坎。今天咱…...

告别环境配置焦虑:保姆级教程搞定博流BL616 RISC-V开发环境(Win/Linux双平台)

从零征服RISC-V&#xff1a;BL616双平台开发环境全攻略 第一次接触博流BL616这类RISC-V芯片时&#xff0c;最令人头疼的莫过于开发环境的搭建。不同操作系统下的工具链差异、晦涩难懂的交叉编译概念、复杂的路径配置……这些门槛让不少开发者望而却步。本文将彻底解决这些问题…...

避坑指南:QCustomPlot绘制平滑曲线时,你可能忽略的5个关键设置

避坑指南&#xff1a;QCustomPlot绘制平滑曲线时&#xff0c;你可能忽略的5个关键设置 第一次用QCustomPlot绘制曲线时&#xff0c;我盯着屏幕上锯齿状的折线图愣了半天——明明数据点足够密集&#xff0c;为什么曲线看起来还是像被狗啃过一样&#xff1f;这个问题困扰过不少开…...

Figma中文插件深度解析:如何实现设计工具的无缝本地化体验

Figma中文插件深度解析&#xff1a;如何实现设计工具的无缝本地化体验 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 在当今全球化设计协作环境中&#xff0c;Figma作为领先的云端设计…...