机器学习的数学基础2:字母表、二叉树、树

目录

  1. 机器学习的数学基础1:集合、关系、元组
  2. 机器学习的数学基础2:字母表、二叉树、树
  3. 机器学习的数学基础3:有限状态自动机

用元组来定义树与二叉树时, 遇到了诸多问题, 所以在这里单独写成一个贴子.

按上一贴的二叉树习题.
a) 二叉树的左、右子树需要区别对待, 所以, 定义子节点函数更合理. 有两种方法: 1) 使用两个函数; 2) 使用一个函数, 但将子树类型写成一个字符类型的参数 (取值为 l 或 r), 其取值范围为一个字母表. 后一种方案由 彭子峰 同学提出.
b) 要想说明子树的子树, 需要处理 lrrl 这类的字符串. 这涉及到字母表的正闭包.
c) 叶节点的子树缺乏定义, 这个还是不行, 需要引入一个空节点 ϕ \phi ϕ (phi, 不是 emptyset), 它有吸收作用. 即该节点的左、右子树都是它自己.

1. 字母表

我们先来定义字母表、字母表的闭包.

Definition 11. An alphabet Σ \Sigma Σ is a set of characters.

常见的字母表包括: Σ = { 0 , 1 } \Sigma = \{0, 1\} Σ={0,1}, Σ = { a , … , z } \Sigma = \{\mathrm{a}, \dots, \mathrm{z}\} Σ={a,,z}. 我们这里需要的是 Σ = { l , r } \Sigma = \{\mathrm{l}, \mathrm{r}\} Σ={l,r}, 其中 l 表示左, r 表示右. 字母在式子里写成 mathrm 格式,表示常量.

字母表的正闭包定义如下:
Definition 12. The positive closure of alphabet Σ \Sigma Σ is given by Σ + = Σ 1 ∪ Σ 2 ∪ . . . \Sigma^+ = \Sigma^1 \cup \Sigma^2 \cup ... Σ+=Σ1Σ2....

如果 Σ = { 0 , 1 } \Sigma = \{0, 1\} Σ={0,1}, 那么 Σ + = { 0 , 1 , 00 , 01 , 10 , 11 , 000 , …   } \Sigma^+ = \{0, 1, 00, 01, 10, 11, 000, \dots \} Σ+={0,1,00,01,10,11,000,}, 如果 Σ = { l , r } \Sigma = \{\mathrm{l}, \mathrm{r}\} Σ={l,r}, 那么 Σ + = { l , r , l l , l r , r l , r r , l l l , …   } \Sigma^+ = \{\mathrm{l}, \mathrm{r}, \mathrm{ll}, \mathrm{lr}, \mathrm{rl}, \mathrm{rr}, \mathrm{lll}, \dots \} Σ+={l,r,ll,lr,rl,rr,lll,}.

还有个叫克林的哥们儿考虑空串 ε \varepsilon ε (varepsilon),硬生生把自己的名字加进来. 英文名怎么写我不知道, 直接翻译的.

字母表的克林闭包定义如下:
Definition 13. The Cling closure of alphabet Σ \Sigma Σ is given by Σ ∗ = Σ 0 ∪ Σ + = { ε } ∪ Σ + \Sigma^* = \Sigma^0 \cup \Sigma^+ = \{\varepsilon\} \cup \Sigma^+ Σ=Σ0Σ+={ε}Σ+.

字母表克林闭包的元素, 就称为字符串.

在某个状态 (可以是图或树的某个节点, 或有限状态自动机的某个节点) 下, 接受一个字符进行状态的跳转, 跳转函数定义为:
Definition 14. Let S \bm{S} S denote the set of states. The state transition function is given by f : S × Σ → S f: \bm{S} \times \Sigma \to \bm{S} f:S×ΣS.

写成一个定义有点牵强, 先这样吧.

为了描述在某个状态接受字符串的跳转, 可定义跳转函数为
Definition 15. Let S \bm{S} S denote the set of states. The positive state transition function is given by f : S × Σ + → S f: \bm{S} \times \Sigma^+ \to \bm{S} f:S×Σ+S, where ∀ \forall s ∈ S s \in \bm{S} sS and a 1 a 2 … a k ∈ Σ + a_1 a_2 \dots a_k \in \Sigma^+ a1a2akΣ+, f ( s , a 1 a 2 … a k ) = f ( f ( s , a 1 ) , a 2 a 3 … a k ) f(s, a_1 a_2 \dots a_k) = f(f(s, a_1), a_2 a_3 \dots a_k) f(s,a1a2ak)=f(f(s,a1),a2a3ak).

