提高我的算法能力 [英] Improve my Ability in Algorithm

查看:78
本文介绍了提高我的算法能力的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在创建软件时,为了提高算法能力,我需要采取哪些方法?

What approach do I need to do in order to increase my ability in algorithm when I create a software?

推荐答案

阅读所有文章和书籍



选择一个或两个'宠物'项目并练习应用和重新定义算法的实现



有没有魔法药水你可以采取 - 这需要时间,知识和实践
read all the articles and books you can

pick a 'pet' project or two and practice applying and redefining the implementation of algorithms

there is NO magic potion you can take - it all takes time, knowledge & practice


首先,同意术语算法 [ ^ ] : [...]在数学和计算机科学中,算法[...]是计算的逐步过程。 [...]



有多种角度可以查看你的问题。



如果你的技能是用特定语言(例如C ++)实现现有的逐步描述,那么首先需要了解问题域及其形式,然后具备编写和测试程序的实践经验。为了它。例如。参加 Regula Falsi [ ^ ]或 FFT(以及它在C ++中的实现) [ ^ ]等

First of all, it's helpful to agree on the term Algorithm[^]: [...] In mathematics and computer science, an algorithm [...] is a step-by-step procedure for calculations. [...]

There are various angles to look at your question.

If it's about your skills to implement an existing step-by-step description in a given language (e.g. C++), then you need first the understanding of the problem domain and its formalism and then have the practical experience to write and test the program for it. E.g. take Regula Falsi[^], or FFT (and it's implementation in C++)[^], etc.


  1. 了解问题域。
  2. 掌握它的形式主义。
  3. 从形式主义中剔除
  4. 获得使用给定计算机语言逐步描述的经验。





查看这个问题的另一个角度是:如何为给定问题生成一个逐步的过程来计算值而不需要手边的形式。例如。像修剪一个字符串,为给定的数字范围和精度编写add / sub / mul / div / rem / sin / cos的定点算术等问题。





Another angle to view this question is: how to produce for a given problem a step-by-step procedure to calculate values without having a formalism at hand. E.g. problems like "trim a string", "write a fixed-point arithmetic for add/sub/mul/div/rem/sin/cos for a given number range and precision", etc.



  1. 了解问题域。
  2. 发明形式主义(一种描述问题和可能解决方案的方法,例如在伪代码中)并试验它。
  3. 从形式主义中逐步推导出一些计算价值的程序。
  4. 获得实施步骤的经验 - 给定计算机语言的步骤描述。





你看到这两种情况都很常见。



您需要掌握离散数学的知识,因为您必须了解计算机算术的限制。您需要获得有关复杂性理论的知识,因为您必须知道如何估计计算的复杂性(例如执行时间,内存占用量等)。



无论如何,除了很大一部分热情外,你还需要一次又一次地锻炼身体。从第一种实现现有算法的方法开始。选择您感兴趣的主题,例如有向图(有很多关于它的书),或模式匹配(正则表达式),三角函数系列如sin(x)= x - x 3 / 3! + x 5 / 5! - x 7 / 7! ......(任何数学书籍等)并实施一些算法。



获得经验并随时学习...



干杯

Andi



You see that a good part is common to both cases.

You need to acquire knowledge on discrete mathematics since you have to know about the limits of computer arithmetics. You need to acquire knowledge about complexity theory since you have to know how to estimate the complexity of a calculation (e.g. execution time, memory foot print, etc.).

In any case, beside a good portion of enthusiasm, you need to exercise - again and again. Start with the first approach to "implement" existing algorithms. Chose a topic you are interested in, e.g. directed graphs (there are many books about it), or pattern match (regular expressions), trigonometric series like sin(x) = x - x3/3! + x5/5! - x7/7! ... (any Math book), etc. and implement some of the algorithms.

Gain experience and learn as you go...

Cheers
Andi


这篇关于提高我的算法能力的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