【离散数学】集合论 第四章 函数与集合(1) 函数定义、递归定义的函数_离散数学递归集合-程序员宅基地

技术标签: 离散数学  基础课程和实践项目  

本文属于「离散数学」系列文章之一。这一系列着重于离散数学的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数学知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充:

  • 国外经典教材)离散数学及其应用 第七版 Discrete Mathematics and Its Applications 7th ,作者是 Kenneth H.Rosen ,袁崇义译,机械工业出版社
  • 离散数学 第二版,武波等编著,西安电子科技大学出版社,2006年
  • 离散数学 第三版,方世昌等编著,西安电子科技大学出版社,2013年
  • (经典参考书及其题解)离散数学/离散数学——理论•分析•题解,左孝凌、李为鉴、刘永才编著,上海科学技术文献出版社
  • 离散数学习题集:数理逻辑与集合论分册,耿素云;图论分册,耿素云;抽象代数分册, 张立昂。北京大学出版社


4.1 函数

高等数学中从变量的角度提出了函数的概念,而且是在实数集合上讨论函数,这种函数一般是连续间断连续的。现在,我们将连续函数的概念,推广到离散变量上,即将函数看作一种特殊的二元关系。这时,我们之前讨论的有关集合或关系的运算和性质,也完全适用于函数。

函数的概念,在日常生活和计算机科学中都非常重要,各种高级编程语言中大量使用函数,而计算机的任何输出,都可看做是某个函数作用于某些输入上的结果。

4.1.1 函数的定义

定义4.1.1 X X X Y Y Y 是集合, f f f 是从 X X X Y Y Y 上的二元关系,如果对于每个 x ∈ X x \in X xX 都有唯一的 y ∈ Y y \in Y yY ,使得 ⟨ x , y ⟩ ∈ f \langle x, y\rangle \in f x,yf ,则称 f f f X X X Y Y Y 的函数 a function from X to Y ,记为 f : X → Y f: X \to Y f:XY 。函数的形式化定义为:
f : X → Y ⇔ ∀ x ( x ∈ X → ∃ y ( y ∈ Y ∧ ⟨ x , y ⟩ ∈ f ∧ ∀ z ( z ∈ Y ∧ ⟨ x , z ⟩ ∈ f → y = z ) ) ) f: X \to Y \Lrarr \forall x(x \in X \to \exist y(y \in Y \land \langle x, y\rangle \in f \land \forall z (z \in Y \land \langle x, z \rangle \in f \to y = z))) f:XYx(xXy(yYx,yfz(zYx,zfy=z)))

函数又称作映射 mapping变换 transformation

定义4.1.2 f f f 为从集合 X X X Y Y Y 的函数,任取 x ∈ X x \in X xX ,若 ⟨ x , y ⟩ ∈ f \langle x, y\rangle \in f x,yf ,则称 y y y f f f x x x 的函数值 value image ,记为 f ( x ) = y f(x) = y f(x)=y ,而 x x x 则称为 y y y原像 preimage 。若 X ′ ⊆ X X' \subseteq X XX ,称 f ( X ′ ) = { f ( x ) ∣ x ∈ X ′ } f(X') = \{ f(x) \mid x \in X'\} f(X)={ f(x)xX}函数 f f f X ′ X' X 的像。特别地,称整个前域 X X X 的像 f ( X ) f(X) f(X)函数的值域

f f f 为从集合 X X X Y Y Y 的函数,下图描述了函数 f f f 的基本特征。其中函数 f f f前域 X X X 为集合 X X X陪域为集合 Y Y Y ,函数 f f f定义域 dom f = X \textrm{dom} f = X domf=X值域 ran f = f ( X ) = { f ( x ) ∣ x ∈ X } \textrm{ran} f = f(X) = \{ f(x) \mid x \in X\} ranf=f(X)={ f(x)xX} ,显然有 ran f ⊆ f \textrm{ran} f \subseteq f ranff

X X X Y Y Y 的函数实质上是一个从 X X X Y Y Y 的二元关系,反过来则不一定,从 X X X Y Y Y 的二元关系不一定是 X X X Y Y Y 的函数。区别于一般二元关系,函数有以下两个特征

  • 点点有定义)函数 f f f 的定义域 dom f = X \textrm{dom}f = X domf=X (即函数的定义域是 X X X ,而不能是 X X X 的某个真子集);
  • 值唯一性/单值性)对于每个 x ∈ X x \in X xX ,在 Y Y Y有且仅有唯一的一个元素 y y y ,满足 ⟨ x , y ⟩ ∈ f \langle x, y \rangle \in f x,yf ,即对 y 1 , y 2 ∈ Y y_1, y_2 \in Y y1,y2Y ,有
    f ( x ) = y 1 ∧ f ( x ) = y 2 ⇒ y 1 = y 2 f(x) = y_1 \land f(x) = y_2 \Rarr y_1 = y_2 f(x)=y1f(x)=y2y1=y2

