栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

生成n个变量的所有可能布尔函数的算法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生成n个变量的所有可能布尔函数的算法

n个 变量的布尔函数具有 2 ^ n个 可能的输入。可以通过打印范围内的值的二进制表示形式来枚举这些值

0 <= x < 2^n

对于这些可能的输入中的每个输入,布尔函数可以输出 01 。列举所有可能性(即每个可能的真值表)。列出range中的二进制值

0 <= x <2^(2^n)

这是Python中的算法:

from __future__ import print_functionfrom itertools import product       # forms cartesian productsn = 3         # number of variablesprint('All possible truth tables for n =', n)inputs = list(product([0, 1], repeat=n))for output in product([0, 1], repeat=len(inputs)):    print()    print('Truth table')    print('-----------')    for row, result in zip(inputs, output):        print(row, '-->', result)

输出看起来像这样:

All possible truth tables for n = 3Truth table-----------(0, 0, 0) --> 0(0, 0, 1) --> 0(0, 1, 0) --> 0(0, 1, 1) --> 0(1, 0, 0) --> 0(1, 0, 1) --> 0(1, 1, 0) --> 0(1, 1, 1) --> 0Truth table-----------(0, 0, 0) --> 0(0, 0, 1) --> 0(0, 1, 0) --> 0(0, 1, 1) --> 0(1, 0, 0) --> 0(1, 0, 1) --> 0(1, 1, 0) --> 0(1, 1, 1) --> 1Truth table-----------(0, 0, 0) --> 0(0, 0, 1) --> 0(0, 1, 0) --> 0(0, 1, 1) --> 0(1, 0, 0) --> 0(1, 0, 1) --> 0(1, 1, 0) --> 1(1, 1, 1) --> 0Truth table-----------(0, 0, 0) --> 0(0, 0, 1) --> 0(0, 1, 0) --> 0(0, 1, 1) --> 0(1, 0, 0) --> 0(1, 0, 1) --> 0(1, 1, 0) --> 1(1, 1, 1) --> 1... and so on

如果要以代数形式而不是真值表形式输出,则算法是相同的:

from __future__ import print_functionfrom itertools import product       # forms cartesian productsn = 3         # number of variablesvariables = 'abcdefghijklmnopqrstuvwxyz'[:n]pairs = [('~'+var, var) for var in variables]print('All possible algebraic expressions for n =', n)inputs = list(product(*pairs))for i, outputs in enumerate(product([0, 1], repeat=len(inputs))):    terms = [''.join(row) for row, output in zip(inputs, outputs) if output]    if not terms:        terms = ['False']    print('Function %d:' % i, ' or '.join(terms))

输出看起来像这样:

All possible algebraic expressions for n = 3Function 0: FalseFunction 1: abcFunction 2: ab~cFunction 3: ab~c or abcFunction 4: a~bcFunction 5: a~bc or abcFunction 6: a~bc or ab~cFunction 7: a~bc or ab~c or abcFunction 8: a~b~cFunction 9: a~b~c or abcFunction 10: a~b~c or ab~cFunction 11: a~b~c or ab~c or abcFunction 12: a~b~c or a~bcFunction 13: a~b~c or a~bc or abcFunction 14: a~b~c or a~bc or ab~cFunction 15: a~b~c or a~bc or ab~c or abcFunction 16: ~abcFunction 17: ~abc or abcFunction 18: ~abc or ab~cFunction 19: ~abc or ab~c or abcFunction 20: ~abc or a~bcFunction 21: ~abc or a~bc or abcFunction 22: ~abc or a~bc or ab~cFunction 23: ~abc or a~bc or ab~c or abcFunction 24: ~abc or a~b~cFunction 25: ~abc or a~b~c or abcFunction 26: ~abc or a~b~c or ab~cFunction 27: ~abc or a~b~c or ab~c or abcFunction 28: ~abc or a~b~c or a~bcFunction 29: ~abc or a~b~c or a~bc or abcFunction 30: ~abc or a~b~c or a~bc or ab~cFunction 31: ~abc or a~b~c or a~bc or ab~c or abcFunction 32: ~ab~cFunction 33: ~ab~c or abc... and so on


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号