代码之家  ›  专栏  ›  技术社区  ›  Enlico

从一个布尔到另一个布尔有多少不同的函数?

  •  0
  • Enlico  · 技术社区  · 4 年前

    因为这(至少在我看来)与编程密切相关,所以我是在这里而不是在网上问 math cs 但如果你认为它最适合那里或另一边,请给出你的意见。

    程序员范畴论 ,有一个问题:

    有多少种不同的功能 Bool 布尔

    这就是我的理由:

    • 只有两个元素, True False ;
    • 不同的 指函数在被认为是黑匣子时所做的事情,而不管它们内部发生了什么(例如,两个函数编码两个黑匣子的和) Int s as公司 arg1 + arg2 arg2 + arg1 分别是相同的函数 内景 内景
    • 所以不同的函数是从两个函数中的一个开始的 两个人中的另一个 布尔 学生:
      1. T T型
      2. T型 F
      3. F级 T型
      4. F级 F级
    • 我需要什么样的功能才能使这些场景成为可能?嗯,我想我只需要两个,比如恒等式函数,它允许1和4,以及否定式,它允许2和3。

    0 回复  |  直到 4 年前
        1
  •  2
  •   Bergi    4 年前

    不同的功能是从两种功能中的一种开始的 Bool 两个人中的另一个 布尔 s码

    每一个 价值来自它的 domain 从它的辅域中得到一个值。您需要考虑所有可能的映射组合。为此,将函数视为 relation ,并列出它们:

    • f -> f , t -> f
    • , t -> t
    • f -> t ,
    • f->t ,

    这些对应于4个功能

    • x => f (常假)
    • x => x
    • x => not(x) (否定)
    • x => t (常数为真)
        2
  •  2
  •   VLAZ    4 年前

    有四个功能:

    1

    错误->错误
    正确->错误

    2

    错误->错误

    假->真
    正确->错误

    4

    假->真
    正确->正确

    解释

        3
  •  2
  •   Enlico    4 年前

    你问的是编程,而不是数学或计算机科学,这一点很重要。

    在数学上,他们会告诉你有四个这样的函数,由其他答案列出。

    在CS上,他们会告诉你有27个:三个可能的输入tf各一个,三个可能的输出tf和。

    在编程方面,我可以告诉你有十一个:

    • (T->T,F->F,->)同一性
    • (T->F,F->T,->)不是
    • (T->T,F->T,->T)惰性常数真值
    • (T->F,F->F,->F)惰性常数假
    • (T->T,F->T,->)严格常数真值
    • (T->F,F->F,->)严格常数假
    • (T->T,F->,->)标识在false时失败
    • (T->,F->T,->)为真时不失败
    • (T->,F->,->)失败

    (这个答案非常直言不讳:我认为在现实中,大多数学者的CS类型会说4或11。)