计算机科学中的图是什么,它们的用途是什么?从外行的角度来看最好。
我已经阅读了维基百科的定义:
在计算机科学中,图是一种抽象数据类型,旨在从数学上实现图和超图概念。
图数据结构由一组有限的(可能是可变的)有序对集合(称为边或弧)组成,这些对对称为某些实体,称为节点或顶点。就像在数学中一样,边(x,y)被称为指向x或从x指向y。节点可以是图结构的一部分,也可以是由整数索引或引用表示的外部实体。
但我正在寻找一个不太正式,更容易理解的定义。
计算机科学中的图是什么,它们的用途是什么?从外行的角度来看最好。
我已经阅读了维基百科的定义:
在计算机科学中,图是一种抽象数据类型,旨在从数学上实现图和超图概念。
图数据结构由一组有限的(可能是可变的)有序对集合(称为边或弧)组成,这些对对称为某些实体,称为节点或顶点。就像在数学中一样,边(x,y)被称为指向x或从x指向y。节点可以是图结构的一部分,也可以是由整数索引或引用表示的外部实体。
但我正在寻找一个不太正式,更容易理解的定义。
Answers:
一个完美的外行例子就是Facebook。您,您的朋友及其朋友等的网络统称为社交图。
在此“图形”中,人们被认为是图形的节点,而边是友谊链接。
在Facebook中,朋友是双向关系(A是B的朋友=> B是A的朋友),因此该图是无向图。像Google+或Twitter这样的网络将被视为有向图,因为关系的方向在此具有含义。
所有这些图都称为循环图,因为节点之间的关系可以形成循环。一个家谱,在另一方面,是一种特殊的图形,其中除其他事项外,是非周期性因为不能在家谱relatioship周期。(由于它是有向的和非循环的,因此在技术上被称为有向非循环图(DAG))
这应该涵盖涉及图形的所有基本术语,因此现在您应该可以在该领域中继续学习其余材料。
A -> B -> C -> A
(如箭头的圆圈),乱伦刚给A -> B -> C
和A -> D -> C
(即菱形)。家谱中的一个循环需要时间旅行。
图形是计算机科学中最重要的数学概念之一。
您已经多次查看图表。想象一下,您正在乘飞机从一个城市飞往另一个城市。您不可避免地会在您面前的座椅口袋中找到航空公司的精美光面杂志。在该杂志的背面附近,您几乎总是可以找到一张地图,以圆圈的形式描绘出该航空公司提供服务的城市,而连接这些城市的航班则以曲线显示。那是一张图!以圆圈表示的城市是该图的节点,以曲线表示的航班是边缘。图只是具有节点和连接节点的边的事物。
您可以通过各种方式修饰这些简单的图形。当您查看该地图时,您不想只看到一堆圆和直线。那些城市有名字。标记这些城市将显示标记的图形。(您也可以标记边缘,例如1234号航班。)计算机科学通常将数据与节点(有时与边缘)相关联,但这只是标签的扩展。它仍然是一个标记图。如果您可以直接从城市A飞往城市B,但不能从城市B飞往城市A,则可以得到另一种装饰效果。一种明显的描绘方式是在连接城市的直线上画一个箭头,以描绘这种单向关系。现在您有了一个有向图。
链表,树,状态转换图以及许多其他计算机科学数据结构都是图的示例。这是一个非常强大的概念。
更好的问题是“图形不用于什么?”。在许多方面,计算机科学都是图的研究。
用外行的话来说,图是代表连接点的称为“节点”或“顶点”的任意抽象对象的集合。然后,它们通过“路径”或“边缘”连接。抽象数据类型“ Graph”是数学“ Graph”的实现。因此,基本上,您具有节点和边作为字段以及可以在其上执行的各种操作。例如,您可以向图的集合中添加一个新节点(取决于语言,它可以是列表或数组或其他结构)。然后,您可以将该节点链接到现有节点。操作还包括遍历图,检查两个节点是否共享一条边(已连接),从节点或边中检索值以及从图中删除节点或边。
就利用率而言,图在各处使用。网络特别大量地使用了它们,但是在人工智能,数据挖掘,游戏开发,地理信息学和许多其他学科中都可以找到它们。在正式的计算机科学中,他们看到了更多的用途,即作为一种表示状态的方式。
实际上,您可以表示为一组连接的任何内容都可以表示为图形,并通过该ADT以某种形式实现。
这是我制作的示例图形: