主要内容

이번역번역이지는최신내용을담고담고않습니다않습니다。최신최신내용을영문영문으로여기를클릭클릭

유방향그래프와무방향그래프

그래프란?

그래프는관계를나타내는노드간선으로구성된모음입니다。

  • 노드는대응하는객체를나타내는정점입니다。

  • 간선은객체사이를잇는연결입니다。

  • 그래프간선은경우에따라노드사이를잇는각연결의(또는또는다른특성(属性))를나타내는가중치를갖습니다。

예를들어,그래프를사용하여소셜네트워크에서친구친구를모델링할수그래프노드는사람이고,간선은친구관계를。그래프는기본적으로실제와상황에되므로,사용자는그래프를사용하여다양한시스템을을할수예를들면다음과같습니다。

  • 웹페이지링크 - 그래프노드는웹페이지이고,간선간선페이지간하이퍼링크를를。

  • 공항,그래프노드는공항이고,간선은공항간항공편을나타냅니다。

马铃薯®에서图形함수와dig함수는무방향무방향그래프와와그래프를나타내는내는객체를생성

  • 무방향그래프(无向图)는방향이없는간선을갖습니다。간선은양방향관계를나타내며,각간선은양방향으로진행할수있습니다。다음그림은3개의노드와3개의간선이있는간단한무방향그래프를보여줍니다。

    显示无方向边的无向图的一种图。

  • 유방향유방향(定向图)는방향이있는간선을갖습니다。간선은단방향관계를나타내며,각간선은한방향으로만진행할수있습니다。다음그림은3개의노드와2개의간선이있는간단한유방향그래프를보여줍니다。

    绘制以单向边缘显示有向图的图。

그래프그림에나와있는간선의한위치,길이,방향은일반적으로가지지않습니다。다시말해서,기본구조를변경하지않는경우에한해,노드를재배열하거나간선을왜곡하여동일한그래프를다양한방법으로시각화할수있습니다。

자가루프와다중그래프

图形dig를사용하여만든그래프는하나이상의자가루프를가질수수。자가루프란노드를그에게연결하는간선입니다。또한그래프는소스노드와타깃노드가같은여러개의간선가질수수,이러한그래프그래프다중그래프라고합니다。다중그래프는가루프를포함할수도있고포함하지않을수도있습니다있습니다。

MATLAB의그래프알고리즘함수에서는,하나의자가루프를갖는노드가포함된그래프는다중그래프로보지않습니다。반면,그래프에여러개의자가루프를갖는노드가있는있는이그래프는다중그래프입니다。

예를들어,다음그림에자가루프가있는무방향다중그래프가있습니다。노드一는세개의자가루프를갖는반면,노드C는하나의자가루프를갖습니다。이그래프는다음세가지조건을가지고있는데,이중하나라도충족하면다중그래프가됩니다。

  • 노드a는3개의가루프루프갖습니다。

  • 노드a와b사이에는5개의이있습니다。

  • 노드와C사이에는2개의간선이있습니다。

绘制多层纸。连接节点A到节点B的多个边缘,节点A也具有若干自我循环。

어떤그래프가다중그래프인지파악하려면ismultigraph함수를사용하십시오。

그래프만들기

그래프를만드는기본적인방법인접행렬이나간선간선사용하는이있습니다것이이있습니다。

인접행렬

그래프에서정보를나타내는가지방법은정사각인접행렬(邻接矩阵)을사용하는하는것。인접행렬의0이아닌항목은두노드간을나타내고,항목의값은의가중치를를。인접행렬의대각선요소는일반으로으로0이지만,0이아닌아닌대각선요소자가루프,또는간선이자기자신에에되는노드를나타냅니다나타냅니다。

  • 图形를사용하여하여무방향그래프를생성할경우인접행렬은대칭대칭어야어야어야어야어야어야실제로,행렬은반복을피하기위해행렬인경우가많습니다。인접인접행렬의상부상부삼각또는하부사용용하여무방향무방향를생성图(a,'上')또는图(a,'较低')를사용하십시오。

  • dig를사용하여유방향그래프를생성할경우인접행렬은대칭행렬일필요가없습니다。

  • 대규모대규모의의,인접행렬은0을많이포함포함,대개희소행렬입니다。

  • 다중그래프는인접행렬로생성할수없습니다。

예를들어,다음과같은무방향그래프를살펴보겠습니다。

绘图显示具有三个节点和三个边缘的无向图。边缘AB的重量为1,Ac的重量为2,并且BC的重量为3。

이그래프는아래와같은인접행렬로표현될수있습니다。

0. 1 2 1 0. 3. 2 3. 0.

Matlab에서그래프를생성하려면다음입력하십시오。

a = [0 1 2;1 0 3;2 3 0];node_names = {'一种''B''C'};g =图(a,node_names)
G = graph with properties: Edges: [3×2 table] Nodes: [3×1 table]

图形함수나dig함수를사용하면인접사용행렬을그래프를를생성할있습니다있습니다있습니다。또는邻接함수를사용하여하여그래프가중또는또는가중희소인접행렬을구할수도있습니다。

