1. 图与网络
-
写出该无向图的邻接矩阵.
E = [ 0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 ] \mathbf{E} = \begin{bmatrix}0&1&1&1 \\ 1&0&1&0\\ 1&1&0&1\\ 1&0&1&0\end{bmatrix} E=⎣⎢⎢⎡0111101011011010⎦⎥⎥⎤ -
定义无向网络
Definition. A undirected net is a tuple G = ( V , w ) G = (\mathbf V, w) G=(V,w), where V \mathbf V V is the set of nodes, and w : V × V → R w: \mathbf{V} \times \mathbf{V} \to \mathbb{R} w:V×V→R is the weight function where w ( v i , v j ) w(v_i, v_j) w(vi,vj) is the weight of the edge ( v i , v j ) (v_i, v_j) (vi,vj), ∀ v i , v j ∈ V \forall v_i, v_j\in\mathbf{V} ∀vi,vj∈V, w(v_i, v_j) = w(v_j, v_i)$.
2. 树
- 自己画一棵树, 将其元组各部分写出来 (特别是函数 p p p).
元组各部分:
- V = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 , v 6 } \mathbf{V} = \{v_0, v_1, v_2, v_3, v_4, v_5, v_6\} V={v0,v1,v2,v3,v4,v5,v6}
- r = v 0 r = v_0 r=v0
- p ( v 0 ) = ϕ p(v_0)=\phi p(v0)=ϕ, p ( v 1 ) = p ( v 2 ) = p ( v 3 ) = v 0 p(v_1)=p(v_2)=p(v_3)=v_0 p(v1)=p(v2)=p(v3)=v0, p ( v 4 ) = v 1 p(v_4)=v_1 p(v4)=v1, p ( v 5 ) = p ( v 6 ) = v 3 p(v_5)=p(v_6)=v_3 p(v5)=p(v6)=v3
- 针对该树, 将代码中的变量值写出来 (特别是 parent 数组).
public class Tree {
int n; //节点数,即 v_0-v_{n-1}
int root; //根节点
int[] parent; //父节点
/**
* 构造一棵树, 第一个节点为根节点, 其余节点均为其直接子节点, 也均为叶节点.
*/
public Tree(int paraN) {
n = paraN;
parent = new int[n];
parent[0] = -1; // -1 即 \phi
}
}
n = 7;
root = 0;
parent[0] = -1;
parent[1] = 0;
parent[2] = 0;
parent[3] = 0;
parent[4] = 1;
parent[5] = 3;
parent[6] = 3;
3. m 叉树
- 画一棵三叉树, 并写出它的 child 数组.
child[7][3]:
[
1
2
3
4
−
1
−
1
−
1
−
1
−
1
5
6
−
1
−
1
−
1
−
1
−
1
−
1
−
1
−
1
−
1
−
1
]
\begin{bmatrix}1&2&3 \\ 4&-1&-1\\ -1&-1&-1\\ 5&6&-1\\ -1&-1&-1\\ -1&-1&-1\\ -1&-1&-1\end{bmatrix}
⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡14−15−1−1−12−1−16−1−1−13−1−1−1−1−1−1⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
-
按照 本贴 风格, 重新定义树. 提示: 还是应该定义 parent 函数, 字母表里面只有一个元素.
Let ϕ \phi ϕ be the empty node, a tree is a 4-tuple T T T = ( Σ , V , r , p ) (\Sigma,\mathbf V,r, p) (Σ,V,r,p), where
a) Σ \Sigma Σ is the alphabet, Σ = { a } \Sigma=\{a\} Σ={a};
b) r ∈ V r \in \mathbf V r∈V is the root;
c) p : V × Σ ∗ → V ∪ { ϕ } p:\mathbf V×\Sigma^*\rightarrow\mathbf V \cup \{\phi\} p:V×Σ∗→V∪{ϕ} is the transition function, satisfying ∀ v ∈ V \forall v\in\mathbf V ∀v∈V, ∃ ! \exists! ∃! s ∈ Σ ∗ s\in\Sigma^* s∈Σ∗ s.t. p ( v , s ) = r p(v,s)=r p(v,s)=r. -
根据图、树、 m m m-叉树的学习, 谈谈你对元组的理解.
在学习了使用元组来对图、树以及 m m m 叉树进行定义后,对元组的理解不再仅仅是数据库中的一条记录,python 语言中的一系列变量组成的不可变序列容器。构成元组的元素,可以是元素,可以是集合,还可以是函数。比如,在定义图的时候,它就是常见的二元组,其中 ( V , E ) (\mathbf{V}, \mathbf{E}) (V,E) 中的 V \mathbf{V} V 和 E \mathbf{E} E 分别为顶点和边的集合;在定义树的时候,其根节点以元素作为元组的组成部分,且引入了函数来描述节点间的关系。