【发布时间】:2020-12-15 13:11:32
【问题描述】:
一般的算法会使用变量(例如:max、min 等)来保持逻辑状态,同时解决问题。变量在计算机(硬件)中用数字表示。
计算机被设计成使用二进制数字来表示数字和其他信息。但是,有可能(或已经尝试过)使用不同的数字表示(例如三进制,对于任何可能的优势,都没有关系)。
现在,算法是否依赖于底层计算机的这个数字表示?即在具有数字表示 Nx 的计算机 X 上(而不是“为”)编写的算法是否在具有数字表示 Ny 的计算机 Y 上工作完全相同?
【问题讨论】:
-
"工作完全相同":当然不是,因为记数系统不同。
-
逻辑上是的——这意味着只要有足够的时间,无论基材如何,算法都会产生相同的输出。然而,不同的系统可能有不同的效率——也许一个在数字上加 1 的速度要快得多……这意味着不同的算法在实时运行时可能更快或更慢,尽管具有相同的 big-O。
-
嗯,许多金融算法在以 2 为基数时存在问题,而在以 10 为基数表示时效果最佳。