双方向エッジを持つグラフがあり、重みはないとします。たくさんのメモリを無駄にしないように、どのように保存すればいいですか?高速化し、すべての頂点の隣人に素早くアクセスできますか?私が意味する、今までこのようなSTHのために:{(1,2)(1,5)(1,3)(2,4)(2,3)}
私は、配列を使用している:array[1][2]=1
は1と2の間の接続があることを意味しているとの二つの問題があります。この種のグラフの保存方法は?
a)はグラフのように双方向、
(1,2)
は(2,1)
が存在することを意味します。私は、後2者の隣人への容易なアクセスを持っているしたい場合は、私は、反復ごとに2つの変更を加える必要があります:私はいくつかの頂点を知っているとき)array[1][2]=1
、array[2][1]=1
Bを(たとえば5)私が検索する必要があり、唯一の隣人が残っています全体
array[5][x]
は万人の頂点のグラフのためにあらゆる可能なx
c)をチェックして、このモンスターがどんな競技で使用するにはあまりにも膨大になり
あなたは私を助けて、私指してもらえ私の問題に対する解決策?
これは宿題ですか?もしそうなら、そのようにタグ付けしてください! – FloppyDisk
常に[Boost.Graph](http://www.boost.org/doc/libs/1_48_0/libs/graph/doc/index.html)があります。 –
Rob - むしろSTLのものにとどまることができます。そのような素晴らしい図書館は、通常どんな競技会などでも許可されません。 – Straightfw