グラフの基本
グラフの定義
图G
これはとで構成され顶点集V
、边集E
G =(V、E)として表されます。ここで、V(G)はグラフGの頂点の有限の空でないセットを表し、E(G)はグラフGの頂点間の関係(エッジ)のセットを表します。 。V = {v1、v2、…、vn}の場合、|V|
グラフGで示します。これは、E = { {u、v} |u∈V、v∈V}と顶点的个数
も呼ばれ、グラフGを示します。注:線形テーブルは次のことができます。空のテーブルである場合、ツリーは空のツリーである場合がありますが、グラフを空にすることはできません。つまり、Vは空でないセットである必要があります。图G的阶
|E|
边的条数
無向グラフ、有向グラフ
Eが无向边
(省略形)边
の有限集合である場合、グラフGは无向图
です。エッジは、順序付けられていない頂点のペアです。ここで记为(v,w)或(w,v)
、(v,w)=(w,v)
v、wは頂点です。頂点wと頂点vが隣接している、エッジ(v、w)が頂点wとvに接続されている、またはエッジ(v、w)が頂点v、wに関連付けられていると言えます。
Eが向边
(とも呼ばれる)の弧
有限集合である場合、グラフGは有向图
です。アークは、順序付けられた頂点のペアです记为<v,w>
。ここで、v、wは頂点、vは、、弧尾
wは。と呼ばれ弧头
ます。<v、w>は、頂点vから頂点wへの円弧と呼ばれ、vもwに隣接しているか、wがvに隣接しています。<v,w> != <w,v>
単純なグラフ、複数のグラフ
頂点の次数、次数内、次数外
頂点と頂点の関係の説明
連結グラフ、強く連結されたグラフ
n個のノードが相互に接続されているため、接続されたグラフには少なくともn-1個のエッジがあり
ます。最も接続されていないグラフは、他のn-1個のノードが相互に接続され、最後のノードがまったく接続されていない場合です。
サブグラフ
生成されたサブグラフは、元の画像のすべてのポイントを含むサブグラフです。
接続されたコンポーネント
無向グラフを説明するために使用されます
強く接続されたコンポーネント
有向グラフの説明に使用されます
スパニングツリー
n個の頂点にはn-1個のエッジがあり、それ以上はループを形成します
生成林
エッジの重み、重み付きグラフ/ネット
いくつかの特別な形
グラフストレージ構造
- 隣接行列:配列によって実装されたシーケンシャルストレージ、高いスペースの複雑さO(n²)、まばらなグラフの保存には適していません
- 隣接リスト:有向グラフの次数を見つけるのは不便であり、頂点の削除とエッジの削除の時間計算量は高くなります
- クロスリンクリスト:有向グラフを格納します
- 隣接マルチテーブル:無向グラフの保存
隣接行列法
頂点の次数、次数内、および次数外を見つける方法
加重マップ:
パフォーマンス分析
隣接行列のプロパティ
行*列
隣接リスト
クロスリンクリスト方式
にのみ使用できます有向图
パフォーマンス分析
隣接マルチリスト
無向グラフの保存にのみ使用されます
要約する
グラフの操作
グラフにエッジがあるかどうかを判断します
無向グラフ:有向グラフ
:
ノードに隣接するグラフのすべてのエッジを一覧表示します
無向グラフ:有向グラフ
:
グラフに頂点を挿入
グラフの頂点を削除する
無向グラフ:有向グラフ
:
グラフにエッジを追加します
グラフで頂点xの最初の近傍を見つけます
無向グラフ:有向グラフ
:
グラフ内の頂点xの隣接点yを想定して、yを除く頂点xの次の隣接点の頂点番号を返します。yがxの最後の隣接点の場合は-1を返します。
無向グラフ:
グラフのエッジの重みを取得して設定します
グラフの走査
- 幅優先探索
- 深さ優先探索
幅優先探索
コード
トラバーサルシーケンスの変動性
アルゴリズムの改善
切断されたグラフの場合、すべてのノードをトラバースできないためです
複雑さの分析
幅優先スパニングツリー
幅優先の生成林
エクササイズ
深さ優先探索
アルゴリズムの改善
複雑さの分析
空間の複雑さ:
時間の複雑さ:
深さ優先スパニングツリー
深さ優先の生成林
グラフトラバーサルとグラフ接続
無向グラフ:有向グラフ
:
要約する
グラフの最小スパニングツリー(MST)
コンセプト
プリムアルゴリズム(プリム)
クラスカルアルゴリズム(クラスカル)
2つのアルゴリズムの比較
プリムアルゴリズムの実現アイデア
クラスカルアルゴリズムの実現アイデア
最短経路問題
BFSは、重み付けされていないグラフの単一ソースの最短経路を見つけます
BFSの実際の結果は、単一ソースの最短パス
です。短所:重み付けされていないグラフにのみ使用できます。
コード
ダイクストラのアルゴリズム
ステップ
- イニシャル:
- 最初のラウンド:
- 第2ラウンド:
- 第3ラウンド:
- 第4ラウンド:
配列情報の使い方
時間計算量
プリムアルゴリズムの実現アイデアの比較
負の加重加重グラフの場合
フロイドのアルゴリズム
ステップ
エクササイズ
解決できない問題
要約する
有向非巡回グラフ記述式
トポロジカルソート
AOVネット
コンセプト
コード
逆トポロジカルソート
クリティカルパス
AOEネット
コンセプト
すべてのイベントの最も早い発生時刻を見つけます
すべてのイベントの最新の発生時刻を検索します
すべてのアクティビティの最も早い発生時刻を見つけます
すべてのアクティビティの最新の発生時刻を検索します
すべてのアクティビティの時間の余裕を見つける
クリティカルアクティビティ、クリティカルパスを見つける
クリティカルアクティビティの特徴、クリティカルパス