首页 > 编程知识 正文

二分法和牛顿法,邻接矩阵

时间:2023-05-03 14:38:52 阅读:17662 作者:1809

前方星前方星是边集合排列,简单来说,是用于存储树形状的图表(类似二叉树)这一数据。 这个数组用于计算多个数字之间的上下级关系,可以制作树。

就像下节课的二叉树一样。

a是这棵树的。 起点? 称为根节点,接着像h、e、f、g这样位于末端的节点称为叶节点。 然后,如果可以连接两个点,则上一点是父节点下一点是子节点。 a是所有节点的父节点。 (在这里自己也认为是自己的父节点。

然后前方的星星拿来保存这棵树。 例如,输入:

1 2

2 3

3 4

1 3

4 1

1 5

4 5

然后将各行前面的数作为后面数的母节点。 那样,我们就可以用纸画一条线的数量。 使用前方的星星,首先保存并排序上面的所有点,然后得到。

编号: 1 2 3 4 5 6 7

起点u: 1 1 1 2 3 4 4

终点v: 2 3 5 3 4 1 5

也就是说,主要对上一个父节点的大小进行排序,对子节点进行排序。

创建head数组以存储父节点的位置,并存储len数组以使父节点的“长度”为:

head[1]=1 len[1]=3

(这意味着第一个父节点(根节点)位于第一个位置,然后三个连续数组依赖于第一个父节点。 与下述相同)

head[2]=4 len[2]=1

head[3]=5 len[3]=1

head[4]=6 len[4]=2

这样,可以在多个数组中创建模型树,并根据每个节点的位置来确定依赖关系。 这样对待叫做前锋明星。 这个建模很容易理解,但是有必须进行排序的缺点,即使使用较快的列也需要时间,可能会因大量的数据而超时,所以使用了链式前向明星。

现在说链式前向星链式前向星,不需要简单排序,在保存的同时又建造了树。

让我们先构建一个结构:

结构边缘{

下一步,到,w;

(}k[100];

其中k[i].to表示第I边的终点,k[i].next表示与I相同的父节点的下一点,k[i].w是第I边的权重。 前面的两个可能很难理解,请看下面的例子。

是的。 同时还有head序列。

相同的是对于上面组的数据:

1 2

2 3

3 4

1 3

4 1

1 5

4 5

保存后得到了以下数据。

k[0].to=2; k[0].next=-1; head[1]=0; 首次输入

k[1].to=3; k[1].next=-1; head[2]=1;

k[2].to=4; k[2],next=-1; head[3]=2;

k[3].to=3; k[3].next=0; head[1]=3; 第四次输入

k[4].to=1; k[4].next=-1; head[4]=4;

k[5].to=5; k[5].next=3; head[1]=5;

k[6].to=5; k[6].next=4; head[4]=6;

说明一下里面,首先k[i]其实是第几组的数据,这应该很简单。 但是,head[i]不同,存储head的位置是[]的中间位置,即如果head[a]=b,则是第b次输入,母节点是a。

to表示后面的点。 也就是说,在第I次输入时,子节点为to。 next来看看有没有和我父母节点一样的同志。 如果没有,则用-1表示,如果有,则说是第几次输入。 这里以第一次输入和第四次输入为例。 (在这里,你可能会注意到I是从0开始的深处) () )。

第一次的时候很容易输入。

k[0].to=2; k[0].next=-1; head[1]=0;

然后在第四次输入的时候,首先k[3].to=3,这个没关系,然后我先判断实际上head[1]是否是-1(我忘了,这里next和head都先初始化到-1里面)。 如果为-1,则与前面一样原样保存即可,否则k[i].next=head[1],表示同一父节点下还有另一点,然后用head[1]=3进行覆盖是很重要的(例如

然后逆序解读就ok了。 但是,请注意,如果不对上述数据进行重新处理,则实际上只能找到数据的子节点。 例如,对于4,我只能通过head[4]返回以找到他的所有子节点,但不能找到他的父节点。 所以其实必须再处理一次。 下一篇例题一起说。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。