グラフクラス

汎用的なグラフクラス。グラフの要素には、ノードとアークがあるが、汎用的なデータ構造では、さらに、接続(ノード識別子とアーク識別子の組)とリンクがあるべきだ。リンクは、リソースであり、アークとリンクは、有向グラフでは1対1となり、無向グラフでは2対1となる。
このようにすれば、同じ1つのクラスで、無向グラフとしても有向グラフとしても使える。
大抵のグラフクラスは、内部に隣接行列を持つが、汎用的なものでは、隣接行列は、内部に持たずに動的に作成し、必要ならキャッシュすべきである。理由は、denseとsparseに対応させるためだ。
また、これまでの経験から、ノードとアークはランダムアクセス可能であるべきだ。