そこで、C ++で有向非巡回グラフを作成しました。今度は、それをテキストファイルまたはファイルに保存したいと思います。それ、どうやったら出来るの?
PS:混乱してすみません...ファイルのフォーマット方法を尋ねるつもりです。
前もって感謝します!
そこで、C ++で有向非巡回グラフを作成しました。今度は、それをテキストファイルまたはファイルに保存したいと思います。それ、どうやったら出来るの?
PS:混乱してすみません...ファイルのフォーマット方法を尋ねるつもりです。
前もって感謝します!
簡単な方法は、最初にすべてのノードにノードIDを割り当てて保存し、次に開始ノードと終了ノードのノードIDを使用してすべてのアークを保存することです。
これはすべての場合を処理します(接続されていないグラフ、複数接続されたグラフ、ループなどを含む)
他の誰かがそれをどのように行ったかの例については、graphvizと「ドット」言語を見てください。
ファイル形式を既存の形式に基づいて作成することは、独自の形式を作成するよりも常に優れたアイデアです。多くの場合、ファイル形式はあなたが知らないことを考えている可能性があります。そして、あなたが頑固な言語に固執するならば、graphvizウェブサイトにフォーマットとツールへのたくさんのリンクもあります。
グラフの各頂点に何らかのIDがある場合は、ファイルに次の構造を使用できます。
<num vertexes>
1 <num neighbors> <neighbor ID> ... <neighbor ID>
...
N <num neighbors> <neighbor ID> ... <neighbor ID>
または、正方行列を使用してグラフを保存することもできます。
行列の(i、j)エントリが、ノードiとノードjが接続されていることを示す行列を作成できます。
それをディスクに書き込むには、ノードの数を書き出してから、マトリックスを1行ずつ書き出します。このようにして、n ^ 2+1の数値をディスクに書き込みます。
ただし、グラフがまばらな場合(つまり、エッジの数<<ノードの数)、このアプローチは非効率的です。しかし、それは単純なシリアル化構造を持っています。