学习
实践
活动
专区
工具
TVP
写文章

算法思维与工程思维差异根源

下面说工程是专指IT工程。 很多时候,大家习惯直接把工程经验直接迁移到算法上,用工程去理解算法。这好像没什么问题,但是在实施过程,却容易产生各种问题,无论是在项目方案阶段,还是在项目验收阶段。 这两种思维本质差异是什么呢? 工程思维是确定性,而算法思维是概率性。 我想这就是差异根源。 你可能会反对,工程也不是完全确定,墨菲定律随时在发生作用,你永远都不知道什么时候就出bug了。 算法另一大难题是项目方案阶段,如果是工程问题,我们可以列出一个功能列表即可,但是算法本身是概率性,只是列出功能并没有什么用,准确性等指标怎么定义才是关键。 但是你没有你没有测试没有训练模型,你怎么知道你算法在客户数据上指标是多少呢,这已经是你做过这个领域已经有相关算法模型情况了,要是没有的话,还得做选型,那就更难估计了。 具体多管就是从工程解决一部分,商务解决一部分,争取客户理解等。 最后,算法工程师也是工程师,但是目前算法工程还很难解决概率问题,还很难达到IT工程的确定性。

12020
  • 广告
    关闭

    2023新春采购节

    领8888元新春采购礼包,抢爆款2核2G云服务器95元/年起,个人开发者加享折上折

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java递归算法_java递归算法是什么怎么算

    大家好,又见面了,我是你们朋友全栈君。 展开全部 一、递归算法基本思路: Java递归算法是基于Java语言实现递归算法。 递归往往能给我们带来非常简洁非常直观代码形式,从而使我们编码大大简化,然而递归思维确实跟我们常规思维相逆,通常都是从上而下思维问题,而递归趋势从下往上进行思维。 二、递归算法解决问题特点: 【1】递归就是方法里调用自身。 【2】在使用递归策略时,必须有一个明确递归结束条件,称为递归出口。 【3】递归算法代码显得很简洁,但递归算法解题运行效率较低。 【4】在递归调用过程系统为每一层返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。 【5】在做递归算法时候,一定把握出口,也就是做递归算法必须要有一个明确递归结束条件。这一点是非常重要。其实这个出口就是一个条件,当满足了这个条件时候我们就不再递归了。

    21530

    java数据结构与算法-思维导图

    因为最近在学习数据结构与算法相关知识,所以打算通过写笔记方式加强自己对数据结构与算法理解,也是为了方便以后复习。这里整理记录了一份数据结构与算法思维导图,也是为了以后学习更有方向性。 、动态规划、字符串匹配算法 数据结构与算法思维导图 数据结构与算法思维导图.jpg 总结 想要学习数据结构与算法,首先要掌握一个数据结构与算法中最重要概念——复杂度分析。 数据结构和算法解决是如何更省、更快地存储和处理数据问题,因此,我们就需要一个考量效率和资源消耗方法,这就是复杂度分析方法。 掌握了上面20种基础数据结构和算法,再学更加复杂数据结构和算法,就会非常容易、非常快。 在学习数据结构和算法过程,不要只是死记硬背,不要为了学习而学习,而是要学习它“来历”“自身特点”“适合解决问题”以及“实际应用场景”。

    72600

    设计类比思维与人工智能图像类比算法

    有没有想过让机器帮你做上图这类图形推理题? 再看看海报设计作品: ? 通过类比,再设计一张类似的: ? 如果机器可以学习其中类比关系,那可以无限地设计类似的海报。 这里核心都是“类比”思维。 类比是找到一种映射,可以使原始信息按照一定规则映射到目标信息。本论文研究图像类比就是把原始图像映射到目标图像过程,如下图: ? C : D A和B关系,C和D关系,都是什么? --都是拉弓射箭动作起始关系。 3 A : B :: C : ? 如果把A和B关系,应用于C,D图像将是什么样? --把A和B关系,类比至C和D,生成D图。 第1、2个问题,属于分类问题。第3个,是类比问题。 该论文解决就是第3个问题。 如果想更深入探讨,我们可以在微信群里或者知识星球聊聊。 三 拓展应用 1 图形颜色、旋转、缩放、位置 ? 学习下图里图形元素变换关系: ?

    71340

    数据科学强大思维

    创造力是没有特定答案,所以你需要做就是查看你数据,并享受它带来乐趣。创造力是一种额外收获,尽量不要在这个过程浪费太多时间。 这就是统计学,它是一门会改变你在不确定情况下思维方式科学。它目的是能产生一个像icarus一样飞跃,突破你知识局限,而不是遇到短板就突然结束。 机器学习是一种能做出,许多类似决策方法,这些决策涉及在算法查找数据模式,并使用这些模式对全新数据做出正确决策。在ML / AI术语,泛化是指这个模型能够很好地处理以前从未见过数据。 如果你没有拆分数据习惯,你可能会被困在20世纪。 如果你有大量数据,但是你看到是未分割数据集,那么你瓶颈可能就是会受到老式视角影响。每个人都习惯了陈旧思维方式,却忘记了与时俱进。 如果你认为他们为你提供了超出他们所探索信息可操作洞察力,请使用你秘密测试数据来检查他们结论。就这么简单! 结论:数据科学需要强大思维逻辑,与时俱进洞察力,还要能胆大心细摒弃一系列干扰信息。

    22230

    数据科学强大思维

    三、在不确定情况下做出决策 腾讯视频:统计思维-1-什么是统计数据 (原视频)YouTube:https://youtu.be/OJt-k9h9pmk 有时,理想和现实是有差距,当你不具备做决定所需要全部信息时 这就是统计学,它是一门会改变你在不确定情况下思维方式科学。它目的是能产生一个像icarus一样飞跃,突破你知识局限,而不是遇到短板就突然结束。 机器学习是一种能做出,许多类似决策方法,这些决策涉及在算法查找数据模式,并使用这些模式对全新数据做出正确决策。在ML / AI术语,泛化是指这个模型能够很好地处理以前从未见过数据。 如果你没有拆分数据习惯,你可能会被困在20世纪。 如果你有大量数据,但是你看到是未分割数据集,那么你瓶颈可能就是会受到老式视角影响。每个人都习惯了陈旧思维方式,却忘记了与时俱进。 如果你认为他们为你提供了超出他们所探索信息可操作洞察力,请使用你秘密测试数据来检查他们结论。就这么简单! 结论:数据科学需要强大思维逻辑,与时俱进洞察力,还要能胆大心细摒弃一系列干扰信息。

    24020

    思维风暴】算法迭代和递归理解

    但是递归算法不仅时间效率非常差,而且由于递归算法是不断函数调用和函数返回过程,因此其实际计算机运行时间通常远大于循环方式算法计算机运行时间,甚至在有限时间内无法求解。 这就存在一个把递归算法化为非递归算法问题。 需要用迭代消解递归情况 递归算法特别适合于所研究问题或所处理数据本身是递归定义情况。 而且在递归算法,往往会因为追求代码短或者在求解问题时一味追求规律性,多用了无用压栈和出栈操作。 假使一个递归过程本身包含了大量冗余操作,并且这个过程又可以用迭代来达到相同效果。这时,我们就一般用迭代来消解递归。也就是说尾递归算法和单向递归算法可用迭代算法来代替。 这样递归算法不宜转化为非递归算法。 结束语 说到底,在我们选择算法时应该全面分析算法可行性、效率、代码优化。在综合了算法各个因素后,选择合适算法来编写程序,这样程序才会达到优化效果。

    1.2K20

    JAVA加密算法之单向加密

    JAVA加密算法之单向加密 作者:幽鸿   Apr 16, 2016 12:15:24 AM Java一般需要获取对象MessageDigest来实现单向加密(信息摘要)。 是计算机广泛使用杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法基础原理,MD5前身有MD2、MD3和MD4。 SHA 是一种数据加密算法,该算法经过加密专家多年来发展和改进已日益完善,现在已成为公认最安全散列算法之一,并被广泛使用。 散列函数值可以说时对明文一种“指纹”或是“摘要”所以对散列值数字签名就可以视为对此明文数字签名。 Java代码   附件是以上几种源代码,附带额外两种使用方式。 增加一种关于文件哈希算法源代码: Java代码 import java.io.FileInputStream;    import java.io.InputStream;    import java.security.MessageDigest

    74320

    浅析技术写作思维误区

    这里我提出一种算法,能够轻松地完成对任意框架源码分析: 框架都会把底层复杂 API 封装起来,在源码里找到某个调这类 API 地方。这种地方随便搜索一下,到处都是。 找到错误堆栈里全部函数,把它们顺序反过来,依次复制到你《XX 源码分析》,并把注释翻译成中文。 三步搞定! 虽然这个算法十分荒唐而无聊,但笔者确实见过一些文章,写得就像是通过这个方式堆砌出来一样。代码艺术在于化繁为简,而这样内容却是在化繁为繁,读起来难受也是再正常不过了。 这就造成了一个尴尬结果,即我们在想要了解代码实现细节时,第一选择往往不是其他人写源码分析文章。比如,在之前编写 Chip-8 模拟器时候,我发现语言文档某一条指令语焉不详。 这时我首先想到去参考,是前人实现过 Java 版项目源码,而不是找一篇《模拟器源码分析》来读。

    38110

    思维和机器词义(CS)

    译文:由于自然语言处理(NLP)最新进展,机器显示出越来越广泛语言能力。许多算法源于心理学过去计算工作,提出了一个问题:它们是否像人们一样理解单词。 在这篇文章,我们比较了人类和机器是如何表达单词意思。我们认为,现代自然语言处理系统是人类词汇相似性有希望模型,但它们在许多其他方面都存在不足。 目前模型与大型语料库基于文本模式联系过于紧密,而与人们用词来表达愿望、目标和信念联系得太弱。词义也必须建立在视觉和行动基础上,并且能够灵活地组合,就像目前系统所没有的那样。 我们提出了具体挑战,以更人性化概念为基础来开发机器。除此之外,我们还讨论了认知科学和NLP含义。 Murphy 原文地址:https://arxiv.org/abs/2008.01766 思维和机器词义(CS).pdf

    25601

    JAVA加密算法之双向加密(一)

    JAVA加密算法之双向加密(一) 作者:幽鸿         加密,是以某种特殊算法改变原有的信息数据,使得未授权用户即使获得了已加密信息,但因不知解密方法,仍然无法了解信息内容 常用对称加密有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等 对称加密一般java定义成员 Java代码 //KeyGenerator 提供对称密钥生成器功能 Java代码 Security.addProvider(new com.sun.crypto.provider.SunJCE()); //实例化支持DES算法密钥生成器(算法名称命名需按规定 DES算法为密码体制对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制对称密码体制加密算法。 DES使用56位密钥和密码块方法,而在密码块方法,文本被分成64位大小文本块然后再进行加密。比起最初DES,3DES更为安全。

    2.2K10

    概率思维-成功人士最基础“人生算法

    但是,其实这道选择题,是有唯一正确答案。绿色按钮“期望值”更大(期望值为5000万),是最理性选择。“决策树”,就是你“人生算法”。 这就是基于“概率思维另一种“人生算法”。 不同“人生算法”,带来不同选择,从而获得完全不同的人生。 而“概率思维”就是很多成功人士最基础“人生算法”, 在不完全信息决策情况下,不是靠你聪明才智或者努力,就一定能有正确决策。 如果你曾连续创业四次,每次成功概率是25%的话,四次里面有一次成功就是比较大概率事件了。 这就是概率思维,是这个时代成功者所秉持底层思维。 理解和运用概率思维,去增加好运气,避开大坑和陷阱,创业者才能可能在成功路上走更远。

    55960

    页面重构模块化思维

    页面重构模块化思维 由 Ghostzhang 发表于 2009-06-21 21:24 更新于 2021-12-10 14:45 最近被“模块化”缠身,又是文章又是 PPT ,被逼着想了很多相关东西 对“模块化”解释,在 CNKI 中就有 28 种。可见“模块化”思维使用广泛。最接近页面重构“模块化”,现有的解释应该就是软件开发解释了。 模块具有以下几种基本属性:接口、功能、逻辑、状态,功能、状态与接口反映模块外部特性,逻辑反映它内部特性。在软件体系结构,模块是可组合、分解和更换单元。 相关书籍也蛮多,有兴趣同学可以搜一下。需要强调一点,我们所借鉴是一种思维方式。 ##页面制作为什么需要模块化? 有了公共定义,就得调整模块样式实现方式了,而这种调整也会影响到“接口”实现方式。 由于本篇主要是讲模块化思维方式,具体实现细节留待以后文章探讨。

    9930

    javasort排序算法_vbasort按某列排序

    大家好,又见面了,我是你们朋友全栈君。 C++中提供了sort函数,可以让程序员轻松地调用排序算法JAVA也有相应函数。 Arrays.sort(a); for (i=0;i<=4;i++) { System.out.println(a[i]+" "); } } } 2.基本元素从大到小排序: 由于要用到sort第二个参数 可以使用Interger.intvalue()获得其中int值 下面a是int型数组,b是Interger型数组,a拷贝到b,方便从大到小排序。capare返回值是1表示需要交换。 和2差不多,都是重载比较器,以下程序实现了点排序,其中x小拍前面,x一样时y小排前面 package test; import java.util.*; class point { int ,那么就用到sort第二个和第三个参数sort(a,p1,p2,cmp),表示对a数组[p1,p2)(注意左闭右开)部分按cmp规则进行排序 发布者:全栈程序员栈长,转载请注明出处:https:

    17430

    关于如何培养算法思维一点思考

    最近收到公众号里一个同学消息,大概意思是觉得自己做了很多题(可能是参考别人题解),但是碰到问题还是经常没有思路,想问下如何才能正确做题,以及如何培养正确算法思维。 做题过程其实是对已学知识巩固,在我看来,学习算法思维,完全可以以类似的方式完成。 首先OJ算法题有很多类型,你可以一个专题一个专题学习,这样在做时候知道这个题型是什么类型,每做一道题就多思考为什么会这样,不断地去归纳总结。 再比如用最多动态规划算法,很多人觉得难,是因为一开始做并不多,而且思考也不够,动态规划在实际应用中有很多变化形态,比如一维二维多维等。 另外我觉得不管能不能做出题目,都应该去参考那些最优算法,多分析性能关键点。

    1.4K20

    谈一谈|编程数学思维

    数学思维: 在个人理解,大多数编程题都有数学影子(离散数学图、树归到数据结构),还有一些题目仅用数学方法就可以解出答案。下题《最大降水量》就属于其中。 而绿值无论是行、还是列,均是最小数。即最终降雨量是16个数中最小数——34。 2.数学思维特点 数学思维在解决问题时,不局限于问题结果与严密逻辑格式,而是充满了创造性、抽象性。 但对于算法来说,数学抽象性对其十分重要。算法是需要从不同代码逻辑抽象出解决问题框架,也就是设计框架。设计框架是从更大格局来看待这个问题,使问题由大变小,因此对一些复杂问题作用显著。 结语 上面着重论述抽象性与创造性,并不表示否认逻辑性重要。而是因为逻辑性对编程重要性广为人知,没有论述必要。编程初级阶段对数学思维要求低,但随着算法等抽象事物学习,要求必然会提高。 因此若要追求更高编程境界,树立数学思维必不可少。

    39521

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 人脸融合

      人脸融合

      腾讯云神图·人脸融合通过快速精准地定位人脸关键点,将用户上传的照片与特定形象进行面部层面融合,使生成的图片同时具备用户与特定形象的外貌特征,支持单脸、多脸、选脸融合,满足不同的营销活动需求……

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券