给出PHP中的两个函数,比如说
function f($n) {
return $n;
}
function g($n) {
return pow($n, (2/3));
}
如何在PHP中检查函数f(n)是否为Ω(g(n)),Θ(g(n))或O(g(n))?
到目前为止我尝试了什么:
$n = INF;
$A = f($n) / g($n);
if ($A == 0) {
echo "f(n) = O(g(n))";
} elseif (is_infinite($A)) {
echo "f(n) = Ω(g(n))";
} elseif ($A != 0) {
echo "f(n) = Θ(g(n))";
}
不应该这样吗?
答案 0 :(得分:1)
你的基本想法是正确的:当n无限制地增长时,你必须找到f(n)/ g(n)的极限。遗憾的是,没有简单的方法来计算PHP中的确切限制,因为这需要符号计算,最好留给计算机代数系统,如Mathematica或Maxima。
您可以通过计算f(n)/ g(n)来增加n的值,并查看是否得到接近固定值的序列来近似限制。例如:
$n=1;
while ($n < 1e300) {
$A = f($n)/g($n);
echo $A, "\n";
$n *= 1e12;
}
在这种特殊情况下,f(n)/ g(n)的序列似乎无限制地增长,因此数值证据表明f(n)为Ω(g(n))。这不是证明;需要有象征性的方法。
答案 1 :(得分:-1)