一般的なグラフでの三角形のカウントは、時間で簡単に行うことができ、はるかに高速に行うのは難しいと思います(参考文献を歓迎します)。平面グラフはどうですか?次の簡単な手順は、時間で実行できることを示してい。私の質問は2つあります。
- この手順のリファレンスは何ですか?
- 時間を線形にすることはできますか?
リプトン・タージャンの平面分離定理のアルゴリズムによる証明から、グラフのサイズに時間的に比例して、グラフの頂点を3つのセット分割し、1つの端点を持つエッジがないようにすることができます。とのもう一方、サイズは制限され両方サイズは頂点の数のに制限されます。グラフ内の三角形は、完全に内にか、完全に内にか、少なくとも1 つの頂点をからの他の2つの頂点とともに使用するか、. Thus it suffices to count the number of triangles in the graph on and the neighbours of in (and similarly for ). Notice that and its -neighbours induce a -outer planar graph (the said graph is a subgraph of a planar graph of diameter ). Thus counting the number of triangles in such a graph can be done directly by dynamic programming or by an application of Courcelle's theorem (I know for sure that such a counting version exists in the Logspace world by Elberfeld et al and am guessing that it also exists in the linear time world) since forming an undirected triangle is an property and since a bounded width tree decomposition is easy to obtain from an embedded -outer planar graph.
Thus we have reduced the problem to a pair of problems which are each a constant fraction smaller at the expense of a linear time procedure.
Notice that the procedure can be extended to find the count of the number of instances of any fixed connected graph inside an input graph in time.