一个关于某个具体函数的描述,如果满足函数的定义,则称这个函数描述是良定义的 well defined

【例1】判断下图所示的四个关系中,哪些能构成函数。

解:(a)不是函数,因为 x 2 x_2 x2 没有像;(b)也不是函数,因为 x 2 x_2 x2 有两个像;其他两个都是函数。

【例2】判断下列关系中,哪些能构成函数。
(1) f f f N \N N 上的二元关系,且 f = { ⟨ x 1 , x 2 ⟩ ∣ x 1 , x 2 ∈ N ,   x 1 + x 2 < 10 } f = \{ \langle x_1, x_2 \rangle \mid x_1, x_2 \in \N,\ x_1 + x_2 < 10\} f={ x1,x2x1,x2N, x1+x2<10}
(2) f f f R \R R 上的二元关系,且 f = { ⟨ y 1 , y 2 ⟩ ∣ y 1 , y 2 ∈ R ,   y 2 2 = y 1 } f = \{ \langle y_1, y_2 \rangle \mid y_1, y_2 \in \R,\ y_2^2 = y_1 \} f={ y1,y2y1,y2R, y22=y1}
(3) f f f N \N N 上的二元关系,且 f = { ⟨ x 1 , x 2 ⟩ ∣ x 1 , x 2 ∈ N ,   x 2 为 小 于 x 1 的 素 数 个 数 } f = \{ \langle x_1, x_2 \rangle \mid x_1, x_2 \in \N, \ x_2为小于x_1的素数个数\} f={ x1,x2x1,x2N, x2x1}
解:
(1)不能,因为 dom f ≠ N \textrm{dom}f \ne \N domf=N ,且存在 x 1 x_1 x1 对应多个 x 2 x_2 x2
(2)不能。若 y 1 > 0 y_1 > 0 y1>0 ,则 y 2 y_2 y2 可取 ± y 1 \pm \sqrt{y_1} ±y1 两个元素;若 y 1 < 0 y_1 < 0 y1<0 ,则 y 2 y_2 y2 无解。
(3)能,因为 dom f = N \textrm{dom}f = \N domf=N ,且对每个 x 1 ∈ N x_1 \in \N x1N 都有唯一的元素 x 2 ∈ N x_2 \in \N x2N 与之对应。

【例3】以下哪些关于函数的描述是良定义的?
(1) f : N → Q ,   f ( x ) = 1 x f: \N \to \mathbb{Q},\ f(x) = \dfrac{1}{x} f:NQ, f(x)=x1
(2) g : { 1 , 2 , 3 } → { p , q , r } ,   g = { ⟨ 1 , q ⟩ , ⟨ 2 , r ⟩ , ⟨ 3 , p ⟩ } g:\{1, 2, 3\} \to \{ p, q, r\},\ g = \{ \langle 1, q\rangle, \langle 2, r\rangle, \langle 3, p\rangle \} g:{ 1,2,3}{ p,q,r}, g={ 1,q,2,r,3,p}
(3) f : N → Z ,   ( f ( x ) ) 2 = x + 1 f: \N \to \Z,\ (f(x))^2 = x + 1 f:NZ, (f(x))2=x+1
(4) h : R × R → R × R ,   h ( ⟨ x , y ⟩ ) = ⟨ y + 1 , x + 1 ⟩ h: \R \times \R \to \R \times \R,\ h(\langle x, y\rangle) = \langle y + 1, x + 1\rangle h:R×RR×R, h(x,y)=y+1,x+1
解:
(1)不是良定义的,它在 0 0 0 处无定义。
(2)是良定义的;
(3)不是良定义的,每个 x ∈ N x \in \N xN 存在 ± x + 1 \pm \sqrt{x+1} ±x+1 两个元素与之对应;
(4)是良定义的。

