1.集合
1.1 集合 元素
定义:集合 是指由指定范围内的满足给定条件的所有对象聚集在一起构成,每一个对象称为这个集合的元素。
集合的数学符号:通常情况下,用带或者不带下标的大写英文字母表示集合:
A
,
B
,
C
…
A
1
,
B
1
,
C
1
…
A,B,C…A_1,B_1,C_1…
A,B,C…A1,B1,C1…
用带或者不带下标的小节英文字母表示元素:
a
,
b
,
c
…
a
1
,
b
1
,
c
1
…
a,b,c…a_1,b_1,c_1…
a,b,c…a1,b1,c1…
常用集合:自然数集合N,整数集合Z,有理数集合Q,实数集合R等
习题 1:
{
0
,
1
,
{
0
,
1
}
,
{
1
,
2
}
}
\large\{ \small 0 , 1 , \{ 0 , 1 \} , \{ 1 , 2 \}\large\}
{0,1,{0,1},{1,2}} 有几个元素? 机器学习中, 这类形式的集合有什么优点和缺点?
答:4个元素,分别是
0
,
1
,
{
0
,
1
}
,
{
1
,
2
}
0,1,\{0,1\},\{1,2\}
0,1,{0,1},{1,2}。
机器学习中,将一个集合看作是一个特征,使用这类形式的集合,个人认为优点是提高了数据集的可扩展性,不局限于单一的数据类型,比如该集合是指身高,但当集合的某元素只能获取到 {体重、年龄、性别} 等时,这三个元素的集合就成了新的元素。 缺点是提高了机器学习的复杂度。
1.2 基数
定义:集合A中的元素个数称为集合的基数,记为|A|。
基数有限、无限决定集合是有限集、无限集。
举例:
A
=
{
a
,
b
,
c
}
,
∣
A
∣
=
3
A=\{a,b,c\}, |A|=3
A={a,b,c},∣A∣=3
B
=
{
a
,
{
b
,
c
}
}
,
∣
B
∣
=
2
B=\{a,\{b,c\}\}, |B|=2
B={a,{b,c}},∣B∣=2
注意:
∣
∅
∣
=
0
,
∣
{
∅
}
∣
=
1
|\emptyset|=0, |\{\emptyset\}|=1
∣∅∣=0,∣{∅}∣=1
习题 2:
∅
\emptyset
∅的基数是多少?
{
∅
}
\{\emptyset \}
{∅} 呢?
答:
∣
∅
∣
=
0
,
∣
{
∅
}
∣
=
1
|\emptyset|=0, |\{\emptyset\}|=1
∣∅∣=0,∣{∅}∣=1
1.3笛卡尔积
(此处对元组的说法和参考博客有别)定义 序偶:两个元素按照一定的次序组成的二元组称为序偶,记作
⟨
x
,
y
⟩
\langle x,y\rangle
⟨x,y⟩,其中,x是第一元素,y是第二元素。
序偶不能看成是两个元素平等地在一个集合中:
如果
⟨
x
1
,
y
1
⟩
=
⟨
x
2
,
y
2
⟩
\langle x_1,y_1 \rangle = \langle x_2,y_2\rangle
⟨x1,y1⟩=⟨x2,y2⟩,那么
x
1
=
x
2
,
y
1
=
y
2
x_1=x_2,y_1=y_2
x1=x2,y1=y2
定义 笛卡尔积:设
A
,
B
A,B
A,B 是两个集合,称集合
A
×
B
=
{
⟨
x
,
y
⟩
∣
(
x
∈
A
)
⋀
(
y
∈
B
)
}
A \times B = \{\langle x,y\rangle|(x\in A) \bigwedge(y\in B)\}
A×B={⟨x,y⟩∣(x∈A)⋀(y∈B)} 为集合
A
,
B
A,B
A,B 的笛卡尔积。
举例:设集合
A
=
{
1
,
2
}
,
B
=
{
a
,
b
,
c
}
A=\{1,2\},B=\{a,b,c\}
A={1,2},B={a,b,c},笛卡尔积
A
×
B
=
{
⟨
1
,
a
⟩
,
⟨
1
,
b
⟩
,
⟨
1
,
c
⟩
,
⟨
2
,
a
⟩
,
⟨
2
,
b
⟩
,
⟨
2
,
c
⟩
}
A\times B = \{\langle1,a \rangle , \langle1,b\rangle,\langle 1,c\rangle,\langle2,a\rangle,\langle2,b\rangle,\langle 2,c \rangle\}
A×B={⟨1,a⟩,⟨1,b⟩,⟨1,c⟩,⟨2,a⟩,⟨2,b⟩,⟨2,c⟩}
B
×
A
=
{
⟨
a
,
1
⟩
,
⟨
a
,
2
⟩
,
⟨
b
,
1
⟩
,
⟨
b
,
2
⟩
,
⟨
c
,
1
⟩
,
⟨
c
,
2
⟩
}
B\times A = \{\langle a,1\rangle,\langle a,2\rangle,\langle b,1\rangle,\langle b,2\rangle,\langle c ,1\rangle, \langle c,2\rangle\}
B×A={⟨a,1⟩,⟨a,2⟩,⟨b,1⟩,⟨b,2⟩,⟨c,1⟩,⟨c,2⟩}
设集合
A
=
{
1
}
,
B
=
{
2
}
,
C
=
{
3
}
A=\{1\},B=\{2\},C=\{3\}
A={1},B={2},C={3},笛卡尔积
(
A
×
B
)
×
C
=
{
⟨
⟨
1
,
2
⟩
,
3
⟩
}
(A \times B) \times C = \{\langle\langle1,2\rangle,3\rangle\}
(A×B)×C={⟨⟨1,2⟩,3⟩}
A
×
(
B
×
C
)
=
{
⟨
1
,
⟨
2
,
3
⟩
⟩
}
A \times (B \times C) = \{\langle1,\langle2,3\rangle\rangle\}
A×(B×C)={⟨1,⟨2,3⟩⟩}
可以看出,笛卡尔积不满足交换律,结合律。
1.4幂集
定义:设A为任意集合,把A的所有不同子集构成的集合称为A的幂集,记作
P
(
A
)
P(A)
P(A),即
P
(
A
)
=
{
x
∣
x
⊆
A
}
P(A) = \{x | x \subseteq A\}
P(A)={x∣x⊆A}
举例:
设
A
=
{
a
,
b
,
c
}
,
B
=
{
a
,
{
b
,
c
}
}
A=\{a,b,c\}, B=\{a,\{b,c\}\}
A={a,b,c},B={a,{b,c}}求它们的幂集
P
(
A
)
P(A)
P(A)和
P
(
B
)
P(B)
P(B)
解:
P
(
A
)
=
{
∅
,
{
a
}
,
{
b
}
,
{
c
}
,
{
a
,
b
}
,
{
b
,
c
}
,
{
a
,
c
}
,
{
a
,
b
,
c
}
}
P(A)=\large\{\emptyset , \left\{a\right\}, \left\{b\right\}, \left\{c\right\}, \left\{a,b\right\}, \left\{b,c\right\}, \left\{a,c\right\}, \left\{a,b,c\right\}\large\}
P(A)={∅,{a},{b},{c},{a,b},{b,c},{a,c},{a,b,c}}
P
(
B
)
=
{
∅
,
{
a
}
,
{
b
,
c
}
,
{
{
a
}
,
{
b
,
c
}
}
}
P(B)=\large\{\emptyset ,\left\{a\right\}, \left\{b,c\right\}, \left\{\small\{a\},\{b,c\}\right\}\large\}
P(B)={∅,{a},{b,c},{{a},{b,c}}}
2.二元关系
定义:设
A
,
B
A,B
A,B为两个非空集合,称
A
×
B
A\times B
A×B的任意子集
R
R
R为从
A
A
A到
B
B
B的一个二元关系。其中,
A
A
A称为关系
R
R
R的前域,
B
B
B称为关系
R
R
R的后域。如果
A
=
B
A=B
A=B,则称
R
R
R为
A
A
A上的一个二元关系。
举例:令
A
A
A为某大学生所有学生集合,
B
B
B表示该大学开设所有课程集合,则
A
×
B
A\times B
A×B可以表示该校学生选课的所有可能情况。而真正的选课情况(如{学生
a
1
a_1
a1选了课程
b
1
b_1
b1…学生
a
i
a_i
ai选了课程
b
j
b_j
bj}这一个集合)则会是
A
×
B
A\times B
A×B中的某一个子集。
在计算机中,关系可以通过矩阵表示。假设 A , B A,B A,B两个集合的元素 a i , b j a_i,b_j ai,bj之间满足条件,则在关系矩阵 m i j m_{ij} mij中置对应位置为1,这样的矩阵则能完整表示一个二元关系。
3.函数
需要注意的是,函数是特殊的关系,如函数 y = 1 − x 2 y=\sqrt {1-x^2} y=1−x2,定义域为 D D D,值域为 V V V,对于任意 x x x能找到唯一对应的 y y y,同时,关系为 D × V D\times V D×V的一个子集。但是关系不一定是函数,如 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1不是函数,但由圆上的所有点(元素)构成此关系,为 R × R R\times R R×R的一个子集。
习题 5:多标签学习中, 输出为一个向量,相应的学习器算不算函数呢?
答:多标签学习相应学习器算作函数。理解函数的输入和输出一一对应的关系。学习器输出的一个维特征向量,是标签的集合,是一个唯一的结果,除非输出的是多个向量。
4.元组
(此处对元组的说法和参考博客有别) 用面向对象的方法理解,k个属性即k元组。
习题 6: 元组只能表达对象的数据部分, 还是可以完整地表达 (既包括数据, 也包括方法/函数)? 用一个具体的程序来说明.
答:元组可以表达完整对象。
举例:现有外星的编码和地球的字符编码,恰好都是同一个编码结构,现在已知字符的整形值和字符,采用字符和其整形值比较的方法来判断是否属于地球的字符编码。
#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
string isASCII(int num, char chr)
{
if (num - (int)chr == 0)
{
return string("earth");
}
return string("Mars");
}
int main()
{
//4元组,依次是整形值,英文字母,映射函数,是否是地球人的ASC码
//给定一组数据,是否是地球人的asc码暂定火星语
tuple<int, char, string(*)(int, char), string> t((int)'a', 'a', isASCII, "Mars");
//获取对象的整体判断
get<3>(t) = get<2>(t)(get<0>(t), get<1>(t));
cout << (int)get<0>(t) << "\t" << get<1>(t) << "\t"\
<< get<3>(t) <<endl;
return 0;
}
疑问:前有概念:序偶是二元组。在机器学习中,是否会关注元组中特征的顺序?多个非空集的笛卡尔积是否可以用来直接代表多元组的可能?
最好懂的分割线 以下内容正在研究学习
习题 7:定义二叉树 (待完善)
习题 8:定义带权无向图
a weighted undirected graphs is a tuple
G
w
=
(
V
,
w
)
G_w = (V,w)
Gw=(V,w), where
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V = \{v_1, v_2,…,v_n\}
V={v1,v2,…,vn} is the set of nodes, and
w
:
V
×
V
→
R
+
⋃
{
0
}
w:V \times V \to R^+\bigcup \{0\}
w:V×V→R+⋃{0} is the edge weight function,
∀
⟨
v
i
,
v
j
⟩
∈
V
×
V
\forall \langle v_i,v_j\rangle \in V\times V
∀⟨vi,vj⟩∈V×V,
w
(
v
i
,
v
j
)
=
w
(
v
j
,
v
i
)
w(v_i,v_j)=w(v_j,v_i)
w(vi,vj)=w(vj,vi)
习题 9:考虑
ϕ
\phi
ϕ, 重新写 Definition 6 以解决其存在的问题, 见其讨论 d).
在definition 6 基础上重新定义树
Σ
=
{
u
}
\Sigma=\{u\}
Σ={u},
T
=
{
V
,
r
,
p
}
T=\{V,r,p\}
T={V,r,p},
V
=
{
v
1
,
v
2
,
…
,
v
3
}
V=\{v_1, v_2,…,v_3\}
V={v1,v2,…,v3},
r
∈
V
r\in V
r∈V,
p
:
V
⋃
{
ϕ
}
×
Σ
∗
→
V
⋃
{
ϕ
}
p:V\bigcup\{\phi\} \times \Sigma^* \to V\bigcup \{\phi\}
p:V⋃{ϕ}×Σ∗→V⋃{ϕ}
p
(
v
,
ϵ
)
=
v
p(v,\epsilon)=v
p(v,ϵ)=v
∀
v
∈
V
,
∃
1
s
∈
Σ
∗
,
s
t
.
p
(
v
,
s
)
=
r
\forall v \in V, \exists1 s \in \Sigma^* ,st.p(v,s)=r
∀v∈V,∃1s∈Σ∗,st.p(v,s)=r
习题3.1:模仿自动机的样子来重新定义二叉树.
T
=
(
Σ
,
V
,
Q
,
r
,
ϕ
,
c
)
T=(\Sigma, V, Q, r, \phi, c)
T=(Σ,V,Q,r,ϕ,c) where
a)
Σ
=
{
l
,
r
}
\Sigma = \{\mathrm l, \mathrm r\}
Σ={l,r}is the alphabet,
b)
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V=\{v_1, v_2,…,v_n\}
V={v1,v2,…,vn} is the set of nodes,
c)
Q
=
V
⋃
{
ϕ
}
Q = V \bigcup \{\phi \}
Q=V⋃{ϕ} is the set of states, and
ϕ
\phi
ϕ is null node
d)
r
∈
V
r\in V
r∈V is the root node and start state,
e)
ϕ
\phi
ϕ is the special terminal state,
f)
c
:
Q
×
Σ
∗
→
Q
c:Q \times \Sigma^* \to Q
c:Q×Σ∗→Q is the transition function satisfying
∀
v
∈
V
,
∃
1
s
∈
Σ
∗
,
s
t
.
c
(
r
,
s
)
=
v
\forall v \in V, \exists 1 s \in \Sigma^*, st. c(r,s)=v
∀v∈V,∃1s∈Σ∗,st.c(r,s)=v.
习题3.2:模仿自动机的样子来重新定义树.
T
=
(
Σ
,
V
,
Q
,
r
,
ϕ
,
p
)
T=(\Sigma, V, Q, r, \phi, p)
T=(Σ,V,Q,r,ϕ,p) where
a)
Σ
=
{
u
}
\Sigma = \{\mathrm u\}
Σ={u}is the alphabet,
b)
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V=\{v_1, v_2,…,v_n\}
V={v1,v2,…,vn} is the set of nodes,meanwhile
V
V
V is the set of start states,
c)
Q
=
V
⋃
{
ϕ
}
Q = V \bigcup \{\phi \}
Q=V⋃{ϕ} is the set of states and
ϕ
\phi
ϕ is null node,
d)
r
∈
V
r\in V
r∈V is the root node,
e)
ϕ
\phi
ϕ is the special terminal state,
f)
p
:
Q
×
Σ
∗
→
Q
p:Q \times \Sigma^* \to Q
p:Q×Σ∗→Q is the transition function satisfying
∀
v
∈
V
,
∃
1
s
∈
Σ
∗
,
s
t
.
p
(
v
,
s
)
=
r
\forall v \in V, \exists1 s \in \Sigma^* ,st.p(v,s)=r
∀v∈V,∃1s∈Σ∗,st.p(v,s)=r