ImageVerifierCode 换一换
格式:DOC , 页数:22 ,大小:105.50KB ,
资源ID:2487564      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2487564.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(基于Pawlak属性重要度的属性约简算法源码代码.doc)为本站上传会员【胜****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于Pawlak属性重要度的属性约简算法源码代码.doc

1、大概一年前写代码实现了这个算法,今天有人问我要,在这里贴出来好了。具体算法思路我也忘了,但是代码应该还算清晰。只需要事先了解下STL。 view plaincopy to clipboardprint? /* 测试数据 21/10 X1 X2 X3 X4 X5 X6 X7 X8 X9 y U1 c 6 y E m h h a m m U2 c 6 n E m m h ma m m U3

2、 c 6 n E m h h ma m m U4 c 4 y E m h h ma l h U5 c 6 n E m m m ma m m U6 c 6 n B m m m a he lo U7 c 6 n E m m h ma he lo U8 s 4

3、 n B sm h lo ma l h U9 c 4 n B sm h lo ma m m U10 c 4 n B sm h m a m m U11 s 4 n E sm h lo ma l h U12 s 4 n E m m m ma m h U13 c 4 n

4、 B m m m ma m m U14 s 4 y E sm h h ma m h U15 s 4 n B sm m lo ma m h U16 c 4 y E m m h ma m m U17 c 6 n E m m h a m m U18 c 4 n E m

5、 m h a m m U19 s 4 n E sm h m ma m h U20 c 4 n E sm h m ma m h U21 c 4 n B sm h m ma m m */ #include #include #include #include

6、include #include using namespace std; #define DATA_FILE_NAME "../data.txt" #define DEF_ATTR_CNT 10 #define DEF_OBJ_CNT 21 int g_attr_cnt = 0; int g_obj_cnt = 0; class object; vector g_attr_set; vector g_mask; vector

