p. 189 の グラフの連結成分の個数を数える問題について,計算量は $O(|V|+|E|\alpha(|V|))$ となっていますが,
オーダ表記内第1項については $|V|\alpha(|V|)$ となり,全体として $O(|V|\alpha(|V|)+|E|\alpha(|V|))$ と
なるのではないでしょうか.
具体的には,code 11.4 の55--57行目で頂点xの根を求める計算量がp.185より
ならし計算量で $O(\alpha(N))$ (プログラム中では $N = |V|$ )となり,各々の辺に対して反復されるので,
$O(|V|\alpha(|V|))$ となると思われます.
for ( int x = 0; x < N; ++x){
if (uf.root(x) == x) ++res;
}
あわせて,p. 193の章末問題11.1の計算量の解析についても,各々の辺を除いた状況下で上述の手順が繰り返されるため
$(問題の計算量) = O(|E| * (上記の手順の計算量))$ となるかと思うので,テキストの表式と異なる結果になる
可能性があるかと考えられます.
よろしくご検討のほど,お願いいたします.
p. 189 の グラフの連結成分の個数を数える問題について,計算量は$O(|V|+|E|\alpha(|V|))$ となっていますが,$|V|\alpha(|V|)$ となり,全体として $O(|V|\alpha(|V|)+|E|\alpha(|V|))$ と$O(\alpha(N))$ (プログラム中では $N = |V|$ )となり,各々の辺に対して反復されるので,
$O(|V|\alpha(|V|))$ となると思われます.
オーダ表記内第1項については
なるのではないでしょうか.
具体的には,code 11.4 の55--57行目で頂点xの根を求める計算量がp.185より
ならし計算量で
あわせて,p. 193の章末問題11.1の計算量の解析についても,各々の辺を除いた状況下で上述の手順が繰り返されるため
$(問題の計算量) = O(|E| * (上記の手順の計算量))$ となるかと思うので,テキストの表式と異なる結果になる
可能性があるかと考えられます.
よろしくご検討のほど,お願いいたします.