X , Y X, Y X,Y 都是有限集合,且有 ∣ X ∣ = m , ∣ Y ∣ = n |X| = m, |Y| = n X=m,Y=n 。根据函数的定义,对于集合 X X X 中的每个元素,在 Y Y Y 中有且仅有一个元素与之对应。考虑这样一类 X X X Y Y Y 的二元关系 f f f
f = { ⟨ x 1 , □ ⟩ , ⟨ x 2 , □ ⟩ , … , ⟨ x m , □ ⟩ } f = \{ \langle x_1, \Box\rangle, \langle x_2, \Box\rangle, \dots, \langle x_m, \Box\rangle \} f={ x1,,x2,,,xm,}

对于每个 □ \Box 所在的位置,可用集合 Y Y Y 中的任何一个元素替代,即有 n n n 种不同的取法,这样的组合共有 n m n^m nm 种,因此 X X X Y Y Y 上有 2 m × n 2^{m\times n} 2m×n 种不同的二元关系,却只有 n m n^m nm 个不同的函数。一般来说,我们用 Y X Y^X YX 表示 X X X Y Y Y 的所有函数构成的集合,即 Y X = { f ∣ f : X → Y } Y^X = \{ f\mid f: X\to Y\} YX={ ff:XY} ,且 ∣ Y X ∣ = n m = ∣ Y ∣ ∣ X ∣ |Y^X| = n^m = |Y|^{|X|} YX=nm=YX

定义4.1.3 f : A → B ,   g : C → D f: A\to B,\ g: C\to D f:AB, g:CD ,如果 A = C , B = D A = C, B = D A=C,B=D ,且对于所有的 x ∈ A x \in A xA ,有 f ( x ) = g ( x ) f(x) = g(x) f(x)=g(x) ,则称函数 f f f g g g 相等 ,记为 f = g f = g f=g

由定义4.1.3可见,「函数相等的定义」与「关系相等的定义」是一致的,它们都要求相同的前域与陪域相同的对应关系。如函数 f 1 : I → I ,   f 1 ( x ) = x 2 f_1 : I \to I,\ f_1(x)= x^2 f1:II, f1(x)=x2 和函数 f 2 : { 1 , 2 , 3 } → I ,   f 2 ( x ) = x 2 f_2: \{1, 2, 3\} \to I,\ f_2(x)= x^2 f2:{ 1,2,3}I, f2(x)=x2 ,它们是两个不同的函数。

定义4.1.4 当函数 f f f 的前域 X X X n n n 个集合的笛卡尔积时,即 X = ⨉ i = 1 n X i X = \displaystyle ⨉^n_{i = 1} X_i X=i=1nXi 时,称 f f f n n n 元函数 ⟨ x 1 , x 2 , … , x n ⟩ ∈ X \langle x_1, x_2, \dots, x_n \rangle \in X x1,x2,,xnX ,在函数 f f f 下的映像记为 f ( x 1 , x 2 , … , x n ) f(x_1, x_2, \dots, x_n) f(x1,x2,,xn)

【例4】设函数 f : N × N → N f: \N\times \N \to \N f:N×NN f ( x , y ) = x + 2 y + 1 f(x, y) = x+ 2y + 1 f(x,y)=x+2y+1
(1)求 ⟨ 2 , 0 ⟩ \langle 2, 0\rangle 2,0 在函数 f f f 下的像;
(2)求 dom f \textrm{dom}f domf ran f \textrm{ran}f ranf
解:
(1) f ( 2 , 0 ) = 2 + 2 × 0 + 1 = 3 f(2, 0) = 2 + 2 \times 0 + 1 = 3 f(2,0)=2+2×0+1=3 .
(2) dom f = N × N \textrm{dom}f = \N \times \N domf=N×N ,不存在 ⟨ x , y ⟩ ∈ N × N \langle x, y\rangle \in \N \times \N x,yN×N 使得 f ( x , y ) = 0 f(x, y) = 0 f(x,y)=0 ,则 ran f = Z + \textrm{ran}f = \Z^+ ranf=Z+ .


