人工智能实验--推理树
来源:互联网 发布:rj45都有网络变压器吗 编辑:程序博客网 时间:2024/06/05 11:43
人工智能实验--推理树
以下为实验的代码部分:
1. Frame.java
package com.dae.wan;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class Frame extends JFrame{
private static JTextField name = new JTextField(20);
private static JButton send = new JButton("匹配");
private static JTextArea results = new JTextArea(30, 50);
public static JFrame frame;
public static JLabel label;
public static String endStr;
public static void main(String[] args) throws IOException {
//JOptionPane.showMessageDialog(null, "发送内容不能为空!", "警告", 1);
// TODO Auto-generated method stub
new Frame();
send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
// 去掉关键字的前后空格
String result = results.getText().trim();
/*String[] arr1 = result.split(",");
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}*/
List list = new ArrayList<Rule>();
List list1 = new ArrayList<>();
List list2 = new ArrayList<>();
// String st[] = {"暗斑点","长脖子","长腿","奶","蹄"};
String st[] = result.split(",");
String animals[] = {"虎","金钱豹","长颈鹿","斑马","鸵鸟","企鹅","信天翁"};
for(int i=0;i<st.length;i++){
list1.add(st[i]);
}
for(int i=0;i<animals.length;i++){
list2.add(animals[i]);
}
System.out.println(list1);
/*******************************************************************************/
Rule rule;
String str1[] = {"毛发"}; String name1 = "哺乳动物";
rule = new Rule(str1,name1,str1.length);list.add(rule);
String str2[] = {"奶"}; String name2 = "哺乳动物";
rule = new Rule(str2,name2,str2.length);list.add(rule);
String str3[] = {"羽毛"}; String name3 = "鸟";
rule = new Rule(str3,name3,str3.length);list.add(rule);
String str4[] = {"会飞","下蛋"}; String name4 = "鸟";
rule = new Rule(str4,name4,str4.length);list.add(rule);
String str5[] = {"吃肉"}; String name5 = "食肉动物";
rule = new Rule(str5,name5,str5.length);list.add(rule);
String str6[] = {"犬齿","爪","眼睛盯着前方"}; String name6 = "食肉动物";
rule = new Rule(str6,name6,str6.length);list.add(rule);
String str7[] = {"哺乳动物","蹄"}; String name7 = "有蹄类动物";
rule = new Rule(str7,name7,str7.length);list.add(rule);
String str8[] = {"哺乳动物","反刍"}; String name8 = "有蹄类动物";
rule = new Rule(str8,name8,str8.length);list.add(rule);
String str9[] = {"哺乳动物","食肉动物","黄褐色","暗斑点"}; String name9 = "金钱豹";
rule = new Rule(str9,name9,str9.length);list.add(rule);
String str10[] = {"哺乳动物","食肉动物","黄褐色","黑色条纹"}; String name10 = "虎";
rule = new Rule(str10,name10,str10.length);list.add(rule);
String str11[] = {"有蹄类动物","长脖子","长腿","暗斑点"}; String name11 = "长颈鹿";
rule = new Rule(str11,name11,str11.length);list.add(rule);
String str12[] = {"有蹄类动物","黑条纹"}; String name12 = "斑马";
rule = new Rule(str12,name12,str12.length);list.add(rule);
String str13[] = {"鸟","不会飞","长脖子","长腿","黑白色"}; String name13 = "鸵鸟";
rule = new Rule(str13,name13,str13.length);list.add(rule);
String str14[] = {"鸟","不会飞","游泳","黑白色"}; String name14 = "企鹅";
rule = new Rule(str14,name14,str14.length);list.add(rule);
String str15[] = {"鸟","善飞"}; String name15 = "信天翁";
rule = new Rule(str15,name15,str15.length);list.add(rule);
/****************************************************************************************/
for(int i=0;i<15;i++){
Rule r = (Rule) list.get(i);
// System.out.println(r);
// System.out.println(r.getStr()[r.getLength()-1]);
int j;
// System.out.println(r.getStr()[0]);
for(j=0;j<r.getLength();j++){
if(!list1.contains(r.getStr()[j])){
break;
}
}
if(j==r.getLength()){
list1.add(r.getName());
}
if(list2.contains(list1.get(list1.size()-1))){
endStr = "匹配到该动物为-->"+list1.get(list1.size()-1);
System.out.println(endStr);
name.setText(endStr);
break;
}
}
if(!list2.contains(list1.get(list1.size()-1))){
endStr = "所给条件不充足,不能确定该动物属性";
System.out.println(endStr);
name.setText(endStr);
}
/**********************************************************************************/
// name.setText(result);
// 如果去掉关键字后长度为0,则显示没有匹配成功的
}
});
}
public Frame() throws SocketException {
setVisible(true);
setSize(600, 400);
setTitle("发送端");
JPanel top = new JPanel();
label = new JLabel();
// top.add(new JLabel("输入信息点击发送:"));
top.add(name);
top.add(send);
top.add(label);
add(BorderLayout.SOUTH, top);
add(new JScrollPane(results));
}
}
2. Rule.java
package com.dae.wan;
import java.util.Arrays;
public class Rule {
private String str[];
private String name;
private int length;
public String[] getStr() {
return str;
}
public void setStr(String[] str) {
this.str = str;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public Rule() {
super();
}
public Rule(String[] str, String name, int length) {
super();
this.str = str;
this.name = name;
this.length = length;
}
@Override
public String toString() {
return "Rule [str=" + Arrays.toString(str) + ", name=" + name
+ ", length=" + length + "]";
}
}
- 人工智能实验--推理树
- 人工智能之不确定推理方法
- 人工智能——归结演绎推理
- 高级人工智能—约束推理(学习)
- 人工智能:第三章 搜索推理技术
- 人工智能--子句消解实验
- 人工智能基础复习3——知识与推理
- 人工智能基础复习4——不确定知识与推理
- 推理
- 人工智能消解原理实验报告
- 人工智能实验-八数码问题
- 八数码问题高效算法(人工智能实验)
- 《人工智能》
- 人工智能!
- 人工智能
- 人工智能
- 人工智能
- 人工智能
- 制作动态链接库DLL
- HibernateBaseDao
- 《图解http》 上野宣
- Android开发
- mac下的storm本地集群搭建
- 人工智能实验--推理树
- 对象数组或list排序及Collections排序原理
- Maven仓库公共地址和查询地址
- android 性能优化
- 随机数练习1,和电脑比roll点
- [C#开发] 进制间的转换
- KVO 与KVC
- C++ 设计模式之状态模式的使用
- .NET跨平台机制一(mono for android配置教程)