为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > QM算法源代码及说明

QM算法源代码及说明

2021-05-21 1页 doc 24KB 30阅读

用户头像 个人认证

is_916672

暂无简介

举报
QM算法源代码及说明QM算法说明一、需求分析本算法要求输入一最小项和无关项的待化简表达式,通过程序处理输出化简后的结果。二、算法流程程序首先要求用户输入待化简表达式的变量数,然后要求用户逐个输入值为1的项,以2表示输入结束,再要求用户逐个输入无关项同样以2结束。程序将用户输入的所有数据储存在一个数据容器vector中,并将相关项单独存在另一个vector中。然后程序通过循环遍历所有相关项,将相邻的项合并成蕴涵项存入新建的vector中,无法再合并的项显然为本源蕴涵项,存入专门的容器。之后再对新建的vector中的蕴涵项重复上述操作,直到找到所有的...
QM算法源代码及说明
QM算法说明一、需求本算法要求输入一最小项和无关项的待化简达式,通过程序处理输出化简后的结果。二、算法流程程序首先要求用户输入待化简表达式的变量数,然后要求用户逐个输入值为1的项,以2表示输入结束,再要求用户逐个输入无关项同样以2结束。程序将用户输入的所有数据储存在一个数据容器vector中,并将相关项单独存在另一个vector中。然后程序通过循环遍历所有相关项,将相邻的项合并成蕴涵项存入新建的vector中,无法再合并的项显然为本源蕴涵项,存入专门的容器。之后再对新建的vector中的蕴涵项重复上述操作,直到找到所有的本源蕴涵项。由于变量最多为10个,故合并最多进行10次,故所有合并可在一个10元vector数组内完成。当之前的工作完成时,此时显然已找到所有的本源蕴涵项,此时遍历之前存储的相关项,统计被覆盖的次数并输出只被覆盖一次的项所属的本源蕴涵项(皆为本质本源蕴涵项)。之后再从vector尾部开始输出其他本源蕴涵项直到所有的相关项都被覆盖为止。三、运行结果测试数据采用《现代逻辑》(第二版)P86的样例,F=Σm(4,5,6,8,9,10,13)+d(0,7,15);结果并非最优的,是因为最后没有寻找最小覆盖导致的。附:C++源代码#include#include#include#include//#includeusingnamespacestd;//ofstreamout("c://a.log");boolcomp(intn,char*a,char*b){for(inti=0;iv[10];vectorrelative;vectorprime;vectorresult;boolflag[2];cout<<"输入变量数:"<>n;temp=newchar[n];cout<<"请输入最小项(2结束):"<>temp[i];if(temp[i]!='0'&&temp[i]!='1'){flag[0]=false;break;}}if(flag[0]){v[0].push_back(newchar[n]);relative.push_back(newchar[n]);strcpy(v[0].back(),temp);strcpy(relative.back(),temp);}}cout<<"请输入无关项(2结束):"<>temp[i];if(temp[i]!='0'&&temp[i]!='1'){flag[0]=false;break;}}if(flag[0]){v[0].push_back(newchar[n]);strcpy(v[0].back(),temp);}}for(i=0;i<10;i++){if(v[i].empty())break;for(j=0;j0){result.push_back(newchar[n]);strcpy(result.back(),temp);}}while(!result.empty()){for(i=0;i<4;i++)cout<<*(result.back()+i);cout<<"";result.pop_back();}cout<
/
本文档为【QM算法源代码及说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索