7、 *> g_obj_set; vector g_core_set; vector g_b_set; vector * > g_ind_c_set; vector * > g_ind_b_set; void clr_mask(const string &attr) { int i = 0; for (i = 0; i < g_attr_cnt; i++) { if (attr =

8、 g_attr_set[i]) g_mask[i] = false; else g_mask[i] = true; } } void set_mask() { int i = 0; for (i = 0; i < g_attr_cnt; i++) { g_mask[i] = true; } } void set_mask_set(vector &st

9、r_set) { int i = 0, j = 0; bool found = false; for (i = 0; i < g_attr_cnt; i++) { found = false; for (j = 0; j < str_set.size(); j++) { if (g_attr_set[i] == str_set[j]) { found

10、 = true; break; } } if (found) g_mask[i] = true; else g_mask[i] = false; } } class object { public: vector attr_val; string obj_name; public

11、 object(const string &name) : obj_name(name) { attr_val.reserve(DEF_ATTR_CNT); } ~object() { } bool operator == (const object &r_obj) const { bool res = true; int i = 0; for (i = 0; i < g_attr_cnt

12、 i++) { if (g_mask[i]) res &= (attr_val[i] == r_obj.attr_val[i]); if (false == res) break; } return res; } }; void read_data() { string strTmp; ifstream da

13、ta_in(DATA_FILE_NAME,ifstream::in); int i = 0, j = 0; object *p_obj = NULL; g_attr_set.reserve(DEF_ATTR_CNT); g_mask.reserve(DEF_ATTR_CNT); g_obj_set.reserve(DEF_OBJ_CNT); // read object count, and attr count data_in >> strTmp; g_obj_cn

14、t = atoi(strTmp.substr(0, strTmp.find("/")).c_str()); g_attr_cnt = atoi(strTmp.substr(strTmp.find("/") + 1, strTmp.length()).c_str()); for (i = 0; i < g_attr_cnt; i++) { data_in >> strTmp; g_attr_set.push_back(strTmp); g_mask.push_back(true

15、); } for (i = 0; i < g_obj_cnt; i++) { data_in >> strTmp; p_obj = new object(strTmp); for (j = 0; j < g_attr_cnt; j++) { data_in >> strTmp; p_obj->attr_val.push_back(strTmp); }

16、 // add object g_obj_set.push_back(p_obj); } // close file data_in.close(); } void print_data() { int i = 0, j = 0; cout << g_obj_cnt << "/" << g_attr_cnt << " "; for (i = 0; i < g_attr_cnt; i++) { cout

17、<< setw(4) << setiosflags(ios::left) << g_attr_set[i]; if (i < g_attr_cnt - 1) cout << " "; } cout << endl; cout << "-------------------------------------------------------------------------" << endl; for (i = 0; i < g_obj_cnt; i+

18、) { cout << setw(3) << g_obj_set[i]->obj_name << " "; for (j = 0; j < g_attr_cnt; j++) { cout << setw(3) << setiosflags(ios::left) << g_obj_set[i]->attr_val[j]; if (j < g_attr_cnt - 1) cout << setw(3) <

19、< " "; } cout << endl; } } void clear_data() { int i = 0; for (i = 0; i < g_obj_cnt; i++) { delete g_obj_set[i]; g_obj_set[i] = NULL; } } void clear_ind_set(vector * > &ind_s

20、et) { vector *tmp = NULL; while (!ind_set.empty()) { tmp = ind_set.back(); delete tmp; tmp = NULL; ind_set.pop_back(); } } void app_exit() { clear_ind_set(g_ind_c_set); clear_ind

21、set(g_ind_b_set); } void add_obj_to_ind_set(vector * > &ind_set, object *p_obj) { vector *vec_tmp = NULL; int i = 0; bool found = false; for (i = 0; i < ind_set.size(); i++) { if ((*p_obj) == *((*ind_set[i])[

22、0])) { found = true; ind_set[i]->push_back(p_obj); break; } } if (!found) { vec_tmp = new vector; vec_tmp->push_back(p_obj); ind_set.push_back(vec_tmp);

23、 } } bool obj_set_equal(vector &l_obj_set, vector &r_obj_set) { if (l_obj_set.size() != r_obj_set.size()) return false; bool found = false; int i = 0, j = 0; for (i = 0; i < l_obj_set.size(); i++) { fou

24、nd = false; for (j = 0; j < r_obj_set.size(); j++) { if (l_obj_set[i] == r_obj_set[j]) { found = true; break; } } if (!found) return false;

25、} return true; } bool ind_set_equal(vector * > &l_ind_set, vector * > &r_ind_set) { if (l_ind_set.size() != r_ind_set.size()) return false; bool found = false; int i = 0, j = 0; for (i = 0; i < l_ind_se

26、t.size(); i++) { found = false; for (j = 0; j < r_ind_set.size(); j++) { if (obj_set_equal(*l_ind_set[i], *r_ind_set[j])) { found = true; break; } }

27、 if (!found) return false; } return true; } void core() { // get IND(C) int i = 0; vector * > ind_set_tmp; set_mask(); for (i = 0; i < g_obj_cnt; i++) { add_obj_to_ind_set(g_i

28、nd_c_set, g_obj_set[i]); } int j = 0; for (i = 0; i < g_attr_cnt; i++) { clear_ind_set(ind_set_tmp); clr_mask(g_attr_set[i]); // get IND(C-{xi}) for (j = 0; j < g_obj_cnt; j++) { add_obj_to_in

29、d_set(ind_set_tmp, g_obj_set[j]); } if (!ind_set_equal(g_ind_c_set, ind_set_tmp)) g_core_set.push_back(g_attr_set[i]); } clear_ind_set(ind_set_tmp); // already get core cout << "--------------------------------------------------

30、" << endl; cout << "core:\n{"; for (i = 0; i < g_core_set.size(); i++) { //copy to B g_b_set.push_back(g_core_set[i]); cout << g_core_set[i]; if (i < g_core_set.size() - 1) cout << ", ";

31、 } cout << "}\n"; } bool attr_set_equal(vector &l_attr_set, vector &r_attr_set) { if (l_attr_set.size() != r_attr_set.size()) return false; int i = 0, j = 0; bool found = false; for (i = 0; i < l_attr_set.size(); i+

32、) { found = false; for (j = 0; j < r_attr_set.size(); j++) { if (l_attr_set[i] == r_attr_set[j]) { found = true; break; } } if (!found)

33、 return false; } return true; } void attr_set_sub(vector &l_attr_set, vector &r_attr_set, vector &res_set) { int i = 0, j = 0; bool found = false; for (i = 0; i < l_attr_set.size(); i++) { found =

34、 false; for (j = 0; j < r_attr_set.size(); j++) { if (l_attr_set[i] == r_attr_set[j]) { found = true; break; } } if (!found) res_set.push_back(l_att

35、r_set[i]); } } void get_ind_set(vector &mask_set, vector * > &res_ind_set) { int i = 0; // get IND set set_mask_set(mask_set); for (i = 0; i < g_obj_cnt; i++) { add_obj_to_ind_set(res_ind_set, g_obj_set[

36、i]); } } void attr_set_copy(vector &dst_attr_set, vector &src_attr_set) { int i = 0; dst_attr_set.clear(); for (i = 0; i < src_attr_set.size(); i++) { dst_attr_set.push_back(src_attr_set[i]); } } void red