4.1.2 递归定义的函数

当函数的前域是用归纳定义的集合时,可以采用递归定义 recursive definitions 的方法定义函数。递归定义的规则是:用「已知元素的函数值」和「给定的函数」,计算新元素的函数值。

特别地,递归定义的函数不一定是归纳的,因为归纳法要求从较小元素的函数值确定较大元素的函数值,而递归定义则不一定遵守这种顺序。

【例5】给出自然数集合 N \N N 上的阶乘函数 f ( n ) = n ! f(n) = n! f(n)=n! 的递归定义。
解:设 f : N → N f: \N \to \N f:NN
(a)(基础) f ( 0 ) = 1 f(0) = 1 f(0)=1 .
(b)(归纳) n ∈ N ,   f ( n + 1 ) = ( n + 1 ) f ( n ) n \in \N,\ f(n + 1) = (n + 1)f(n) nN, f(n+1)=(n+1)f(n) .

【例6】给出自然数集合 N \N N 上的斐波那契函数的递归定义。
解:设 f : N → N f: \N \to \N f:NN 是斐波那契函数。
(a)(基础) f ( 0 ) = 0 ,   f ( 1 ) = 1 f(0) = 0,\ f(1) = 1 f(0)=0, f(1)=1 .
(b)(归纳) n ∈ N ,   f ( n + 2 ) = f ( n + 1 ) + f ( n ) n \in \N,\ f(n + 2) = f(n + 1) + f(n) nN, f(n+2)=f(n+1)+f(n) .

