Algorithm 为给定的输入和输出创建函数
想象一下,有两组大小相同的数字 是否可能,以及如何创建一个函数,一个算法或子例程来精确地将输入项映射到输出项?比如:Algorithm 为给定的输入和输出创建函数,algorithm,function,Algorithm,Function,想象一下,有两组大小相同的数字 是否可能,以及如何创建一个函数,一个算法或子例程来精确地将输入项映射到输出项?比如: Input = 1, 2, 3, 4 Output = 2, 3, 4, 5 其功能是: f(x): return x + 1 “函数”是指比[1]更复杂的东西: f(x): if x == 1: return 2 if x == 2: return 3 if x == 3: return 4 if x == 4: return 5 这对于创
Input = 1, 2, 3, 4
Output = 2, 3, 4, 5
其功能是:
f(x): return x + 1
“函数”是指比[1]更复杂的东西:
f(x):
if x == 1: return 2
if x == 2: return 3
if x == 3: return 4
if x == 4: return 5
这对于创建特殊的哈希函数或函数近似非常有用
更新:
我想问的是,是否有一种方法可以压缩上面[1]中那个微不足道的映射示例。在我看来,您需要一个。这些函数基于散列函数,并且已知的散列函数比其他函数工作得更好,这取决于预期的输入和预期的输出 如果您想要的是一种将任意输入映射到任意输出的算法方法,那么这在一般情况下是不可行的,因为它完全取决于输入和输出集
例如,在这里的简单示例中,函数非常明显,
f(x):x+1
。在其他情况下,生成描述映射的精确函数可能非常困难,甚至不可能,您必须近似或直接使用映射。好的,我不理解您的问题,但我要试一试
如果你只有两组数字,并且你想找到f,其中y=f(x),那么你可以试着给你一个近似的“地图”
在这种情况下,它是线性的,所以曲线拟合可以工作。您可以尝试不同的模型,看看哪种模型效果最好,并根据最小化错误度量进行选择
这就是你的想法吗
下面是该文章的另一个链接和图片:
在某些情况下(例如您的示例),或类似的统计模型可能会发现您的输入集和输出集之间的关系。在一般情况下这样做是非常困难的。例如,考虑ECB模式中使用的分组密码:它将输入整数映射为输出整数,但根据设计,从特定实例导出任何一般映射是不可行的。事实上,对于一个好的密码,即使有输入和输出块之间的完整映射集,您仍然无法确定如何在一般基础上计算该映射
显然,密码是一个极端的例子,但它可以用来说明没有(已知的)通用程序来执行您的请求。找到输出某些字符串(序列、函数等)的最短程序相当于找到其,这是不可判定的 如果“不可能”不是一个令人满意的答案,你必须限制你的问题。在所有适当限制的情况下(多项式、有理函数、线性递归),只要您了解自己在做什么,就很容易找到最佳算法。示例:
- 多项式
- 有理函数-
- 布尔公式-
- 近似解,线性情况:
- 数据的一般打包;有些技术,如游程编码,是无损的,有些则不是
在多项式序列的情况下,通常有助于考虑序列BN=AN+1-AN;这将二次关系简化为线性关系,将线性关系简化为常数序列等,但并没有灵丹妙药。您可以使用遗传算法、随机猜测、检查许多内置序列及其组成等来构建一些启发式方法(例如Mathematica has-检查该页面以了解其复杂性)。不管怎样,由于科尔莫戈罗夫复杂性的不确定性,任何这样的程序在理论上都离完美有无限的距离。在实践中,您可能会得到令人满意的结果,但这需要大量的人工年
另见。您还可以在应用程序中实现一些包装器 字段: 大多数情况下,可以做的事情的限制在- 复杂性理论——描述什么问题可以“快速”解决,比如在图中找到最短路径,什么问题不能解决,比如玩广义版的跳棋(它们是一次性完成的)
- 信息论——描述随机变量携带了多少“信息”。例如,以抛硬币为例。通常,对结果进行编码需要1位,对n个结果进行编码需要n位(使用长0-1序列)。假设现在你有一个有偏差的硬币,90%的时间都是尾巴。然后,有可能找到另一种描述n个结果的方法,这些结果平均给出的序列要短得多。调用最佳编码所需的每次抛出的位数(在这种情况下小于1!);显示携带的信息量(1/2-1/2为1位,偏置硬币小于1位,如果硬币始终落在同一侧,则为0位)
- 算法信息理论——试图将复杂性理论和信息理论结合起来。科尔莫戈罗夫的复杂性就属于这里。如果它具有大的Kolmogorov复杂性,则可以考虑字符串“随机”:AAAAAAAAAAAA不是随机字符串,F8A34 OLX可能是。所以,随机字符串是不可压缩的(这是一个非常可读的介绍)。Chaitin的书可以下载。引用:“[…]我们构造了一个只涉及整数和加法、乘法和幂运算的方程,其性质是,如果改变一个参数,并询问解的数量是有限的还是无限的,那么这个问题的答案就无法与公平硬币的独立抛投结果区分开来。”(换句话说,没有算法能够以大于1/2的概率猜出结果)。然而,我还没有读过那本书,所以不能给它打分