我们世界中的10个算法

news/2025/2/1 23:52:44/

下面的图表展示了我们日常生活中最常用的算法。它们被应用在互联网搜索引擎、社交网络、WiFi、手机甚至卫星等各个领域。

5180568049220ff4e38305a2f3426309.png

1.排序算法

排序算法用于将一组数据按照特定的顺序进行排列。它们被广泛应用于各种场景,如搜索引擎中的搜索结果排序、数据分析中的数据整理和展示等。

# 冒泡排序
def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arrdata = [64, 34, 25, 12, 22, 11, 90]
sorted_data = bubble_sort(data)
print(sorted_data)  # 输出:[11, 12, 22, 25, 34, 64, 90]

2.傅里叶变换与快速傅里叶变换

傅里叶变换用于将一个函数(或信号)从时间域转换到频域,快速傅里叶变换是一种高效计算傅里叶变换的算法。它们在信号处理、图像处理、音频压缩等领域具有广泛应用。

import numpy as np# 傅里叶变换
def fourier_transform(signal):fft_result = np.fft.fft(signal)return fft_result# 快速傅里叶变换
def fast_fourier_transform(signal):fft_result = np.fft.fft(signal)return fft_resultsignal = [0, 1, 2, 3, 4, 5, 6, 7]
fft_result = fourier_transform(signal)
print(fft_result)fft_result_fast = fast_fourier_transform(signal)
print(fft_result_fast)

3.Dijkstra算法

Dijkstra算法是一种用于求解带权重图中最短路径的算法。它被广泛应用于路由算法、地图导航等场景,用于找到两个节点之间的最短路径。

import sys# Dijkstra算法
def dijkstra(graph, start):distance = {node: sys.maxsize for node in graph}distance[start] = 0visited = set()while len(visited) < len(graph):min_distance = sys.maxsizemin_node = Nonefor node in graph:if node not in visited and distance[node] < min_distance:min_distance = distance[node]min_node = nodevisited.add(min_node)for neighbor, weight in graph[min_node].items():distance[neighbor] = min(distance[neighbor], distance[min_node] + weight)return distancegraph = {'A': {'B': 1, 'C': 4},'B': {'A': 1, 'C': 2, 'D': 5},'C': {'A': 4, 'B': 2, 'D': 1},'D': {'B': 5, 'C': 1}
}start_node = 'A'
shortest_distances = dijkstra(graph, start_node)
print(shortest_distances)

4.RSA算法

RSA算法是一种非对称加密算法,常用于数据加密和数字签名。它基于大整数的因式分解难题,保证了加密的安全性。

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()message = b'Hello, World!'# 使用公钥加密
cipher_rsa = PKCS1_OAEP.new(RSA.import_key(public_key))
encrypted_message = cipher_rsa.encrypt(message)# 使用私钥解密
cipher_rsa = PKCS1_OAEP.new(RSA.import_key(private_key))
decrypted_message = cipher_rsa.decrypt(encrypted_message)print(decrypted_message.decode())  # 输出:Hello, World!

5.安全哈希算法

安全哈希算法用于将任意长度的数据映射为固定长度的哈希值。常见的安全哈希算法有SHA-256、SHA-512等,它们被广泛应用于数据完整性校验、密码存储等场景。

import hashlibmessage = b'Hello, World!'# 计算SHA-256哈希值
hash_value = hashlib.sha256(message).hexdigest()
print(hash_value)# 计算SHA-512哈希值
hash_value = hashlib.sha512(message).hexdigest()
print(hash_value)

6.整数因式分解

整数因式分解是将一个大整数分解为其素因子的过程。它在密码学中具有重要作用,例如RSA算法的安全性依赖于大整数的难以因式分解性质。

def factorize_integer(n):factors = []i = 2while i * i <= n:if n % i:i += 1else:n //= ifactors.append(i)if n > 1:factors.append(n)return factorsinteger = 1234567890
factors = factorize_integer(integer)
print(factors)

7.链接分析

链接分析是一种用于分析网络中节点之间链接关系的算法。它被广

泛应用于搜索引擎的网页排名算法,如PageRank算法。

# 简化的PageRank算法
def pagerank(graph, damping_factor=0.85, max_iterations=100, convergence_threshold=0.0001):num_nodes = len(graph)initial_score = 1 / num_nodesscores = {node: initial_score for node in graph}for _ in range(max_iterations):prev_scores = scores.copy()convergence = 0for node in graph:score = (1 - damping_factor) / num_nodesfor neighbor in graph:if node in graph[neighbor]:score += damping_factor * prev_scores[neighbor] / len(graph[neighbor])scores[node] = scoreconvergence += abs(scores[node] - prev_scores[node])if convergence < convergence_threshold:breakreturn scoresgraph = {'A': {'B': 1, 'C': 1},'B': {'A': 1, 'C': 1},'C': {'A': 1, 'B': 1}
}pagerank_scores = pagerank(graph)
print(pagerank_scores)

8.比例积分微分控制算法

比例积分微分(PID)控制算法是一种常用的反馈控制算法。它根据当前误差、误差积分和误差微分来调节控制器的输出,广泛应用于自动化控制系统中。

class PIDController:def __init__(self, kp, ki, kd):self.kp = kpself.ki = kiself.kd = kdself.previous_error = 0self.integral = 0def calculate_output(self, error, dt):self.integral += error * dtderivative = (error - self.previous_error) / dtoutput = self.kp * error + self.ki * self.integral + self.kd * derivativeself.previous_error = errorreturn outputpid_controller = PIDController(0.5, 0.1, 0.2)
setpoint = 10
dt = 0.01
time = 0
output = 0while time < 1:error = setpoint - outputoutput = pid_controller.calculate_output(error, dt)time += dtprint(f'Time: {time}, Output: {output}')