37、uction() { vector b_set_tmp; vector c_sub_b; vector max_sig; vector * > ind_set_tmp; int max = 0, max_idx = 0, max_cnt = 0; int i = 0, j = 0; // get IND(B) get_ind_set(g_b_set, g_ind_b_set);

38、 while (!ind_set_equal(g_ind_c_set, g_ind_b_set)) { if (attr_set_equal(g_b_set, g_attr_set)) break; c_sub_b.clear(); attr_set_sub(g_attr_set, g_b_set, c_sub_b); max_sig.clear(); for (i = 0; i < c_sub_b.size(); i+

39、) { attr_set_copy(b_set_tmp, g_b_set); b_set_tmp.push_back(c_sub_b[i]); clear_ind_set(ind_set_tmp); get_ind_set(b_set_tmp, ind_set_tmp); max_sig.push_back(ind_set_tmp.size() - g_ind_b_set.size());

40、 } // now, process max_sig max = max_sig[0]; max_idx = 0; max_cnt = 0; for (j = 1; j < max_sig.size(); j++) { if (max_sig[j] > max) { max = max_sig[j];

41、 max_idx = j; max_cnt = 1; } else if (max == max_sig[j]) { max_cnt++; } } g_b_set.push_back(c_sub_b[max_idx]); if (attr_set_equal(g_b_set, g_attr_set))

42、 break; // get IND(B) clear_ind_set(g_ind_b_set); get_ind_set(g_b_set, g_ind_b_set); } clear_ind_set(ind_set_tmp); // get reduction now cout << "-----------------------------------------------------------------------

43、" << endl; cout << "reduction set:\n{"; for (i = 0; i < g_b_set.size(); i++) { cout << g_b_set[i]; if (i < g_b_set.size() - 1) cout << ", "; } cout << "}\n"; } void print_red_data() { int i = 0, j =

44、 0; set_mask_set(g_b_set); cout << "-------------------------------------------------------------------------" << endl; cout << " "; for (i = 0; i < g_attr_cnt; i++) { if (g_mask[i]) { cout << setw(4) << setiosflags(

45、ios::left) << g_attr_set[i]; if (i < g_attr_cnt - 1) cout << " "; } } cout << endl; cout << "-------------------------------------------------------------------------" << endl; for (i = 0; i < g_obj_cnt; i++)

46、 { cout << setw(3) << g_obj_set[i]->obj_name << " "; for (j = 0; j < g_attr_cnt; j++) { if (g_mask[j]) { cout << setw(3) << setiosflags(ios::left) << g_obj_set[i]->attr_val[j]; if (j <

47、g_attr_cnt - 1) cout << setw(3) << " "; } } cout << endl; } } int main() { read_data(); print_data(); core(); reduction(); print_red_data(); clear_data(); app_

48、exit(); } /* 测试数据 21/10 X1 X2 X3 X4 X5 X6 X7 X8 X9 y U1 c 6 y E m h h a m m U2 c 6 n E m m h ma m m U3 c 6 n E m h h ma m m U4 c 4 y E m h h ma

49、 l h U5 c 6 n E m m m ma m m U6 c 6 n B m m m a he lo U7 c 6 n E m m h ma he lo U8 s 4 n B sm h lo ma l h U9 c 4 n B sm h lo ma m m U10

50、c 4 n B sm h m a m m U11 s 4 n E sm h lo ma l h U12 s 4 n E m m m ma m h U13 c 4 n B m m m ma m m U14 s 4 y E sm h h ma m h U15 s 4 n B

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服