程序员的 10 个数学概念 - KDnuggets

程序员的 10 个数学概念 – KDnuggets

源节点: 2874651

程序员的 10 个数学概念
图片作者
 

随着程序员需求的增加,供给自然会满足每天更多的人进入这个行业。然而,这是一个竞争激烈的行业。为了不断提高自己、技能和增加薪水——你需要证明你是一名熟练的程序员。做到这一点的一种方法是学习人们通常不知道的事情。 

许多人进入编程行业时都假设您不需要了解其背后的数学知识。尽管这在某种程度上是正确的,但能够理解编程背后的逻辑数学概念将使您成为一名更熟练的程序员。 

那个怎么样?通过了解您正在做什么以及正在发生什么。这就是如何。

那么让我们直接开始吧。程序员最关心的 10 个数学概念是什么?

布尔代数源于代数。我想这是显而易见的。如果您是一名程序员或正在努力成为一名程序员,您可能已经知道布尔值是什么。如果没有,我会快速定义它。 

布尔值是一种数据类型/二进制变量,具有两个可能值之一,例如 0(假)或 1(真)。布尔数据类型由布尔代数支持,其中变量的值称为真值、true 和 false。使用布尔代数时,可以使用三个运算符: 

  • 连接或 AND 运算
  • 析取或或运算
  • 否定或非运算

这些可以直观地表示为维恩图,以便您更好地理解输出。布尔代数由 6 个定律组成:

  • 交换律
  • 结合律
  • 分配律
  • 和法
  • 或法
  • 反转定律

计算机理解数字,这就是它们需要数字系统的原因。数字系统被称为用于表达数字的书写系统。例如,您有以下四种最常见的数字系统类型:

  1. 十进制数系统(Base- 10)
  2. 二进制数字系统(Base- 2)
  3. 八进制数系统(Base-8)
  4. 十六进制数字系统(Base- 16)

计算机采用 Base-2 数字系统,其中可能的数字为 0 和 1。Base64 还用于以字符串格式对二进制数据进行编码。

更多地了解数字,我们有浮点数。浮点是一种可变数据类型,它将实数表示为近似值。浮点数是小数点位置可以移动或“浮动”而不是固定位置的数字。这使得开发人员可以在范围和精度之间进行权衡。

但为什么要近似呢?计算机的空间有限,要么是 32 位(单精度),要么是 64 位(双精度)。 64 位是 Python 和 JavaScript 等编程语言的默认设置。浮点数的示例有 1.29、87.565 和 9038724.2。它可以是带小数点的正整数或负整数。 

也称为对数,是一个数学概念,它使用指数的倒数来回答问题。那么为什么对数对程序员很重要>因为它简化了复杂的数学计算。例如,1000 = 10^4 也可以写成 4 = log101000。

基数是一个需要与自身相乘的数学对象。指数是一个数字,用于标识基数需要与其自身相乘多少次。因此,对数是一个指数,它指示必须对基数进行多少次幂才能产生给定的数字。

当log使用Base-2时,它是二进制对数,如果它是Base-10,它是常用对数。 

集合是无序的唯一值集合,它们之间不需要有任何关系。它们只能包含唯一的项目,并且不能包含相同的项目两次或更多次。

例如,Excel 文件或数据库包含具有一组唯一行的表。这是一种离散数学,因为这些结构可以具有有限数量的元素。集合论的目的是理解值的集合以及彼此之间的关系。这通常用于数据分析师、SQL 专家和数据科学家。 

您可以使用以下方法来做到这一点:

  • 内连接或交集 – 返回一个集合,其中包含两个集合中都存在的元素
  • 外连接或并集 – 返回两个集合中的元素
  • Union all – 与外连接运算符相同,但它将包含所有重复项。
  • except 或 Minus – A Minus B 是包含集合 A 中不属于集合 B 的元素的集合 

组合学是一门计算事物以获得结果的艺术,并通过模式理解有限结构的某些属性。编程就是解决问题,而组合学是我们排列对象来研究这些有限离散结构的方式。

组合公式是排列和组合的组合。

  • 排列是将集合排列成某种顺序或序列的行为
  • 组合是在不考虑顺序的情况下选择集合的值。

如您所知,图表是一组值的直观表示,并且这些值可以连接起来。当涉及到数据时,这些值由于变量而相互连接——这在图论中被称为链接。 

图论是对有关连通点集的边和顶点之间关系的图的研究。这使我们能够使用顶点(也称为通过边(称为线)连接的节点)在对象之间创建成对关系。图表示为一对 G(V, E),其中 V 表示有限集顶点,E 表示有限集边。

复杂性理论是研究算法运行所需的时间和内存量与输入大小的函数关系。复杂性有两种类型:

  • 空间复杂度——算法运行所需的内存量。
  • 时间复杂度——算法需要运行的时间量。

更多人关心时间复杂度,因为我们可以重用算法的内存。当谈到时间复杂度时,衡量它的最佳方法是考虑算法执行的操作数量。算法是使用 if 语句和循环构建的,因此为了减少花费的时间,您需要使用具有尽可能少的 if 语句和循环的代码。

算法的复杂性理论使用 big-o 表示法来帮助描述和更好地理解算法的限制行为。它用于根据算法对输入大小变化的响应方式对算法进行分类。

啊啊统计。如果你想进入人工智能领域,你需要了解统计学。人工智能和机器学习是统计学的好听名字。统计编程用于解决数据量大的问题,例如ChatGPT。 ChatGPT 的响应全部基于与用户提供的提示匹配的概率。 

在统计编程方面,您需要学习的不仅仅是均值、中位数和众数。您需要了解偏差、协方差和贝叶斯定理。作为一名程序员,您将被设定任务并意识到您会问这是线性回归问题还是逻辑回归问题。了解两者之间的区别将帮助您确定手头的任务类型。 

您可能在学校学过线性代数——也可能没有。线性代数非常重要,广泛应用于计算机图形学和深度学习中。为了掌握线性代数,您需要理解这三个词:

  • 标量——单个数值
  • 向量 – 数字列表或一维数组
  • 矩阵 – 网格或二维数组

向量可以表示 3D 空间中的点和方向,而矩阵可以表示这些向量发生的变换。 

本文为您提供了十大数学概念的快速概述,这些概念将改善您的编程职业生涯。了解其中的复杂性不仅能让你的日常任务更加顺利、更容易理解,而且可以向你的雇主展示你的潜力。 

如果您正在寻找一本可以帮助您的免费书籍,请查看: 机器学习数学:免费电子书
 
 
妮莎·艾莉亚 是 KDnuggets 的数据科学家、自由技术作家和社区经理。 她对提供数据科学职业建议或教程以及围绕数据科学的理论知识特别感兴趣。 她还希望探索人工智能是/可以有益于人类长寿的不同方式。 一个敏锐的学习者,寻求拓宽她的技术知识和写作技巧,同时帮助指导他人。
 

时间戳记:

更多来自 掘金队