是否可以使用配对函数来表示一个数组中的所有值是否都小于另一个数组中的对应值?
Is it possible to use pairing functions to express if all the values in one array are less than the corresponding value in another?
假设我有两个集合:A [1,4,0,3,0,3,1]
和 B [6,6,6,6,6,6,6]
。
是否可以创建一个函数 f(X
) 将 A 和 B 表示为整数,从而满足以下条件。
- 如果 B 的所有值都大于 A 中的相应值,则
f(a) <= f(b)
。
- 如果 B 的所有值都小于 A 中的对应值,则
f(a) > f(b)
。
目前的解决方案:
我可以创建一个函数 f(A)
,其中 returns 一个大质数,由 A 的每个成员的双射与其生成的质数的乘积组成。例如
A[0] = 3
A[1] = 11
A[2] = 2
A[3] = 7
A[4] = 2
A[5] = 7
A[6] = 3
所以f(A) = 19404
和
B[0] = 17
B[1] = 17
B[2] = 17
B[3] = 17
B[4] = 17
B[5] = 17
B[6] = 17
所以f(B) = 24137569
此方法不适用于 A 的很多值,例如
A [7,1,1,1,1,1,1]
但我不想就此放弃。
如有任何帮助,我们将不胜感激!
乔
更新 - 问题之前措辞不当。应该看过。
假设我有两个集合:A [1,4,0,3,0,3,1]
和 B [6,6,6,6,6,6,6]
。
是否可以创建一个函数 f([X_1,X_2,...,X_n])
将 A 和 B 表示为整数,从而满足以下条件。
如果∃n(B_n < A_n)
那么f(A) > f(B)
否则f(A) <= f(B)
.
没有
让A = [2, 3]
和B = [3, 2]
。由于B_2 < A_2
,我们必须有f([2, 3]) > f([3, 2])
。
切换 A 和 B,所以 A = [3, 2]
和 B = [2, 3]
。由于B_1 < A_1
,我们必须有f([3, 2]) > f([2, 3])
。
这些结论不可能都是真的,所以没有有效的f
。
假设我有两个集合:A [1,4,0,3,0,3,1]
和 B [6,6,6,6,6,6,6]
。
是否可以创建一个函数 f(X
) 将 A 和 B 表示为整数,从而满足以下条件。
- 如果 B 的所有值都大于 A 中的相应值,则
f(a) <= f(b)
。 - 如果 B 的所有值都小于 A 中的对应值,则
f(a) > f(b)
。
目前的解决方案:
我可以创建一个函数 f(A)
,其中 returns 一个大质数,由 A 的每个成员的双射与其生成的质数的乘积组成。例如
A[0] = 3
A[1] = 11
A[2] = 2
A[3] = 7
A[4] = 2
A[5] = 7
A[6] = 3
所以f(A) = 19404
和
B[0] = 17
B[1] = 17
B[2] = 17
B[3] = 17
B[4] = 17
B[5] = 17
B[6] = 17
所以f(B) = 24137569
此方法不适用于 A 的很多值,例如
A [7,1,1,1,1,1,1]
但我不想就此放弃。
如有任何帮助,我们将不胜感激!
乔
更新 - 问题之前措辞不当。应该看过。
假设我有两个集合:A [1,4,0,3,0,3,1]
和 B [6,6,6,6,6,6,6]
。
是否可以创建一个函数 f([X_1,X_2,...,X_n])
将 A 和 B 表示为整数,从而满足以下条件。
如果
∃n(B_n < A_n)
那么f(A) > f(B)
否则
f(A) <= f(B)
.
没有
让A = [2, 3]
和B = [3, 2]
。由于B_2 < A_2
,我们必须有f([2, 3]) > f([3, 2])
。
切换 A 和 B,所以 A = [3, 2]
和 B = [2, 3]
。由于B_1 < A_1
,我们必须有f([3, 2]) > f([2, 3])
。
这些结论不可能都是真的,所以没有有效的f
。