主要内容

。

有向および无向グラフ

グラフとは

グラフは“ノード”と“エッジ”のの合,关键词表します。

  • ノードはオブジェクトに対応する顶点です。

  • エッジはオブジェクト间のの合。

  • グラフエッジは重み重みは,ノード间の各结合の(またはまたはの属性)ををます。

これら,グラフのノードとの,グラフ内意味はます応じ,グラフを使异ますグラフで友友てモデルの友しモデルしたたししたとえばしたとししモデルしたとしててしたとし系てしたな意味异なりてしたてし异て応じ応じなて异定义定义応じ确なて异定义定义グラフ确なな异定义定义定义确确なな异异定义定义応じ确なな意味定义定义定义であり确ななのであり定义定义确确なの意味定义定义であり确ノードは人々であり,エッジは友人关键词ますグラフ物理的なな状况にグラフににためためををにますためなををできます。

  • Webページのリンク - グラフノードは网页ページで,エッジはページ间のハイパーリンク表します。

  • 空港 - グラフノードは空港で,エッジは空港间のフライトを表します。

马铃薯®では,关节图形と关节digを使用して有条学グラフ无向无向无向グラフとオブジェクトをををををををををを

  • 无向グラフのエッジには方向性がありません。エッジは“双方向” の关系を示します。つまり,各エッジでは両方向に行き来できます。次の図は,3つのノードと3つのエッジから成る简単な无向グラフを示しています。

    绘制显示与无方向的边缘的无向图。

  • 有向グラフ“一方向” の关系を示します。つまり,各エッジは一方向にのみ通行できます。次の図は,3つのノードと2つのエッジから成る简単な有向グラフを示しています。

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

通讯,グラフ図内にあるエッジ正式な位置,长长,向き向き意味はませませ。つまり,基本となるが変わらない限制,同じグラフでもノード再やエッジのによって,いくつやのによって,いくつかの表示が可ととます。

自己ループと多重グラフ

图形digを使用して作成されるグラフには,1つ以上の“自己ループ”(ノードをそのノード自体ににするエッジ)を含めることができます。また,同じ同じソースノードとターゲットノードをもつののエッジをグラフ含めることもできできできできできできできできグラフグラフグラフグラフももなグラフ“多重グラフ”と呼びます。多重グラフには,自然ループが含まれているももそうでない场ももありありあり

MATLABのグラフアルゴリズム关数においては,単一の自己ループをもつノードが含まれているグラフは多重グラフではありません。ただし,“复数の” 自己ループをもつノードが含まれているグラフは多重グラフです。

たとえば,以下の図は,自己ループをもつ无向多重グラフを示しています。ノード甲は3つ,ノードC ^は1つの自己ループをもっています。このグラフには次の3つの条件があり,いずれか1つだけでも多重グラフになります。

  • ノードaに3つの自己ループが。

  • ノードaとbの间に5つのエッジがある。

  • ノードaとcの间に2つのエッジがある。

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

特定のグラフが多重グラフかどうかを判定するには,关数ismultigraphを使用します。

グラフの作用成

グラフの主作物作物方法にに,邻接行列の使やリストの使ますます。

邻接行程

グラフグラフ内のの情情を表现方法の1つは,正方の“邻接行列”を使使内ですです邻接列内の非ゼロは2つのノード间のエッジ示し,要素の値はの重みをますます。邻接行列の要素ははゼロは,非非ゼロの対角要素要素“自己ループ”,すなわちエッジによってそれ自体に结合されているノードを示します。

  • 图形を使用して无向グラフを作成する场合,邻接行列は対称でなければなりません。実际には,缲り返しを避けるために行列はしばしば三角行列となります。邻接行列の上三角部分または下三角部分のみのみを使ってて无向作作作作者:するするに图(a,'上')または图(a,'较低')を使用します。

  • digを使使してグラフグラフするするませんませ场ませませありませませ作ありありませませ

  • 大规模なグラフのの合书,邻接行列には多重のが含まれ,通讯はスパース行。

  • 邻接行列から多元重を作物

たとえば,次の无向グラフについて考えてます。

绘图显示具有三个节点和三个边缘的无向图。边缘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 =图表与属性:边缘:[3×2表]节点:[3×1表]

关节图形または关数digあるいは,关关邻接行为からて,邻接行列からグラフをを。あるいは,关联邻接ををグラフて,既存のグラフに対して重みまたはのの邻接行。

エッジリスト

グラフグラフ内の情情もうもうもうつの法はことことことするもうもうすることことことことことするするするもうもうもうすることことことこと

たとえば,前记と同じ无向グラフについててみます。

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

ここで,グラフをエッジリストで表现ます

边缘重量 一种 B. 一种 C 1 2 B. C 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のエッジの顺序はソースノード(最初の列)によって,また2次的にはターゲットノード(2-番目の列)によって并べ替えられます。无向グラフの场合,インデックスが小さいほうのノードがソースノード,インデックスが大きいほうのノードがターゲットノードとしてリストされます。

图形digの基本的なな装はは行列基于てため,多重のの合出来に同等ののインデックスがかかりかかりかかり。空のグラフを作物しますてノードエッジエッジエッジ何何何度度とエッジを度度もしいくよりも,前述前述メソッドの1つを使使用して3要素のペア(源,目标,重量),图形digaddnode的rmedge.,およびrmnode.のの数量を最ますします。

グラフノードID

既定では,图形またはdigしたがって,数码の“ノードノード”によってノードをいつでも参照ますます。

ノード名をもつグラフの场合(つまり,G.Nodes.に変数名称が含まれる场合),グラフ内のノードを,その名前を使用して参照することもできます。したがって,グラフ内の名前付きノードはそのノードインデックスまたはノード名のいずれかで参照できます。たとえば,ノード1'一种'と呼ぶこともできます。

“ノードid”という用词に,ノードノードの识别におけるのの侧面が含まれていノード名のををををを指し指し指し指し名のををを指し指し

Matlabは便宜上,大多数のグラフ关键を际がにどちらのれいるかかかをてますかいますますますますい。,インデックスでノードを参照参照の応答応答を返します。

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单元阵列{ '一个'} { 'C'} { 'd'}

特定のノード名の数値によるノードIDを求めるにはFindNode.をを使用しし。逆逆,特价の码のノードに対応する名を确认するにはg.nodes.name.にインデックスを付けます。

既存既存のグラフのの変更または

图形オブジェクトやdig作者:郝晓晖,王莹,王莹,王莹,王莹,王莹,郧阳图形オブジェクトやdigオブジェクトの変更またはクエリに使用できる关数の一部を示します。

グラフに1つ以上のを追加加します

rmedge.

グラフから1つ以上のエッジを削除します

addnode的

グラフに1つ以上のを追加加します

rmnode.

グラフから1つ以上のノードを削除します

FindNode.

グラフ内の特价のノードを検出し

findedge

グラフ内の特价のエッジを検出し

numnodes.

グラフ内のノード数を検出します

numedges.

グラフ内のエッジ数号検出します

edgecount.

指定したノード间のの数号

flipedge

有向グラフのエッジの方向を反転します

reordernodes

グラフ内のノードの顺序を并べ替えます

子图

部分グラフを抽出します

一般的なグラフ変更のいくつか例は,既存既存グラフのノードノードとののを参照してください。

参考

|

关键词トピック