即: 接受第 1 个字符跳转到一个状态, 再接受第 2 个字符继续跳转, 以此类推.

2. 二叉树

2.1 初始版本

Definition 16. Let Σ = { l , r } \Sigma = \{\mathrm{l}, \mathrm{r}\} Σ={l,r} be the alphbet and ϕ \phi ϕ be a null node. A binary tree is a triple T = ( V , r , c ) T = (\bm{V}, r, c) T=(V,r,c), where V = { v 1 , … , v n } \bm{V} = \{v_1, \dots, v_n\} V={v1,,vn} is the set of nodes, r ∈ V r \in \bm{V} rV is the root, and c : V ∪ { ϕ } × Σ + → V ∪ { ϕ } c: \bm{V} \cup \{\phi\} \times \Sigma^+ \to \bm{V} \cup \{\phi\} c:V{ϕ}×Σ+V{ϕ} satisfying
a) c ( ϕ , l ) = c ( ϕ , r ) = ϕ c(\phi, \mathrm{l}) = c(\phi, \mathrm{r}) = \phi c(ϕ,l)=c(ϕ,r)=ϕ;
b) ∀ v ∈ V ∖ { r } \forall v \in \bm{V} \setminus \{r\} vV{r}, ∃ ! \exists ! ! s ∈ Σ + s \in \Sigma^+ sΣ+ st. c ( r , s ) = v c(r, s) = v c(r,s)=v;
c) ∀ v ∈ V , a ∈ Σ \forall v \in \bm{V}, a \in \Sigma vV,aΣ, c ( v , a ) ≠ r c(v, a) \neq r c(v,a)=r.

说明:
a) 我现在不清楚条件 a) 是否冗余, 好像可以从 b) 和 c) 推导出;
b) 条件 b) 表示从根节点可到达任意其它正常节点, 且路径唯一;
c) 条件 c) 表示根节点没有父节点.
d) 从条件 b) 和 c) 可以推导出 V \bm{V} V 中节点没有环, 可写为: Property 1: ∀ v ∈ V \forall v \in \bm{V} vV, ∄ s ∈ Σ + \not\exists s \in \Sigma^+ sΣ+ st. c ( v , s ) = v c(v, s) = v c(v,s)=v. 这里 ∄ \not\exists 为 not exists.
e) 上一条可以写成单独的一条性质 Property. 在理论体系中, 哪些内容写进定义, 哪些内容写成性质 (Propertyy)、定理 (Theorem)、命题 (Proposition), 既与内容本身有关, 也与研究者的个人喜好有关.
d) ! 表示 ”不“.
e) Σ \Sigma Σ ϕ \phi ϕ 是常量, 与具体的哪棵二叉树无关, 因此未把它们作为单独的元组.

习题 9. 考虑 ϕ \phi ϕ, 重新写 Definition 7 以解决其存在的问题, 见其讨论 d).

2.2 打磨版本

同学们终于肯跟我讨论了, 而且指出了前面定义的若干问题. 是时候展示真正的实力了!

Definition 17. Let Σ = { l , r } \Sigma = \{\mathrm{l}, \mathrm{r}\} Σ={l,r} be the alphbet and ϕ \phi ϕ be a null node. A binary tree is a triple T = ( V , r , c ) T = (\bm{V}, r, c) T=(V,r,c), where V = { v 1 , … , v n } \bm{V} = \{v_1, \dots, v_n\} V={v1,,vn} is the set of nodes, r ∈ V r \in \bm{V} rV is the root, and c : V ∪ { ϕ } × Σ ∗ → V ∪ { ϕ } c: \bm{V} \cup \{\phi\} \times \Sigma^* \to \bm{V} \cup \{\phi\} c:V{ϕ}×ΣV{ϕ} satisfying
∀ v ∈ V \forall v \in \bm{V} vV, ∃ ! \exists ! ! s ∈ Σ ∗ s \in \Sigma^* sΣ st. c ( r , s ) = v c(r, s) = v c(r,s)=v.

说明:
a) Definition 16 中, a) 与 c) 都是冗余的.
b) 如果仅保留 Definition 16 中的 b), 会出现 bug. 反例: V = { r } \bm{V} = \{r\} V={r}, c ( r , l ) = c ( r , r ) = ϕ c(r, \mathrm{l}) = c(r, \mathrm{r}) = \phi c(r,l)=c(r,r)=ϕ, c ( ϕ , l ) = c ( ϕ , r ) = ϕ c(\phi, \mathrm{l}) = c(\phi, \mathrm{r}) = \phi c(ϕ,l)=c(ϕ,r)=ϕ. Definition 17 中的条件未单独考虑 r r r, 因此修复了该 bug.
c) c ( r , ε ) = r c(r, \varepsilon) = r c(r,ε)=r. 即从 r r r 读入空串到自己.

