Optimization 如何最好地检查两个无序对是否匹配?
我有两对(A,B)和(C,D)。我想检查它们是否包含相同的元素。顺序不详。我可以通过以下方式实现这一点:Optimization 如何最好地检查两个无序对是否匹配?,optimization,logic,boolean-logic,Optimization,Logic,Boolean Logic,我有两对(A,B)和(C,D)。我想检查它们是否包含相同的元素。顺序不详。我可以通过以下方式实现这一点: (A == C && B == D) || (A == D && B == C) 但这似乎是非常统一和重复的代码,好像有一种方法可以浓缩它。我不知道怎么做。有没有可能浓缩这种逻辑 (A == C && B == D) || (A == D && B == C) 真值表 +------+------+------+------
(A == C && B == D) || (A == D && B == C)
但这似乎是非常统一和重复的代码,好像有一种方法可以浓缩它。我不知道怎么做。有没有可能浓缩这种逻辑
(A == C && B == D) || (A == D && B == C)
真值表
+------+------+------+------+----------+
| A | B | C | D | O/P |
+------+------+------+------+----------+
| 0 | 0 | 0 | 0 | 1 |
+------+------+------+------+----------+
| 0 | 0 | 0 | 1 | 0 |
+------+------+------+------+----------+
| 0 | 0 | 1 | 0 | 0 |
+------+------+------+------+----------+
| 0 | 0 | 1 | 1 | 0 |
+------+------+------+------+----------+
| 0 | 1 | 0 | 0 | 0 |
+------+------+------+------+----------+
| 0 | 1 | 0 | 1 | 1 |
+------+------+------+------+----------+
| 0 | 1 | 1 | 0 | 1 |
+------+------+------+------+----------+
| 0 | 1 | 1 | 1 | 0 |
+------+------+------+------+----------+
| 1 | 0 | 0 | 0 | 0 |
+------+------+------+------+----------+
| 1 | 0 | 0 | 1 | 1 |
+------+------+------+------+----------+
| 1 | 0 | 1 | 0 | 1 |
+------+------+------+------+----------+
| 1 | 0 | 1 | 1 | 0 |
+------+------+------+------+----------+
| 1 | 1 | 0 | 0 | 0 |
+------+------+------+------+----------+
| 1 | 1 | 0 | 1 | 0 |
+------+------+------+------+----------+
| 1 | 1 | 1 | 0 | 0 |
+------+------+------+------+----------+
| 1 | 1 | 1 | 1 | 0 |
+------+------+------+------+----------+
- 如果A,B,C,D是布尔逻辑,那么(A==C&&B==D)| |(A==D&&B==C)是通过K-map归约技术和Quine-McCluskey最小化技术得到的最简单形式
- 如果A、B、C、D是数字(
),那么您可以简化为ie int或float
A+B==C+D
- 如果A、B、C、D是字符串,那么布尔逻辑就不适用。它可以简化,但需要考虑其他信息来求解表达式
谢谢,希望您满意这些项目是数字的吗?@MattClarke否。它们是类实例。Drat!所以不可能有花哨的数学语言。你用的是什么语言?一些语言允许:
例如((A,B)-包含在(C,D)中)
(假设每个集合中的对象数量相同)。APL可能有一个更紧凑的表示形式,因为您可以在预计算+内存与计算之间进行权衡:为您的对存储一个unic id(不依赖于顺序),这样您就可以编写:if(pair1.id==pair2.id)
。