《算法基础:打开算法之门》一1.4针对计算机专业人士的计算机算法

简介:

本节书摘来自华章出版社《算法基础:打开算法之门》一书中的第1章,第1.4节,作者 [美]托马斯 H 科尔曼(Thomas H Cormen),更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4针对计算机专业人士的计算机算法

如果你是一个计算机专业人士,那么你最好关注计算机算法!不仅仅是因为算法是计算机的核心,而且算法就像计算机的其他技术一样。你可以为了买一个最新、最好的处理器而花大价钱,但是你更需要在其上运行好的算法以使你的钱花得值。

这里有一个例子来说明算法确实是一门技术。在第3章中,我们将会看到几个将n个元素按升序排列的算法。其中一些算法的运行时间增长量级是n2,而另一些算法的运行时间增长量级仅仅为nlgn。什么是lgn呢?它是n的以2为底的对数,或记为log2n。计算机科学家如此频繁地使用以2为底的对数,以至于就像数学家和科学家使用缩写lnn来表示自然对数logen一样,计算机科学家也将以2为底的对数表示成缩写形式。因为函数lgn是指数函数的逆,所以它随着n的变化会相当地缓慢增长。如果n=2x,那么x=lgn。例如,210=1024,因此lg1024仅仅是10;同样地,220=1048576,因此lg1048576仅仅等于20;且230=1073741824意味着lg1073741824仅仅等于30。因此nlgn相对于n2,它是将因子n换成了lgn,这是一种非常方便的表示方式。

让我们将这个例子具体化。假设我们选择在一个较快的计算机(计算机A)上执行一个运行时间为n2的排序算法,而在一个运行速度较慢的计算机上(计算机B)上执行一个运行时间为nlgn的排序算法,并让它们均对一个包含着1千万个数字的数组进行排序。(尽管1千万个数看起来很多,如果这些数字是8字节整数,那么输入大约会占用80兆字节,对于一个低廉的笔记本电脑而言,这能够适配主存。)假设计算机A每秒执行100亿条指令(比本书写至此时任何计算机的执行速度更快),而计算机B每秒仅仅能执行1千万条指令,因此计算机A在计算机性能上比计算机B快1000倍。为了使得这个差异更明显,假定世界上具有最精湛技术的程序员为计算机A使用机器语言进行编码,并且结果的代码会需要2n2条指令来实现对n个数字的排序,而对计算机B进行编码的仅仅是一个普通程序员,他会使用一个带有低效编译器的高级语言,使得最终编码需要50nlgn条指令。为了对1千万个数进行排序,计算机A需要花费的时间为:image

这超过了55个小时,而计算机B会花费:image

该时间不到20分钟。通过使用一个运行时间增长较慢的算法,即使是使用一个较次的编译器,计算机B的运行速度也会比计算机A的运行速度快17倍!当我们对1亿个数字进行排序时,运行时间为nlgn的算法的优点会更加显著:运行在计算机A上的时间复杂度为n2的排序算法所花费的时间会超过23天,而运行在计算机B上的时间复杂度为nlgn的这个算法所耗费的时间会在4个小时以下。一般而言,当问题规模增加时,时间复杂度为nlgn的算法的相对优势也会更加明显。

即使我们看到了计算机硬件方面的不断改进和发展,但是整个系统的性能不仅仅依靠选择运行较快的硬件或者高效的操作系统,选择高效的算法对提升系统的性能也同样重要。就像在其他计算机技术上所做出的重要改进一样,在计算机算法上也在进行着相应的改进。

相关文章
|
3天前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
35 15
|
14天前
|
监控 网络协议 算法
基于问题“如何监控局域网内的电脑”——Node.js 的 ARP 扫描算法实现局域网内计算机监控的技术探究
在网络管理与安全领域,监控局域网内计算机至关重要。本文探讨基于Node.js的ARP扫描算法,通过获取IP和MAC地址实现有效监控。使用`arp`库安装(`npm install arp`)并编写代码,可定期扫描并对比设备列表,判断设备上线和下线状态。此技术适用于企业网络管理和家庭网络安全防护,未来有望进一步提升效率与准确性。
32 8
|
3月前
|
监控 算法 安全
解锁企业计算机监控的关键:基于 Go 语言的精准洞察算法
企业计算机监控在数字化浪潮下至关重要,旨在保障信息资产安全与高效运营。利用Go语言的并发编程和系统交互能力,通过进程监控、网络行为分析及应用程序使用记录等手段,实时掌握计算机运行状态。具体实现包括获取进程信息、解析网络数据包、记录应用使用时长等,确保企业信息安全合规,提升工作效率。本文转载自:[VIPShare](https://www.vipshare.com)。
46 1
|
4月前
|
人工智能 并行计算 算法
量子计算算法:超越经典计算机的边界
量子计算基于量子力学原理,利用量子位、量子叠加和量子纠缠等特性,实现并行计算和高效处理复杂问题。核心算法如Shor算法和Grover算法展示了量子计算在大数分解和搜索问题上的优势。尽管面临量子位稳定性和规模化等挑战,量子计算在化学模拟、优化问题和人工智能等领域展现出巨大潜力,预示着未来的广泛应用前景。
|
5月前
|
机器学习/深度学习 人工智能 算法
量子计算算法:超越经典计算机的边界
【10月更文挑战第30天】量子计算基于量子力学原理,通过量子比特和量子门实现超越经典计算机的计算能力。本文探讨量子计算的基本原理、核心算法及其在密码学、化学、优化问题和机器学习等领域的应用前景,并讨论当前面临的挑战与未来发展方向。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-19
95 3
|
5月前
|
存储 人工智能 算法
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-18
65 0
|
1天前
|
资源调度 算法 数据可视化
基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF
本项目基于MATLAB2022A实现IEKF迭代扩展卡尔曼滤波算法的数据跟踪仿真,对比EKF和UKF的性能。通过仿真输出误差收敛曲线和误差协方差收敛曲线,展示三种滤波器的精度差异。核心程序包括数据处理、误差计算及可视化展示。IEKF通过多次迭代线性化过程,增强非线性处理能力;UKF避免线性化,使用sigma点直接处理非线性问题;EKF则通过一次线性化简化处理。
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于生物地理算法的MLP多层感知机优化matlab仿真
本程序基于生物地理算法(BBO)优化MLP多层感知机,通过MATLAB2022A实现随机数据点的趋势预测,并输出优化收敛曲线。BBO模拟物种在地理空间上的迁移、竞争与适应过程,以优化MLP的权重和偏置参数,提升预测性能。完整程序无水印,适用于机器学习和数据预测任务。
|
3天前
|
算法 数据安全/隐私保护
基于二次规划优化的OFDM系统PAPR抑制算法的matlab仿真
本程序基于二次规划优化的OFDM系统PAPR抑制算法,旨在降低OFDM信号的高峰均功率比(PAPR),以减少射频放大器的非线性失真并提高电源效率。通过MATLAB2022A仿真验证,核心算法通过对原始OFDM信号进行预编码,最小化最大瞬时功率,同时约束信号重构误差,确保数据完整性。完整程序运行后无水印,展示优化后的PAPR性能提升效果。