Skip to content

Commit b9b0b06

Browse files
committed
Fixed an error
1 parent 293bb15 commit b9b0b06

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

search/search-zh-cn.tex

+1-1
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ \subsubsection{二分查找}
389389

390390
这一函数按照单调增的顺序检查解的可能范围。它首先从$X$选择一个候选元素$x_1$,比较$a^{x_1}$$y$,如果相等,则$x_1$就是方程的解;如果小于$y$,则丢弃$x_1$,继续在剩余的元素$X'$中查找;否则,由于函数$f(x)=a^x$$a$为自然数时,是非减函数,剩余元素会令$f(x)$变得更大,因此方程不存在整数解。这种情况下我们返回错误。
391391

392-
对于很大的$a$$x$,如果需要保持精度,则计算$a^x$会消耗一定的时间\footnote{当然,我们可以复用$a^n$的结果来计算$a^{n+1} = a a^n$。这里我们考虑一般意义下的单调函数$f(n)$。}。有没有什么办法可以减小计算量呢?我们可以使用分而治之的二分查找来进行改进。我们可以估计出解的范围的上限。由于$a^y \leq y$,我们可以在区间$\{0, 1, ..., y\}$内搜索。由于函数$f(x) = a^x$是非减函数,对于自变量$x$,我们可以先检查区间的中点$x_m = \lfloor \frac{0 + y}{2} \rfloor$,如果$a^{x_m} = y$,则$x_m$就是方程的解;如果值小于$y$,我们可以丢弃$x_m$前的全部元素;否则,我们丢弃$x_m$后的全部元素;两种情况下都将搜索范围减半。我们重复这一过程直到找到解或者查找范围变成空,这表示方程不存在整数解。
392+
对于很大的$a$$x$,如果需要保持精度,则计算$a^x$会消耗一定的时间\footnote{当然,我们可以复用$a^n$的结果来计算$a^{n+1} = a a^n$。这里我们考虑一般意义下的单调函数$f(n)$。}。有没有什么办法可以减小计算量呢?我们可以使用分而治之的二分查找来进行改进。我们可以估计出解的范围的上限。由于$a^y \geq y$,我们可以在区间$\{0, 1, ..., y\}$内搜索。由于函数$f(x) = a^x$是非减函数,对于自变量$x$,我们可以先检查区间的中点$x_m = \lfloor \frac{0 + y}{2} \rfloor$,如果$a^{x_m} = y$,则$x_m$就是方程的解;如果值小于$y$,我们可以丢弃$x_m$前的全部元素;否则,我们丢弃$x_m$后的全部元素;两种情况下都将搜索范围减半。我们重复这一过程直到找到解或者查找范围变成空,这表示方程不存在整数解。
393393

394394
二分查找的方法可以形式化为下面式(\ref{eq:bsearch})的定义。其中,我们将非减函数抽象为一个参数。为了解决上面的方程,我们只需要调用$bsearch(f, y, 0, y)$,其中$f(x) = a^x$
395395

0 commit comments

Comments
 (0)