现在讨论该二叉树的几个性质:
第一, 二叉树的任何节点 (空节点除外) 不会有到自己的环.
Property 1. ∀ v ∈ V \forall v \in \bm{V} vV, ∄ s ∈ Σ + \not\exists s \in \Sigma^+ sΣ+ st. c ( v , s ) = v c(v, s) = v c(v,s)=v.
Proof. Suppose that ∃ v i ∈ V \exists v_i \in \bm{V} viV and s ′ ∈ Σ + s' \in \Sigma^+ sΣ+ st. c ( v i , s ′ ) = v i c(v_i, s') = v_i c(vi,s)=vi.
According to Definition 17, ∃ s 1 ∈ Σ ∗ \exists s_1 \in \Sigma^* s1Σ st. c ( r , s 1 ) = v i c(r, s_1) = v_i c(r,s1)=vi.
Consequentyly c ( r , s 1 s ′ ) = c ( c ( r , s 1 ) , s ′ ) = c ( v i , s ′ ) = v i c(r, s_1s') = c(c(r, s_1), s') = c(v_i, s') = v_i c(r,s1s)=c(c(r,s1),s)=c(vi,s)=vi, and s s s takes at least two values ( s 1 s_1 s1 and s 1 s ′ s_1s' s1s), making it not unique.
This contradition shows that the assumption does not hold.
The proof is finished.

第二, 空节点的左右孩子都是自己.
Property 1. c ( ϕ , l ) = c ( ϕ , r ) = ϕ c(\phi, \mathrm{l}) = c(\phi, \mathrm{r}) = \phi c(ϕ,l)=c(ϕ,r)=ϕ.
Proof. Given any s = a 1 a 2 … a n + 1 ∈ Σ ∗ s = a_1 a_2 \dots a_{n+1} \in \Sigma^* s=a1a2an+1Σ, we consider c ( r , s ) c(r, s) c(r,s). Let the path corresponding to the calculation of c ( r , s ) c(r, s) c(r,s) be v 0 ′ v 1 ′ … v n + 1 ′ v_0' v_1' \dots v_{n+1}' v0v1vn+1 where v 0 ′ = r v_0' = r v0=r. Since ∣ V ∪ { ϕ } ∣ = n + 1 |\bm{V} \cup \{\phi\}| = n + 1 V{ϕ}=n+1, according to the Pigeon Cage Principle (鸽笼原理), there must ∃ \exists 0 ≤ i < j ≤ n + 1 0 \leq i < j \leq n + 1 0i<jn+1 st. v i ′ = v j ′ v_i' = v_j' vi=vj. In other words, v i ′ … v j ′ v_i' \dots v_j' vivj is a loop.
According to Property 1, v i ′ ∉ V v_i' \not\in \bm{V} viV, hence v i ′ = v j ′ = ϕ v_i' = v_j' = \phi vi=vj=ϕ.
Now assume that ∃ i < k < j \exists i < k < j i<k<j st. v k ′ ∈ V v_k' \in \bm{V} vkV. We have c ( r , a 1 a 2 … a k ) = v k ′ c(r, a_1 a_2 \dots a_k) = v_k' c(r,a1a2ak)=vk, and c ( r , a 1 a 2 … a j a i + 1 a i + 2 … a k ) = v k ′ c(r, a_1 a_2 \dots a_j a_{i+1} a_{i + 2} \dots a_k) = v_k' c(r,a1a2ajai+1ai+2ak)=vk, making the path from r r r to v k ′ v_k' vk not unique.
Hence the assumption does not hold, and v i ′ = v i + 1 ′ = ⋯ = v j ′ = ϕ v_i' = v_{i + 1}' = \dots = v_j' = \phi vi=vi+1==vj=ϕ.
In other words, any character takes ϕ \phi ϕ to itself.
This completes the proof.

说明:
a) 鸽笼原理: n + 1 n + 1 n+1 只鸽子飞进 n n n 个鸽笼, 至少有两个鸽子在同一个笼子里. 这是组合数学中重要的定理.
b) 这里用到了有穷状态自动机 (Finite state automata) 的知识. 从任一节点 (状态), 读入一个字符, 到达下一个节点. 这里的 ϕ \phi ϕ 被称为 陷井状态.

未完待续.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值