【问题标题】:Can any set of numbers be expressed by a function?任何一组数字都可以用函数表示吗?
【发布时间】:2014-05-18 03:07:39
【问题描述】:

是否可以用函数表示任意一组随机数?

问题说明:

例如: 如果需要结果集 = {1,2,3,4,5}

所以我的意思不是这样的:

function getSet(){
   return {1,2,3,4,5};
}

但更像这样:

function genSet(){
   result = {}
   for(i=0;i<5;i++){
     result.push(i);
   }
   return result;
}

也就是说,是否有一个逻辑可以计算任何所需的集合?

【问题讨论】:

  • 用函数表达一组数字是什么意思?
  • 这个问题似乎离题了,因为它是关于抽象数学,而不是编程。
  • 任何有限的数字集显然都可以。 f(0) = 第一个数字,f(1) = 第二个数字,以此类推
  • 你不会得到比位向量表示更有效的东西。那时,每一个可能的比特串都代表一个集合,并且你已经达到了信息理论的极限。你不可能每集都由一个短节目制作,因为短节目只有这么多。
  • 任何n-元素集都可以由度数为n-1的多项式生成

标签: math set theory


【解决方案1】:

这个问题背后有很多数学问题。有一些有趣的结果。

任何(实)数集合都可以通过多项式函数 f(x) = a + b x + c x^2 + ...定义,因此如果 f (x)=0。从技术上讲,这是一维的代数曲线。虽然这似乎是一个乐观的结果,但多项式的复杂程度没有限制,5 次以上的多项式没有明确的结果。

Computable numbers 上有一个完整的研究领域,可以通过有限终止算法将实数计算到任何所需的精度,以及它们的相反:不可计算的数字,不能。坏消息是不可计算的数字比可计算的数字多得多。

以上内容基于实数,这些实数显然比整数甚至是有限的整数集更棘手,这是我们可以用intlong 数据类型表示的所有整数。有一个很大的研究领域见Computability theory (computer science)。我认为图灵停止问题开始发挥作用,这是关于您是否可以确定算法是否会终止。不幸的是,这无法确定,结果是“并非每组自然数都是可计算的”。证明这一点确实需要自然数的无限大小,所以我不确定有限集。

【讨论】:

  • 这很有趣,谢谢。
【解决方案2】:

陈述

在编程时,集合有两种常见的表示形式。假设集合 S 是某个项目 U 的子集。

成员谓词

表示集合 S 的一种方法是从 S 到 { true, false } 的函数 member。对于 U 中的所有 x:

  • member(x) = true 如果 x 在 S 中
  • member(x) = false 如果 x 不在 S 中

伪代码

bool member(int n)
   return 1 <= n <= 5

枚举

另一种表示 S 的方法是将其所有成员存储在数据结构中,例如列表、哈希表或二叉树。

伪代码

enumerable<int> S()
    for int i = 1 to 5
        yield return i

操作

使用这些表示中的任何一种,都可以定义大多数集合操作。例如,两个集合的并集在两个表示中的每一个看起来如下所示。

成员谓词

func<int, bool> union(func<int, bool> s, func<int, bool> t)
    return x => s(x) || t(x)

枚举

enumrable<int> union(enumerable<int> s, enumerable<int> t)
    hashset<int> r
    foreach x in s
        r.add(x)
    foreach x in t
        if x not in r
            r.add(x)
    return r

比较

成员谓词表示可以非常通用,因为数学中的各种集合运算都可以很容易地表示(补码、笛卡尔积等)。缺点是没有通用的方法来枚举以这种方式表示的集合的所有成员。例如,所有正实数的集合甚至都无法枚举。

枚举表示通常涉及更昂贵的集合操作,并且某些操作(例如整数集合 {1, 2, 3, 4, 5} 的补码)甚至无法表示。如果您需要能够枚举集合的成员,而不仅仅是测试成员资格,则应该选择它。

【讨论】:

    猜你喜欢
    • 2011-02-21
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多