2024-03-29 06:46:24 发布
网友
我试图用python编写Quine-McCluskey algorithm,但我想看看是否有任何版本可以替代。谷歌的搜索结果显示没有什么有用的结果。我要的是4x4地图缩小,而不是2x2或3x3。有什么想法或推荐信吗?
def combine(m, n): a = len(m) c = '' count = 0 for i in range(a): if(m[i] == n[i]): c += m[i] elif(m[i] != n[i]): c += '-' count += 1 if(count > 1): return None else: return c def find_prime_implicants(data): newList = list(data) size = len(newList) IM = [] im = [] im2 = [] mark = [0]*size m = 0 for i in range(size): for j in range(i+1, size): c = combine( str(newList[i]), str(newList[j]) ) if c != None: im.append(str(c)) mark[i] = 1 mark[j] = 1 else: continue mark2 = [0]*len(im) for p in range(len(im)): for n in range(p+1, len(im)): if( p != n and mark2[n] == 0): if( im[p] == im[n]): mark2[n] = 1 for r in range(len(im)): if(mark2[r] == 0): im2.append(im[r]) for q in range(size): if( mark[q] == 0 ): IM.append( str(newList[q]) ) m = m+1 if(m == size or size == 1): return IM else: return IM + find_prime_implicants(im2) minterms = set(['1101', '1100', '1110', '1111', '1010', '0011', '0111', '0110']) minterms2 = set(['0000', '0100', '1000', '0101', '1100', '0111', '1011', '1111']) minterms3 = set(['0001', '0011', '0100', '0110', '1011', '0000', '1000', '1010', '1100', '1101']) print 'PI(s):', find_prime_implicants(minterms) print 'PI2(s):', find_prime_implicants(minterms2) print 'PI3(s):', find_prime_implicants(minterms3)
在您提供链接的维基百科中,底部有一些“外部链接”,其中有一些与您的项目相对有趣的链接:
"Python Implementation by Robert Dick"
这难道不能满足你的需要吗?
“描述在R:first article和second article中实现的算法的一系列两篇文章。R实现是详尽的,它提供了完整和精确的解决方案。它处理多达20个输入变量。“
您可以使用rpy Python interface到R语言来运行Quine-McCluskey算法的R代码。请注意,有一个rpy的重写:rpy2
另外,为什么不编写一个新的Python脚本,使用Adrian Duşa在2007年所做的算法增强,它位于second article中?
在您提供链接的维基百科中,底部有一些“外部链接”,其中有一些与您的项目相对有趣的链接:
"Python Implementation by Robert Dick"
这难道不能满足你的需要吗?
“描述在R:first article和second article中实现的算法的一系列两篇文章。R实现是详尽的,它提供了完整和精确的解决方案。它处理多达20个输入变量。“
您可以使用rpy Python interface到R语言来运行Quine-McCluskey算法的R代码。请注意,有一个rpy的重写:rpy2
另外,为什么不编写一个新的Python脚本,使用Adrian Duşa在2007年所做的算法增强,它位于second article中?
相关问题 更多 >
编程相关推荐