什么是计算节点?

gli*_*ard -2 c#

我知道这可能是一个非常少年的问题,但我正在学习C#中的链表,并且他们不断引用节点,我在直观的层面上对它有所了解,但我从来没有得到关于节点究竟是什么的正式解释是,特别是在这种情况下,有人可以给我一个关于中等简单英语节点定义的概述吗?

我读过这个:https://msdn.microsoft.com/en-us/library/microsoft.computecluster.node(v=vs.85).aspx但它没有多大帮助,因为它使用了其他概念/行话我还不太明白.

谢谢!

Eri*_*ert 9

获得白板.

画一堆盒子.

用线连接它们.

也许在盒子和线条上放一些标签.

也许在线上放一些箭头.

你绘制的内容称为"图形".图形由节点(框)和将它们连接在一起的组成.节点有时也称为"顶点".

几乎表示数据的每个问题都会减少到某种图形.

你想找到城市之间的最佳路线吗?制作一个图表,其中节点是城市,边缘是道路,问题是"这两个节点之间边缘的最短路径是什么?"

您想设计一个数据中心吗?将其设计为图形,其中节点是计算机,边缘是连接它们的网络电缆.

等等.

链表只是一个非常非常非常简单的图表.链表只是一个图表,其中:

  • 每个链表都有一个名为"empty"的节点,或者具有零输出边的"null".
  • 链表中的每个非空节点都有一个传出边
  • 链表中的一个节点只有零个入局边
  • 从节点到自身没有路径.(AKA"非循环")

所以

1 --->  2 ---->   3 ---->   empty
Run Code Online (Sandbox Code Playgroud)

是一个链接列表,其中1,2,3,空是节点,边缘由箭头表示.请注意,这符合链表的定义; empty没有传出箭头,1没有传入箭头,每个其他节点有一个传出箭头和一个传入箭头.

现在想象一下放宽链表的条件.

一个非循环图,其中只有一个节点具有零输入边(称为根),而每个其他节点只有一个输入边称为"树".每个链表都是一棵树,但不是每棵树都是一个链表:

   1 
 /   \
 |   |
 v   v
 2   3
Run Code Online (Sandbox Code Playgroud)

这是一棵树,但不是一个链表.

如果我们考虑没有周期的图,但也没有限制我们可以添加的边,那么我们有一个有向无环图或DAG.每棵树都是DAG; 不是每个DAG都是树.例如:

 1         2 --->  3   <----  4
Run Code Online (Sandbox Code Playgroud)

是DAG,但不是链表或树.

等等.图论是一个巨大的学科,是计算机科学的基础.就像我说的那样,表示数据的几乎所有问题都可以被视为某种图形,因此"节点"的概念在编程中无处不在.

  • @glitchwizard:如果你要成为一名程序员,那么习惯于在它们之间绘制线条; 这是一项基本技能! (3认同)