간선목록

그래프에정보정보를나타내는또다른방법은모든간선나열하는것것것나열하는것것

예를들어,동일한무방향그래프를。

绘图显示具有三个节点和三个边缘的无向图。边缘AB的重量为1,Ac的重量为2,并且BC的重量为3。

이제,다음간선목록으로그래프를나타냅니다。

边缘重量 一种 B. 一种 C 1 2 B. C 3.

간선목록을통해그래프가3개의나열된간선으로된3개의고유한노드一种B.C를가진다는것을쉽게할할있습니다있습니다。그래프에연결되지않은노드가있는경우,이러한노드는노드는간선목록에서수없으며별도로지정해야해야해야찾을수없으며별도로별도로해야해야

MATLAB에서간선목록은열을기준으로소스노드와타깃노드로노드로됩니다。이그래프그래프경우간선방향(소스에서타깃으로의방향이하지만하지만,무방향그래프의에는소스노드타깃노드를서로교환할있습니다수있습니다있습니다있습니다있습니다있습니다있습니다있습니다수수간선목록을사용하여이그래프를생성하는한가지방법방법은소스,타깃타깃,가중치에별도입력을사용하는하는것것것것것

source_nodes = {'一种''一种''B'};target_nodes = {'B''C''C'};Edge_weights = [1 2 3];g = graph(source_nodes,target_nodes,Edge_weights);

图形dig는모두간선목록으로부터단순그래프나다중그래프를생성하는것을허용합니다。그래프G를생성한후에는명령G.Edges를사용하여하여간선과간선간선을확인할수수G.Edges무방향그래프의경우,더작은인덱스를갖는노드는소스노드로나열되고더큰인덱스를갖는노드는타깃노드로나열됩니다。

图形dig의기본구현은희소행렬종속되므로,여러여러비용이동일하게적용됩니다。빈그래프를만들고노드와간선을반복해서가하는하는보다앞에서언급한방법하나사용하여3요소쌍(来源、目标、重量)에서그래프를한번에하는것이더빠릅니다。최상의성능을구현하려면图形digaddnodermedge.rmnode.의호출횟수를최소하십시오하십시오。

그래프노드id.

기본적으로,图形dig를사용하여만든그래프에포함된모든노드에는번호가지정됩니다。따라서언제든지숫자형노드인덱스를사용하여노드를참조할수있습니다。

또한,그래프가노드이름을가지는경우(즉,G.Nodes.가변수名称을을하는경우)해당이름을사용하여그래프노드노드를참조수있습니다수。즉,그래프에서명명된노드해당해당인덱스나이름으로으로참조할수수름으로참조참조수수예를들어,노드1'一种'라고할수있습니다。

노드ID라는용어는노드식별의두가지측면을모두내포합니다。노드ID는노드인덱스와노드이름을모두나타냅니다。

편의를위해,MATLAB은사용자가대부분의그래프함수를호출할때사용하는노드ID의유형을기억합니다。따라서,노드인덱스로그래프의노드를참조하는경우대부분의그래프함수는노드인덱스로노드를참조하는숫자형답을반환합니다。

a = [0 1 1 0;1 0 1 0;1 1 0 1;0 0 1 0];g =图表(a,{'一种''B''C''D'});p = shortestpath(g,1,4)
P = 1 3 4

그러나,노드이름으로노드참조하는경우대부분의함수는노드이름(문자형벡터로구성된배열또는또는형배열에포함됨을반환반환하는을을반환반환。

p1 = shortestpath(g,'一种''D'
P1 = 1×3 cell array {'a'} {'c'} {'d'}

FindNode.를사용하여지정된노드이름에에대한숫자형노드노드를구할수있습니다반대로,지정된숫자형노드id에에대해서g.nodes.name.의요소를참조하여대응되는노드이름을확인할수있습니다。

기존그래프를수정하거나쿼리하기

图形객체나dig객체를생성한후에는다양한함수를사용하여그래프구조를수정하거나그래프에포함된노드개수나간선개수를확인할수있습니다。다음표에는图形객체와dig객체객체수정하거나쿼리하는사용할수있는일부가나와나와。

그래프에하나이상의간선을추가합니다。

rmedge.

그래프에서하나이상의간선을제거합니다。

addnode

그래프에하나이상의노드를추가합니다。

rmnode.

그래프에서하나이상의노드를제거합니다。

FindNode.

그래프에서특정노드를찾습니다。

findedge

그래프에서특정간선을찾습니다。

numnodes.

그래프에포함된노드개수를구합니다。

numedges.

그래프에포함된간선개수를구합니다。

edgecount.

지정지정노드사이의간선개수를구합니다。

flipedge

유방향그래프간선의방향을반대로바꿉니다。

reordernodes

그래프에포함된노드의순서를바꿉니다。

子图

부분그래프를추출합니다。

일반적인몇가지그래프수정예제를보려면기존그래프의노드와간선수정하기항목을참조하십시오。

참고항목

|

관련항목