可以使用Python中的并行算法库`sympy`来简化命题公式为合取/析取范式和主合取/析取范式。下面是一个简单的示例代码: ```python from sympy import symbols from sympy.logic.boolalg import truth_table, Or, And, Not # 输入一个命题公式 formula = input("请输入一个命题公式:") # 创建命题变量 variables = sorted(set(formula)) variable_symbols = symbols(" ".join(variables)) # 解析命题公式为布尔表达式 expression = eval(formula) # 输出真值表 table = truth_table(expression, variable_symbols) print("真值表:") for row in table: print(row) # 转化为合取范式和析取范式 cnf = And(*[Or(*[variable_symbols[i] if row[i] else Not(variable_symbols[i]) for i in range(len(row))]) for row in table if row[-1]]) dnf = Or(*[And(*[variable_symbols[i] if row[i] else Not(variable_symbols[i]) for i in range(len(row))]) for row in table if not row[-1]]) # 输出合取范式和析取范式 print("合取范式:", cnf) print("析取范式:", dnf) # 转化为主合取范式和主析取范式 main_cnf = And(*[Or(*[variable_symbols[i] if row[i] else Not(variable_symbols[i]) for i in range(len(row))]) for row in table if not row[-1]]) main_dnf = Or(*[And(*[variable_symbols[i] if row[i] else Not(variable_symbols[i]) for i in range(len(row))]) for row in table if row[-1]]) # 输出主合取范式和主析取范式 print("主合取范式:", main_cnf) print("主析取范式:", main_dnf) ``` 这段代码通过输入一个命题公式,将其转化为合取/析取范式和主合取/析取范式,并输出结果。需要注意,输入的命题公式使用Python中的逻辑运算符表示,例如用`&`表示合取,`|`表示析取,`~`表示非。 [2023-12-24 14:54:56 | AI写代码神器 | 1902点数解答]