-- Mar 13 In-Class Exercise
For that specific `H(n)`, we are dealing with n strings (as `x <= log(n)`, and there are `2^{|x|}` possible strings). As we know that `i < log(log(n))` and `x <= log(n)`, some machine `M_i` can compute `SAT_H` in `i*{|x|}^i` steps. Substituting with the bounds yields `(log(log(n)))*{log(n)}^{log(log(n))}` steps, which works out to `(log(log(n)))*{2}^{log(log(n))}^2`. We know that `(log(log(n))^2 = o(log(n))`, so we can replace it to be `log(log(n)) * 2^{o(log(n))} = log(log(n)) * n` Thus, `SAT_H` can return a result on an input of size `log(n)` or smaller in time `n*log(log(n))`. As shown at the start, there are `n` possible strings to test, adding an extra factor of `n` to the calculation, making our total time `n^2 * log(log(n))` time, which is within `O(n^3)`.
(
Edited: 2017-03-15)
For that specific @BT@H(n)@BT@, we are dealing with n strings (as @BT@x <= log(n)@BT@, and there are @BT@2^{|x|}@BT@ possible strings). As we know that @BT@i < log(log(n))@BT@ and @BT@x <= log(n)@BT@, some machine @BT@M_i@BT@ can compute @BT@SAT_H@BT@ in @BT@i*{|x|}^i@BT@ steps. Substituting with the bounds yields @BT@(log(log(n)))*{log(n)}^{log(log(n))}@BT@ steps, which works out to @BT@(log(log(n)))*{2}^{log(log(n))}^2@BT@. We know that @BT@(log(log(n))^2 = o(log(n))@BT@, so we can replace it to be @BT@log(log(n)) * 2^{o(log(n))} = log(log(n)) * n@BT@ Thus, @BT@SAT_H@BT@ can return a result on an input of size @BT@log(n)@BT@ or smaller in time @BT@n*log(log(n))@BT@. As shown at the start, there are @BT@n@BT@ possible strings to test, adding an extra factor of @BT@n@BT@ to the calculation, making our total time @BT@n^2 * log(log(n))@BT@ time, which is within @BT@O(n^3)@BT@.