次のコードは、パラメーターサイズに関してどのくらいの時間計算量がありますか?動機付ける。
// Process(A, N) is O(sqrt(N)).
Function Complex(array[], size){
if(size == 1) return 1;
if(rand() / float(RAND_MAX) < 0.1){
return Process(array, size*size)
+ Complex(array, size/2)
+ Process(array, size*size);
}
}
Process(A、N)がO(sqrt(N))の場合、Process(A、N * N)はO(N)であり、Complex(array、size / 2)である必要があるため、O(N)だと思います。 )はO(log(n))です。これは、実行するたびにサイズが半分になるためです。したがって、1回の実行で、O(N)+ O(log(N))+ O(N)= O(N)が必要になります。
私を訂正して、私がこのような課題をどのように考え/進めるべきかについてのヒントを教えてください。
よろしくお願いします。