行列のトレースを 3 乗と 4 乗で計算する必要があり、可能な限り高速である必要があります。
ここでの行列は単純なグラフの隣接行列であるため、正方対称であり、そのエントリは常に 1 または 0 であり、対角要素は常に 0 です。
行列の 2 乗へのトレースの最適化は自明です。
- トレースには対角線のエントリ (i,i) のみが必要で、他はすべてスキップします
- 行列は対称であるため、これらのエントリは i 番目の行のエントリを 2 乗して合計したものにすぎません。
- エントリは 1 または 0 であるため、二乗演算はスキップできます。
ウィキペディアで見つけた別のアイデアは、アダマール積のすべての要素、つまりエントリごとの乗算を要約することでしたが、この方法を 3 と 4 の累乗に拡張する方法がわかりません。
http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Propertiesを参照してください。
盲目なだけかもしれませんが、簡単な解決策が思いつきません。
最終的には C++ の実装が必要ですが、それは質問にとって重要ではないと思います。
助けてくれてありがとう。