9.数据压缩算法

数据压缩算法用于将数据表示为更紧凑的形式,以减少存储空间或传输带宽的使用。常见的数据压缩算法有Huffman编码、LZ77、LZW等,它们被广泛应用于文件压缩、图像压缩等领域。

import gzipdata = b'Hello, World!'# 使用gzip进行压缩
compressed_data = gzip.compress(data)
print(compressed_data)# 使用gzip进行解压缩
decompressed_data = gzip.decompress(compressed_data)
print(decompressed_data.decode())  # 输出:Hello, World!

10.随机数生成

随机数生成算法用于生成

随机的数字或数据序列。在密码学、模拟实验、游戏开发等领域中,随机数生成算法扮演着重要的角色。

import random# 生成随机整数
random_integer = random.randint(1, 10)
print(random_integer)# 生成随机浮点数
random_float = random.uniform(0, 1)
print(random_float)# 从列表中随机选择元素
my_list = ['apple', 'banana', 'orange']
random_element = random.choice(my_list)
print(random_element)

以上是我们日常生活中最常用的10个算法。它们涉及了排序、变换、路径搜索、加密、哈希、压缩、控制以及随机数生成等多个领域,并在各自的应用场景中发挥着重要作用。深入理解这些算法可以帮助我们更好地理解和应用现代技术。

总结:

这些算法在计算机科学和信息技术领域扮演着重要的角色,它们为我们提供了强大的工具来解决各种问题。无论是搜索引擎的排名、数据加密的安全性,还是自动化控制系统的稳定性,这些算法都为我们的现代世界带来了巨大的影响。通过学习和应用这些算法,我们能够更好地理解和改善我们周围的技术环境。


http://www.ppmy.cn/news/237115.html

相关文章

为了搞懂ERP,我连问 ChatGPT 30个问题,通透!

我对ERP有很多的疑问&#xff0c;这次向ChatGPT请教&#xff0c;连问30个问题&#xff0c;瞬间觉得通透了很多&#xff0c;以下是我的问题和ChatGPT的回复&#xff0c;分为概念篇、架构篇和生态篇三部分&#xff0c;希望能带给你新的启示。 一、概念篇 1、ERP是什么&#xff1f…

Mac mini M1 2K显示器

近期入手了mac mini m1&#xff0c;显示器是小米 27寸 165hz&#xff0c; 本以为mac mini不支持2k&#xff0c;不想到接入后完美支持&#xff5e; 甚至只用了HDMI 1.4的线缆 微软无线键鼠也完美支持&#xff0c;赞&#xff5e; 减少空间占用的技巧&#xff1a; mac app都是…

MacBook Pro(13 英寸,2011 年末)A1278 老机器换了 好几个版本的系统,一直没有隔空投送,请高手指点!

MacBook Pro&#xff08;13 英寸&#xff0c;2011 年末&#xff09;A1278 老机器换了 好几个版本的系统&#xff0c;之前OS X 10.11 El Capitan没太注意&#xff0c;换Mac OS High Sierra后&#xff0c;有隔空投送的界面&#xff0c;但一直找不到iphone或ipad&#xff0c;觉得可…

宇视10寸人脸门禁一体机全局接线图

配置说明&#xff1a; 10寸人脸门禁一体机接口图 门禁一体机室内机门禁电源控制器EG系列IC/身份证读卡器接线图 门禁一体机室内机EG系列IC/身份证读卡器接线图 门禁一体机室内机EC系列IC/身份证阅读器接线图 门禁一体机安全模块室内机EG系列IC/身份证读卡器接线图 双门禁一体机…

MacBook Air M2无需虚拟屏启用Hidpi+任意缩放(22年9月)

1、下载BetterDisplay最新版 Release v1.3.0-beta waydabber/BetterDisplay GitHub 选择最下面的DMG文件下载 2、启动&#xff0c;选择最下面的设置点开 3、在General中选择自启动&#xff08;后面成功后其实可以再取消掉&#xff09;&#xff0c;在Display一项中把这几项全…

2010 27寸 imac 升级固态_新iMac拆解证实 自行加装SSD难如登天

苹果前天发布的一系列新机中&#xff0c;一体机iMac虽然没有在外观设计上进行修改&#xff0c;但无论整体配置还是具体细节都实现了全面升级。其中值得注意的是&#xff0c;27寸iMac首次允许用户定制SSD固态硬盘HDD机械硬盘的双硬盘配置。 256GB SSD做系统盘&#xff0c;1TB HD…

27计算机硬件中没有,苹果更新27英寸iMac电脑:外观无变化 但硬件配置更强大...

牛华网讯 北京时间8月5日消息&#xff0c;近日&#xff0c;苹果在官网更新了27英寸iMac电脑&#xff0c;但是这次它的外观并不包含重大的设计革新&#xff0c;只是在规格上进行了升级。 全新的27英寸iMac电脑配备了一系列的升级&#xff0c;包括处理器、GPU升级、哑光显示屏选…

苹果Mac新品国内开卖:13寸视网膜屏幕12488起

11月30日从手机搜狐网科技频道中获悉&#xff0c;苹果2012款新品Mac电脑在国内&#xff08;香港有的产品今天10月就开始销售了&#xff09;正式开售&#xff0c;此次发布的产品包括&#xff1a; 13英寸Retina MacBook Pro&#xff0c;起价12488元&#xff1b; 21.5英寸新iMac…