当前位置: 代码迷 >> 综合 >> 产生式系统实验
  详细解决方案

产生式系统实验

热度:87   发布时间:2024-03-07 01:00:40.0
#include<iostream>
#include<vector>
#include<map>
using namespace std;
vector<string> str{ "暗斑点","长脖子","长腿","奶","蹄" };
map<int, string> rule
{{1,"哺乳动物"},   	//r1{2,"哺乳动物"},		//r2{3,"鸟"},			//r3{4,"鸟"},			//r4{5,"肉食动物"},		//r5{6,"肉食动物"},		//r6{7,"有蹄类动物"},	//r7{8,"有蹄类动物"},	//r8{9,"金钱豹"},		//r9{10,"虎"},			//r10{11,"长颈鹿"},		//r11{12,"斑马"},		//r12{13,"鸵鸟"},		//r13{14,"企鹅"},		//r14{15,"信天翁"}		//r15
};
bool noHave(string s)
{for (auto x : str)if (x == s){return 0;}return 1;
}
bool Have(string s)
{for (auto x : str)if (x == s){return 1;}return 0;
}
int main()
{for (auto r : rule){if (r.first == 1){if (Have("毛发") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 2){if (Have("奶") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 3){if (Have("毛发") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 4){if (Have("会飞") && Have("会下蛋") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 5){if (Have("吃肉") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 6){if (Have("犬齿") && Have("爪") && Have("眼盯前方") && (r.first == 1)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 7){if (Have("哺乳动物") && Have("蹄") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 8){if (Have("哺乳动物") && Have("反刍动物") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 9){if (Have("哺乳动物") && Have("食肉动物") && Have("黄褐色") && Have("暗斑点") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 10){if (Have("哺乳动物") && Have("食肉动物") && Have("黄褐色") && Have("黑色条纹") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 11){if (Have("有蹄类动物") && Have("长脖子") && Have("长腿") && Have("暗斑点") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 12){if (Have("有蹄类动物") && Have("黑色条纹") && Have("") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 13){if (Have("鸟") && Have("长脖子") && Have("长腿") && Have("不会飞") && Have("黑白二色") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 14){if (Have("鸟") && Have("会游泳") && Have("不会飞") && Have("黑白二色") && noHave(r.second)){str.push_back(r.second);cout << "规则r" << r.first << " 加入: " << r.second << endl;}}if (r.first == 15){if (Have("鸟") && Have("善飞") && noHave(r.second))str.push_back(r.second);}}cout << "综合数据库内容: ";for (auto x : str) cout << x << " ";cout << endl;return 0;
}

Run

[执行完成,耗时:0 ms]

规则r2 加入: 哺乳动物

规则r7 加入: 有蹄类动物

规则r11 加入: 长颈鹿

综合数据库内容: 暗斑点 长脖子 长腿 奶 蹄 哺乳动物 有蹄类动物 长颈鹿

  相关解决方案