【例7】以下是麦卡锡91函数,它是递归定义的。设 f : N → N f: \N \to \N f:NN ,已知
f ( x ) = { x − 10 if  x > 100 f ( f ( x + 11 ) ) if  0 ≤ x ≤ 100 f(x) = \begin{cases} x - 10 \quad& \textrm{if}\ x > 100 \\ f(f(x+11)) \quad& \textrm{if}\ 0 \le x \le 100 \end{cases} f(x)={ x10f(f(x+11))if x>100if 0x100

f f f 的函数值。
解:由题意可知: f ( 90 ) = f ( f ( 101 ) ) = f ( 91 ) = f ( f ( 102 ) ) = f ( 92 ) = ⋯ = f ( 99 ) = f ( f ( 110 ) ) = f ( 100 ) = f ( f ( 111 ) ) = f ( 101 ) = 91 f(90) = f(f(101)) = f(91) = f(f(102)) = f(92) = \dots = f(99) \\ = f(f(110)) = f(100) = f(f(111)) = f(101) = 91 f(90)=f(f(101))=f(91)=f(f(102))=f(92)==f(99)=f(f(110))=f(100)=f(f(111))=f(101)=91 因此:

  • 90 ≤ x ≤ 100 90 \le x \le 100 90x100 时有 f ( x ) = 91 f(x) = 91 f(x)=91
  • 0 ≤ x < 90 0 \le x \lt 90 0x<90 时,存在 k ∈ Z + k \in \Z^+ kZ+ ,使得 90 ≤ x + 11 k ≤ 100 90 \le x + 11k \le 100 90x+11k100 ,因此 f ( x ) = f ( f ( x + 11 ) ) = ⋯ = f k + 1 ( x + 11 k ) = f k ( f ( x + 11 k ) ) f(x) = f(f(x + 11)) = \dots = f^{k+1} (x+ 11k) = f^k(f(x + 11k)) f(x)=f(f(x+11))==fk+1(x+11k)=fk(f(x+11k)) 因为 90 ≤ x + 11 k ≤ 100 90 \le x + 11k \le 100 90x+11k100 ,所以 f ( x + 11 k ) = 91 f(x + 11k) = 91 f(x+11k)=91 ,故 f ( x ) = f k ( f ( x + 11 k ) ) = f k ( 91 ) = f k − 1 ( f ( 91 ) ) = f k − 1 ( 91 ) = ⋯ = f ( 91 ) = 91 f(x) = f^k (f(x + 11k)) = f^k(91) = f^{k - 1} (f(91)) = f^{k - 1}(91) = \dots = f(91) = 91 f(x)=fk(f(x+11k))=fk(91)=fk1(f(91))=fk1(91)==f(91)=91

综上可得:
f ( x ) = { x − 10 if  x > 100 91 if  0 ≤ x ≤ 100 f(x) = \begin{cases} x - 10 \quad& \textrm{if}\ x > 100 \\ 91 \quad& \textrm{if}\ 0 \le x \le 100 \end{cases} f(x)={ x1091if x>100if 0x100

【例8】阿克曼函数 Ackerman f : N 2 → N f: \N^2 \to \N f:N2N 的递归定义如下:
{ f ( 0 , n ) = n + 1 if  n ≥ 0 f ( m , 0 ) = f ( m − 1 , 1 ) if  m > 0 f ( m , n ) = f ( m − 1 , f ( m , n − 1 ) ) if  m > 0 , n > 0 \begin{cases} f(0, n) = n + 1 \quad& \textrm{if}\ n \ge 0 \\ f(m, 0) = f(m - 1, 1) \quad& \textrm{if}\ m > 0\\ f(m, n) = f(m - 1, f(m, n - 1)) \quad& \textrm{if}\ m > 0, n > 0 \end{cases} f(0,n)=n+1f(m,0)=f(m1,1)f(m,n)=f(m1,f(m,n1))if n0if m>0if m>0,n>0

(1)求 f ( 2 , 1 ) f(2, 1) f(2,1) .
(2)证明 f ( 2 , n ) = 2 n + 3 f(2, n) = 2n + 3 f(2,n)=2n+3 .
解:(1)
f ( 2 , 1 ) = f ( 1 , f ( 2 , 0 ) ) f(2, 1)= f(1, f(2, 0)) f(2,1)=f(1,f(2,0))
f ( 2 , 0 ) = f ( 1 , 1 ) f(2, 0) = f(1, 1) f(2,0)=f(1,1)
f ( 1 , 1 ) = f ( 0 , f ( 1 , 0 ) ) f(1, 1) = f(0, f(1, 0)) f(1,1)=f(0,f(1,0))
f ( 1 , 0 ) = f ( 0 , 1 ) = 2 f(1, 0) = f(0, 1) = 2 f(1,0)=f(0,1)=2
f ( 1 , 1 ) = f ( 0 , 2 ) = 3 f(1, 1) = f(0, 2) = 3 f(1,1)=f(0,2)=3
f ( 2 , 0 ) = 3 f(2, 0) = 3 f(2,0)=3
f ( 2 , 1 ) = f ( 1 , 3 ) f(2, 1) = f(1, 3) f(2,1)=f(1,3)
f ( 1 , 3 ) = f ( 0 , f ( 1 , 2 ) ) f(1, 3) = f(0, f(1, 2)) f(1,3)=f(0,f(1,2))
f ( 1 , 2 ) = f ( 0 , f ( 1 , 1 ) ) = f ( 0 , 3 ) = 4 f(1, 2) = f(0, f(1, 1)) = f(0, 3) = 4 f(1,2)=f(0,f(1,1))=f(0,3)=4
f ( 1 , 3 ) = f ( 0 , 4 ) = 5 f(1, 3) = f(0, 4) = 5 f(1,3)=f(0,4)=5
f ( 2 , 1 ) = 5 f(2, 1) = 5 f(2,1)=5
(2)证明如下:
① 当 m = 0 , n ≥ 0 m = 0, n\ge 0 m=0,n0 时, f ( 0 , n ) = n + 1 f(0, n) = n + 1 f(0,n)=n+1
② 当 m = 1 m = 1 m=1 时,有

  • n = 0 n = 0 n=0 ,则 f ( 1 , 0 ) = f ( 0 , 1 ) = 2 f(1, 0) = f(0, 1) = 2 f(1,0)=f(0,1)=2
  • n = 1 n = 1 n=1 ,则 f ( 1 , 1 ) = f ( 0 , f ( 1 , 0 ) ) = f ( 1 , 0 ) + 1 = 3 f(1, 1) = f(0, f(1, 0)) = f(1, 0) + 1 = 3 f(1,1)=f(0,f(1,0))=f(1,0)+1=3

假设 n = k   ( k ≥ 1 ) n = k\ (k \ge 1) n=k (k1) 时,有 f ( 1 , k ) = k + 2 f(1, k) = k + 2 f(1,k)=k+2 。若 n = k + 1 n = k + 1 n=k+1 ,则 f ( 1 , k + 1 ) = f ( 0 , f ( 1 , k ) ) = f ( 1 , k ) + 1 = ( k + 2 ) + 1 = ( k + 1 ) + 2 f(1, k+1) = f(0, f(1, k)) = f(1, k) + 1 = (k + 2) + 1= (k+1)+2 f(1,k+1)=f(0,f(1,k))=f(1,k)+1=(k+2)+1=(k+1)+2 因此,当 m = 1 m = 1 m=1 时有 f ( 1 , n ) = n + 2 f(1, n) = n + 2 f(1,n)=n+2

③ 当 m = 2 m = 2 m=2 时,有

  • n = 0 n = 0 n=0 ,则 f ( 2 , 0 ) = f ( 1 , 1 ) = 3 = 2 × 0 + 3 f(2, 0) = f(1, 1) = 3 = 2 \times 0 + 3 f(2,0)=f(1,1)=3=2×0+3
  • n = 1 n = 1 n=1 ,则 f ( 2 , 1 ) = f ( 1 , f ( 2 , 0 ) ) = f ( 1 , 3 ) = 5 = 2 × 1 + 3 f(2, 1) = f(1, f(2, 0)) = f(1, 3) = 5 = 2 \times 1 + 3 f(2,1)=f(1,f(2,0))=f(1,3)=5=2×1+3

假设 n = k   ( k ≥ 1 ) n = k\ (k \ge 1) n=k (k1) 时,有 f ( 2 , k ) = 2 k + 3 f(2, k) = 2k + 3 f(2,k)=2k+3 。若 n = k + 1 n = k + 1 n=k+1 ,则
f ( 2 , k + 1 ) = f ( 1 , f ( 2 , k ) ) = f ( 2 , k ) + 2 = 2 k + 3 + 2 = 2 ( k + 1 ) + 3 f(2, k + 1) = f(1, f(2, k)) = f(2, k) + 2 = 2k + 3 + 2 = 2(k + 1) + 3 f(2,k+1)=f(1,f(2,k))=f(2,k)+2=2k+3+2=2(k+1)+3

因此,当 m = 2 m = 2 m=2 时有 f ( 2 , n ) = 2 n + 3 f(2, n) = 2n+3 f(2,n)=2n+3

不过,当 m = 3 m = 3 m=3 时, f ( 3 , n ) = 2 n + 3 − 3 f(3, n) = 2^{n + 3} - 3 f(3,n)=2n+33 ——这一规律就不是那么好发现的。总的来说,假设 m m m 为层数(主序,即认为每一层 m m m 确定、 n n n 变化), n n n 为列数:

  • f ( 0 , n ) = n + 1 f(0, n) = n +1 f(0,n)=n+1 给出了 m = 0 m = 0 m=0 时的归纳基础(最基础的归纳边界);
  • f ( m , 0 ) = f ( m − 1 , 1 ) f(m, 0) = f(m - 1, 1) f(m,0)=f(m1,1) 给出了 m > 0 , n = 0 m > 0, n = 0 m>0,n=0 f ( m , 0 ) f(m, 0) f(m,0) 对上一层函数的依赖(归纳);
  • f ( m , n ) = f ( m − 1 , f ( m , n − 1 ) ) f(m, n) = f(m - 1, f(m, n - 1)) f(m,n)=f(m1,f(m,n1)) 给出了 m > 0 , n > 0 m > 0, n > 0 m>0,n>0 f ( m , n ) f(m, n) f(m,n) 对前式和上一层函数的依赖(归纳)

归纳定义的集合上进行函数的递归定义时,所得未必是一个函数,特别是当前域的归纳定义使得某些元素可由多种方法构造时,更容易出现这种情况。因此,用递归定义函数时,常需要证明这个函数定义是良定义的

【例9】设 Σ = { a , b , c } \Sigma = \{a, b, c\} Σ={ a,b,c} ,集合 Σ + \Sigma^+ Σ+ 的定义如下:
(1)(基础) a ∈ Σ + ,   b ∈ Σ + ,   c ∈ Σ + a \in \Sigma^+,\ b \in \Sigma^+,\ c\in \Sigma^+ aΣ+, bΣ+, cΣ+
(2)(归纳)如果 x ∈ Σ + ,   y ∈ Σ + x \in \Sigma^+,\ y \in \Sigma^+ xΣ+, yΣ+ ,那么 x y ∈ Σ + xy \in \Sigma^+ xyΣ+
(3)(极小性) ∑ + \sum^+ + 是满足条款(1)、(2)的最小集合。
f f f 是从 Σ + \Sigma^+ Σ+ 到自然数集合 N \N N 上的一个函数, f f f 的递归定义如下:
(a)(基础) f ( a ) = 2 , f ( b ) = 1 , f ( c ) = 3 f(a) = 2, f(b) = 1, f(c) = 3 f(a)=2,f(b)=1,f(c)=3
(b)(归纳) x , y ∈ Σ + x,y \in \Sigma^+ x,yΣ+ f ( x y ) = f ( x ) f ( y ) f(xy) = f(x)^{f(y)} f(xy)=f(x)f(y)
试证明 f f f 不是良定义的。

证明:对于串 a b c ∈ Σ + abc \in \Sigma^+ abcΣ+ ,它可以有以下两种不同的构造方法:
(a)令 x = a ,   y = b c x = a,\ y = bc x=a, y=bc ,则 x y = a b c xy = abc xy=abc
(b)令 x = a b ,   y = c x = ab,\ y = c x=ab, y=c ,则 x y = a b c xy = abc xy=abc
根据 f f f 的递归定义,求 a b c abc abc f f f 下的值:
f ( a b c ) = f ( a ) f ( b c ) = 2 1 3 = 2 ,   f ( a b c ) = f ( a b ) f ( c ) = ( 2 1 ) 3 = 8 f(abc)= f(a)^{f(bc)} = 2^{1^3} = 2,\ f(abc) = f(ab)^{f(c)} = (2^1)^3 = 8 f(abc)=f(a)f(bc)=213=2, f(abc)=f(ab)f(c)=(21)3=8 所以 f f f 不是良定义的。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/myRealization/article/details/121336314

智能推荐

删除anaconda后出现的python环境变量问题_将软件删除后环境变量-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏3次。问题没删除anaconda之前已经配置好anaconda环境变量,在cmd中默认下载包的位置是anaconda中,由于某些原因将anaconda卸载后(又重新配置了python环境变量),发现在cmd下载包成功后,在idle中找不到。解决方法:1.在cmd中输入下面这个命令:where python发现有两个python。一个是我自己安装的,另一个的位置是在C:\Users\m\AppData\Local\Microsoft\WindowsApps下。2.所以在cmd中下载的包就在c盘_将软件删除后环境变量

真的,准备点「现金」吧!-程序员宅基地

文章浏览阅读122次。loonggg读完需要3分钟速读仅需 1 分钟大家好,我是校长。当一座城市突然断电,也就是意味着突然失去了互联网,你们猜,我们的生活会怎么样?前几天,这种事就真的发生了,发生在了因暴雨肆虐..._有人说备点现金,啥意思

【编程题】字符串压缩算法和常用的substr与replace函数_小q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小q发明了-程序员宅基地

文章浏览阅读414次。题目描述:小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?#include <..._小q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小q发明了

前端学习笔记(三) - 文本及列表标签、css基本长度颜色单位及文本和字体样式-程序员宅基地

文章浏览阅读444次。前端基础(三)文本标签:标签作用(语义)<em></em>表示一段内容中的着重点,常为语气上的强调,显示为斜体<strong>表示内容的强调,显示为粗体<i></i>没有语义上的强调,显示斜体<b></b>没有语义的强调,显示粗体<samll>...

教学生用计算机画画,六年级美术教材《用计算机画画》-程序员宅基地

文章浏览阅读209次。六年级美术教材《用计算机画画》实例一:六年级美术教材《用计算机画画》在新课标精神的指引和带领下,用计算机画画各学科的教材都为适应教学改革相应的进行着变更,就拿小学美术课来说,用计算机画画多少年的教材都是提倡用手中的画笔描绘、丰富的色彩填充以展现美丽多彩的世界。用计算机画画面对那一幅幅充满想象力、展现力的作品,几乎所有人都认为,画画必须要有“笔”。可是,新教材六年级美术11册用计算机画画中却有两课打..._老师教我们用计算机画画

html 什么标签不换行,css不换行代码是什么?-程序员宅基地

文章浏览阅读3k次。通过css可以使对应div标签内的文字换行或不换行设置操作,那么该如何设置不换行呢?下面我们来看一下css中不换行的代码是什么?css中强制不换行代码是white-space:nowrap;。white-space属性声明建立布局过程中如何处理元素中的空白符。示例:div{width: 200px;height: 100px;border: 1px solid red;white-space: n..._不换行的标签

随便推点

VCG笔记-mesh元素的创建/删除_c++怎么用一个mesh的部分顶点创建一个新mesh-程序员宅基地

文章浏览阅读2.8k次。1 创建mesh元素  我们在创建简单的网格模型或者为已存在的网格模型添加元素的时候,我们应该使用AddVertices和AddFaces这两个函数,新的元素被添加到网格模型的尾部,函数会返回指向第一个新分配(或者说是添加)的第一个元素的指针。向vector添加元素会引起存储空间的重新分配(reallocation),因此可能会出现无效的指针指向网格元素。而上述的AddVertices和AddFac_c++怎么用一个mesh的部分顶点创建一个新mesh

无监督学习 聚类算法代码+原理+对比分析-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏9次。无监督学习 聚类算法1:经典的K means纵使簇类需要专家系统与先验知识定义,K means 也依旧在当前的机器学习与深度学习使用,例如各种数据分析以及深度学习全连接以后的输出层网络连接,它与他的衍生算法,例如K means ++ ,在聚类算法中一直是老大地位,因为他的速度是极快的,相比其他算法在计算簇间相似度与簇内相似度中的速度较慢;所以就出现了很多算法,是来优化K means 家族的,例如在簇的寻找上,使用DBACAN等层次聚类算法用来给K means ++ 寻找最合适的簇个数,在此基础上,DBA

TwinCAT设置项目开机自动启动_twincat2设置开机自动运行程序-程序员宅基地

文章浏览阅读7.8k次,点赞2次,收藏10次。https://blog.csdn.net/little_snail_bing/article/details/86628856开机自动运行可以这样设置:1、右键TEST,勾选上 Autostart Boot Project2、单击SYSTEM,勾选上Run Mode,再勾选上Auto Logan,在下面的框里填入电脑的用户名和登陆密码,点击Apply,激活配置;再次开机就会自动启动..._twincat2设置开机自动运行程序

java使用file.createNewFile()创建文件时,报错目录不存在,如何解决_file.createnewfile() 报错-程序员宅基地

文章浏览阅读1.2w次,点赞15次,收藏25次。普通创建文件代码:String strPath = "E:\\test\\test1\\test.txt";File file = new File(strPath);if(!file.exists())){ file.createNewFile();}上述这段代码,当E:\test\test1目录不存在时,createNewFile()执行会报错:java.io.IOException:Parent directory of file does not existString st_file.createnewfile() 报错

2-3计算分段函数_计算分段函数(判断x是否不为0)-程序员宅基地

文章浏览阅读4.1k次,点赞5次,收藏13次。例2-4:为鼓励居民节约用水,自来水公司采取用水量按月分段计费的办法,居民应交水费y元与月用水量x吨的函数关系式如下设x≥0.输入用户的月用水量x吨,计算并输出改用户应支付的水费y(元)(保留两位小数)。y=f(x)=4x/3; x≤15y=f(x)=2.5x-10.5 x>15做这个题的时候应该注意留意题目最后的保留两位小数,并结合实际,应该不适用整型常量。#inc..._计算分段函数(判断x是否不为0)

笔记:json对象和字符串的相互转换_matlab jsonencode 转字符串-程序员宅基地

文章浏览阅读139次。原文链接:https://www.cnblogs.com/yjd_hycf_space/p/7928384.html//使用json中的parser方法转换;var str='{"name":"fendouer", "age":23}'; //这是一个json字符串''var ob=JSON.parse(str) ; //返回一个新对象console.log..._matlab jsonencode 转字符串