qm算法源代码及说明

qm算法源代码及说明

ID:6567193

大小:36.66 KB

页数:6页

时间:2018-01-18

qm算法源代码及说明_第1页
qm算法源代码及说明_第2页
qm算法源代码及说明_第3页
qm算法源代码及说明_第4页
qm算法源代码及说明_第5页
资源描述:

《qm算法源代码及说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、QM算法说明一、需求分析本算法要求输入一最小项和无关项的待化简表达式,通过程序处理输出化简后的结果。二、算法流程程序首先要求用户输入待化简表达式的变量数,然后要求用户逐个输入值为1的项,以2表示输入结束,再要求用户逐个输入无关项同样以2结束。程序将用户输入的所有数据储存在一个数据容器vector中,并将相关项单独存在另一个vector中。然后程序通过循环遍历所有相关项,将相邻的项合并成蕴涵项存入新建的vector中,无法再合并的项显然为本源蕴涵项,存入专门的容器。之后再对新建的vector中的蕴涵项重复上述操作,直到找到所有的本源蕴涵项。由于变量最多为10个,故合并最多进行10次,故所有合并

2、可在一个10元vector数组内完成。当之前的工作完成时,此时显然已找到所有的本源蕴涵项,此时遍历之前存储的相关项,统计被覆盖的次数并输出只被覆盖一次的项所属的本源蕴涵项(皆为本质本源蕴涵项)。之后再从vector尾部开始输出其他本源蕴涵项直到所有的相关项都被覆盖为止。三、运行结果测试数据采用《现代逻辑设计》(第二版)P86的样例,F=Σm(4,5,6,8,9,10,13)+d(0,7,15);结果并非最优的,是因为最后没有寻找最小覆盖导致的。附:C++源代码#include#include#include#include/

3、/#includeusingnamespacestd;//ofstreamout("c://a.log");boolcomp(intn,char*a,char*b){for(inti=0;i

4、elsereturn-1;}boolcointain(intn,char*a,char*b){for(inti=0;iv[10];vectorrelative;vectorprime;vectorresult;boolflag[2];cout<<"输入变量数:"<>n;temp=newchar[n]

5、;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结束):"<

6、=true;while(flag[0]){for(i=0;i>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;j

7、],v[i][k])!=-1){strcpy(temp,v[i][j]);temp[implicant(n,v[i][j],v[i][k])]='-';flag[1]=true;flag[0]=true;for(l=0;l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。