×

Loading...
Ad by
Ad by

楼主列的多是基础概念,不是算法里面的。不过十年级的娃能明白这些也不错了

那三个和尚应该是recursion的题目
Report

Replies, comments and Discussions:

  • 枫下家园 / 望子成龙 / 学点算法是什么很难的事吗?娃十年级就自学了这些

    PSA and PDA

    Binary search

    Bitwise operations

    BFS and DFS

    Dijkstra's, Prim's, SPFA

    Disjoint union

    Greedy

    Dynamic programming

    Linear algebra and matrix exponentiation

    Computational geometry

    Polygons

    Convex hull

    Line sweep

    Segment trees with lazy propagation

    Binary indexed trees

    Binary search trees (mostly splay)

    Tarjan's SCC

    Heavy-light decomposition

    Maximum flow and bipartite matching

    Hashing

    • 作为码工,这些算法除了几个太基本的都没听说过呢,记得大三的算法只教了几种。记得本人一直觉得有点难度的一个,忘了是哪里来的,就是三个和尚,守着三棵柱子,每个柱子上有环,怎么搬忘了细节,核心是iteration,变形很多,这个你家小朋友研究了吗?
      • senior CCC没问题了
      • 楼主列的多是基础概念,不是算法里面的。不过十年级的娃能明白这些也不错了 +2
        那三个和尚应该是recursion的题目
      • 三个柱叫hanoi tower,是一个经典的数学induction的问题,一般理论数学系第一年都会把这个问题的induction证明介绍一遍。 +1
        • 看楼上的连接,一年级的计算机入门课。看来不比理论数学系简单哦。CS里面叫recursion, 现在工作中也常用的到。 +1
          • Hanoi tower的recursion不是重点,Hanoi tower重点是induction 的证明,证明中包含了recursion 过程,证明过程可以参考Spivak的calculus的课后题,解在Spivak calculus answer book里 +1
            • 不同的出击方向,CS的魅力和威力就在这里,不用啥高深理论数学,只有一系列离散的步骤。离散数学里面只有几个小学生也能理解的基本定律,然后就能解决所有复杂难题,算呗。recursion 很低效,对算力要求高。
              CS也的学些高深数学,你得明白你要解决的问题啊
              • 我就是cs和math double specialist毕业的,你没理解我的意思: +1

                我意思说hanoi tower的recursion不是重点,induction是重点,而你依然在和我讨论recursion的问题,我给一下我大一时候做hanoi tower的时候的证明(凭记忆再写一下):

                假设H(n) n其中n是蝶的过程,则显然 H(1)= 1, 只要移动1步即可。

                那么显然 H(k+1)= 2*H(k)+1 , 因为显然(k+1)th的碟子必然要再上面k个碟子移走后,才能把(k+1)th移到第三柱,然后还有通过k个碟子的转移过程才能完成,即,2次k个碟子转移+(k+1)th底碟的转移 ,这个是Hainoi Recursion的定义式,好了,我的意思是recursion定义式不是重点,重点在于induction部分。

                Hanoi的问题关键是要证明 2^n-1这个移蝶步骤,证明如下:

                当n=1时,显然只要一步就可以完成,所以H(1)=1, 符合2^1-1=1的这个式子

                假设当n=k时 H(k)=2^k-1成立

                证明n=k+1时 H(k+1)是否还是成立?

                H(k+1) 根据recursion定义则可以知道 H(k+1)=2*H(k)+1

                =2*(2^k-1)+1 (根据induction 的kth假设)

                =2^(k+1)-1

                则显然2^n-1这个式子是成立的,并且是Hanoi tower的非递归解。

                大部分recursion的问题,在数学上必须抛弃recursion定义,采用“线性”式子表达才是其本质。

                比如BST(binary search tree)的复杂度问题,复杂度定义都是recursion,但结论都是 类似于 n Log n的非recursiond的"线性"解,这是我的上贴的意思。

                • 哈哈,我是CS major 的, 只会看如何解决这个问题,及以后遇到类似的问题如何解决。这或许是个经典数学难题,但是CS里面拿它教入门,一类CS案例,没问题吧。数学部分我真的不关心,谢谢您的热心。
                  • 是,很多复杂数学问题有了新方法或技术就简化了。比如圆周率以前要用圆内接十几二十几边形的周长去算,这世界上怕也没几个人会做。有了微积分,高中生就能做了。计算机也是,数论里面最大的素数啥的,用计算机一个一个地去找小学生都干的了
                  • 大一的時在學校内部教材裏見過這個問題。不單是計算機專業學生,所有的大一工科生都見過,因爲使用統一的教材。那個數學證明其實很簡單的。
    • 只要高中数学就足够,把这些搞定了,十八岁就可以进大厂。进去后其实一般再也不用自己再写,学CS当码工其实就是这么回事。
      • 这么简单,还能拿高薪,何乐而不为呢?
        • %99.99的靠反复练习和背。自己能搞出一个是真牛 +1
    • 基本正常,五年前,十一年级的娃学了许多算法,完成了两门C S的A P课
    • 哪里用得着高中数学,小学数学足矣。计算机是二进制的,小学数学都是十进制的。 +2
      • 高中数学跟高中英语一样,是学业基础。
    • 难的不是这些算法本身。学习这些算法就是了解一个个抽象好的知识点。考察的是基本学习和逻辑能力。 一般的码工写码,也用不到太复杂的算法。真正难的是对现实世界的问题的抽象和建模,能将之归于算法,利用各种算法和算法组合解决问题。
    • 了解算法并学会,这已经是有问题描述,有分析,有解答的情况下了,不难,如果这样了还不会,基本不用考虑做 cs 了。已经走到知道用什么算法的程度,基本都不是难事了。真正难的是需求了解,分析,分解,架构,选择能用,好用的语言和算法,并拿出一个可用结果,这个不容易
      • 咱俩说的是一个意思。:)
    • 算法是敲门砖,工作以后需要用的机会并不多。如此造成了十多二十年经验的码农,除非下大力气重新刷,很难拼过少壮派。 +1
      • 他们速度很快。见过一个不但速度快,而且代码非常的简洁,函数名和变量名也起的有芝术。
        • 但是硅谷,西雅图地区的公司几乎没有不考试的了吧?
          • 不清楚,刷刷leecode好了。
    • 挺好的娃!加油!
    • 确实没啥,国内对此感兴趣的小朋友们看这套漫画就学完了,超简单: +2


      :

      :

      :

      :

      :

      :

      :



      • 有英文版本的吗?
        • 那套漫画版是国内的人写的,没有英文版,但类似或稍微正经不太漫画的英文原版 +1

          有本《数据结构与算法图解》(A Common-Sense Guide to Data Structures and Algorithms)可以参考一下:


          : ​​​​​​​

          :

          :

          :

          :

          :

          :

          :

          :

          :

      • 谢谢,立刻下单了,海运过来
        • 来真的啊?是大人学还是娃学?若是这里出生长大的娃能看这套书入门,俺咋觉得最佩服的不是数学了得而是中文很厉害!
    • 如果能确认是理解掌握(每个算法可以在大脑里过一遍), 那是非常牛的,估算下应该是1/1000。 +2
    • 80%的程序用不到什么算法,学算法主要是为了找工作的笔试或应付竞赛,面试人员不一定知道你列出的,只要熟记面试常用算法即可
      • 看了一些计算机竞赛题目其实也没用到某个特定算法,学这些算法主要是为了练练头脑,computing thinking
      • 面试公司很多先委托第三方考试赛选一下,节省时间面试
    • Binary search, Disjoint union, Greedy等等不能叫算法,而应该叫术语吧 +2
      • 有考图论的😂
      • 说实话,我不懂娃的这些。这些是娃发去奥校评估的。
    • 这个匿名人的口气还有内容就猜到是谁了, +3
      而且内容还是这些,好多年没变化了,依旧是名词堆砌。无法理解为毛要学PDA而不是TM?PDA只是--更restrictive的子集而已,没有入门学习的必要。PSA是啥?听都没听到过。matrix exp为什么要单独拿出来说,明明就是linear algebra的一部分。comp geo包含了下面一堆东西。还有一堆名词都是graph theory里的,不用单独列出。另外BST都是学self-balancing T的,哪有学splay T的。
      • 虎一下本坛外行家长足够了,还需要其他理由吗? +3
        • 内行家长也会被唬住,没见过啊,别是新东西吧😀 +2
      • 好奇,是谁 +2
    • 佩服,基因好!
    • 能自学这么多超厉害的,可以鼓励做几个小软件/网站了,培养兴趣很重要
    • 你家娃太厉害