如何把算法讲明白

在高中的时候发现自己的数学还可以,但是大学之后就不太行了,包括后来学习算法或者给人讲一个普通的算法时候也会很难让人理解和明白。所以自己在想的是,如何将算法或者数学讲明白。

理清本质

算法的定义:

In mathematics and computer science, an algorithm (/ˈælɡərɪðəm/ (About this soundlisten)) is a finite sequence of well-defined, computer-implementable instructions, typically to solve a class of specific problems or to perform a computation
来自wiki

敲重点: finite instructions有限的指令,specific明确的。

从这里我们可以看到算法是有限的步骤,解决某种模式问题。和我们的架构有点相同,每种架构都是为了解决特定的问题。
但又和架构不同:
1)架构是结构总分思维,而算法是过程思维。
2)架构的结构是静态的,算法的结构则是动态的。

这两点也就决定学习算法会比较困难,因为人的思维能力是有限的。但有的时候我们也并不会这么觉得,我们可以记忆很多很复杂的事情,比如背诵一个十万字的作文,这又是为什么呢? 我们思考之后就会得出结论,你的记忆是什么样的。是不是现有一个合乎逻辑的结构,空间或者时间也好,然后辅助以画面或者印象去记忆的?从这点来说,人要处理复杂的事情时,一定是遵循逻辑,然后按结构化思维去做。

对于算法是否也可以这样做? 算法可以用总分结构吗?

Expressing algorithms

1 High-level description
2 Implementation description
3 Formal description
来自wiki

答案是可以的,但是不是还是觉得即便结构化还是仍然很难去讲明白,想清楚?

要回答这个问题,我们先试着去想一下算法是怎么来的吧。也就是算法的设计。

Typical steps in the development of algorithms:

Problem definition
Development of a model
Specification of the algorithm
Designing an algorithm
Checking the correctness of the algorithm
Analysis of algorithm
Implementation of algorithm
Program testing
Documentation preparation

从这里我们就可以知道为什么即便算法有了总分的结构后还是会难以理解。因为算法一开始就是进化的,先假设后证明的,而不是我们日常思维的结构。这个就代表了观察问题的角度不同,带来的解决方式也会不同,我们学习算法的本质是在学习一个模式,这个模式不具备通用性和逻辑的公理性(公理性: 无需证明,就像我们使用加减,并不会思考为什么加法就是对的)。

如何把算法讲明白

从上面来说,首先是逻辑合理性。如何能够使用公理性的基础结论,去尽可能简化表达逻辑的步骤。

在逻辑合理性之后之后就可以通过算法的几种抽象高度,去抓重点地去表达算法的步骤。

说到这里,基本上就结束了,其实对于数学也和算法一样。下次用这样的想法来试试KMP算法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
聚类算法k-means是一种常用的无监督学习算法,用于将数据集中的对象分成不同的组,使得每个组内的对象更加相似,而不同组之间的对象差异较大。下面我会用简单的话来解释一下k-means算法的工作原理。 首先,我们需要明确一些概念。假设我们有一个数据集,其中包含了许多样本,每个样本有多个特征。k-means算法需要我们提前指定要将数据集分成的组数k。算法的目标是找到k个中心点,每个中心点代表一个组。 算法的步骤如下: 1. 随机选择k个中心点。这些中心点可以是数据集中的任意k个样本。 2. 计算每个样本到这些中心点的距离,并将每个样本划分到距离最近的中心点所代表的组。 3. 更新每个组的中心点。将每个组内所有样本的特征求平均值,得到新的中心点。 4. 重复步骤2和步骤3,直到中心点不再发生变化或达到预定的迭代次数。 最终,算法会得到k个组,并且每个样本都会被分配到其中一个组中。当算法收敛时,每个组的中心点将代表该组中样本的平均特征。 值得注意的是,k-means算法对初始中心点的选择是敏感的。不同的初始选择可能导致不同的聚类结果。因此,为了得到更好的结果,通常会多次执行算法,选择最优的聚类结果。 希望这样的解释能让你更好地理解k-means算法的工作原理。如果还有其他问题,欢迎继续提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值