コンピュータサイエンスにおいて、グラフ変換、あるいはグラフ書き換えとは、元のグラフからアルゴリズム的に新しいグラフを作成する手法を指します。ソフトウェア工学(ソフトウェア構築およびソフトウェア検証)から設計アルゴリズム、画像生成に至るまで、幅広い応用があります。
グラフ変換は計算の抽象化として利用できます。基本的な考え方は、計算の状態をグラフとして表現できる場合、その計算における以降のステップをそのグラフ上の変換規則として表現できるというものです。このような規則は、完全な状態におけるサブグラフと一致する元のグラフと、一致したサブグラフを置き換える置換グラフで構成されます。
正式には、グラフ書き換えシステムは通常、 という形式のグラフ書き換え規則の集合から構成され、 はパターングラフ(または規則の左側)と呼ばれ、 は置換グラフ(または規則の右側)と呼ばれる。グラフ書き換え規則は、パターングラフの出現を検索し(パターンマッチング、つまり部分グラフ同型性問題の解決)、見つかった出現を置換グラフのインスタンスに置き換えることによって、ホストグラフに適用される。文字列調整グラフ文法など、ラベル付きグラフ の場合、書き換え規則はさらに調整される。
グラフ文法は、特に形式言語の文脈では、グラフ書き換えシステムの同義語として使用されることがあります。異なる言い回しは、特定の状態 (ホスト グラフ) を単に新しい状態に変換するのではなく、ある開始グラフからすべてのグラフを列挙する、つまりグラフ言語を生成するなど、構築の目的を強調するために使用されます。

グラフ書き換えに対する代数的アプローチは圏論に基づいています。代数的アプローチはさらにサブアプローチに分かれており、最も一般的なのはダブルプッシュアウト(DPO)アプローチとシングルプッシュアウト(SPO)アプローチです。その他のサブアプローチには、セスキプッシュアウトとプルバックアプローチがあります。
DPO アプローチの観点から見ると、グラフ書き換え規則はグラフのカテゴリにおける1 組の射とそれらの間のグラフ準同型であり、 は とも表記され、は単射です。グラフ K は不変グラフまたは接着グラフと呼ばれることもあります。書き換えステップ、つまり規則 r のホスト グラフG への適用は、同じ射に由来する 2 つのプッシュアウト図によって定義されます。ここで、 D はコンテキスト グラフです (これが二重プッシュアウトという名前が由来する所以です)。別のグラフ射は G における L の発生をモデル化し、マッチと呼ばれます。これを実際に理解すると、は からマッチするサブグラフであり(サブグラフ同型性の問題を参照)、マッチが見つかった後、ホスト グラフ内で に置き換えられます。ここで はインターフェイスとして機能し、規則の適用時に保持されるノードとエッジが含まれます。グラフ は、マッチするパターンをそのコンテキストに結び付けるために必要です。グラフ が空の場合、マッチはグラフ の連結されたコンポーネント全体しか指定できません。
対照的に、SPOアプローチのグラフ書き換え規則は、ラベル付き多重グラフと多重グラフ構造を保持する部分写像の圏における単一の射である: 。したがって、書き換えステップは単一のプッシュアウト図によって定義されます。これの実際的な理解はDPOアプローチと同様です。違いは、ホストグラフGと書き換えステップの結果であるグラフG'の間にインターフェースがないことです。
実用的な観点から見ると、DPOとSPOの主な違いは、隣接するエッジを持つノードの削除をどのように処理するか、特に、そのような削除によって「ぶら下がりエッジ」が残るのをどのように回避するかです。DPOアプローチは、ルールですべての隣接エッジも削除するように指定されている場合にのみノードを削除します(このぶら下がりエッジの状態は、特定のマッチに対して確認できます)。一方、SPOアプローチは、明示的な指定を必要とせずに、隣接エッジを単純に破棄します。
グラフ書き換えには、ブール代数と行列代数に基づいた代数的なアプローチもあり、行列グラフ文法と呼ばれます。[1]
決定的グラフ書き換えとして知られるグラフ書き換えへのさらに別のアプローチは、論理とデータベース理論から生まれました。[2] このアプローチでは、グラフはデータベースインスタンスとして扱われ、書き換え操作はクエリとビューを定義するメカニズムとして扱われます。したがって、すべての書き換えは(同型性まで)一意の結果を生成する必要があり、これは、適用される場所に関係なく、結果が実際に一意に定義されるように、グラフ全体で任意の書き換えルールを同時に適用することによって実現されます。
グラフ書き換えのもう 1 つのアプローチは、用語グラフ書き換えです。これは、一連の構文書き換えルールによる 用語グラフ (抽象意味グラフとも呼ばれます) の処理または変換を伴います。
項グラフは、項グラフの書き換え規則がコンパイラの操作的意味論を形式的に表現できるため、プログラミング言語研究における重要なトピックです。項グラフは、化学計算や生物学計算、並行性モデルなどのグラフィカル計算をモデル化できる抽象機械としても用いられています。項グラフは、一階述語論理における量化文の表現に適しているため、自動検証や論理プログラミングを実行できます。記号プログラミングソフトウェアは、項グラフのもう一つの応用分野であり、群、体、環といった抽象的な代数構造を用いた計算を表現および実行できます。
TERMGRAPHカンファレンス[3]は、項グラフの書き換えとその応用に関する研究に特化しています。
グラフ書き換えシステムは、使用されるグラフの表現の種類と書き換えの表現方法に応じて、自然にクラスに分類されます。グラフ文法という用語は、グラフ書き換えシステムまたはグラフ置換システムと同義であり、分類において最もよく使用されます。一般的なタイプには以下のものがあります。
グラフは、関係によって結び付けられたオブジェクト(エンティティ)をモデル化するための、表現力豊かで視覚的、かつ数学的に正確な形式です。オブジェクトはノードで、それらの間の関係はエッジで表されます。ノードとエッジは一般的に型付けされ、属性が付与されます。このモデルにおける計算は、エンティティ間の関係の変化、またはグラフ要素の属性の変化によって記述されます。これらの計算はグラフ書き換え/グラフ変換規則に符号化され、グラフ書き換えシステム/グラフ変換ツールによって実行されます。