We recommend a good algorithm entry book:
Algorithm design and analysis basics
2
Version), (US)
Translated by Pan Yan, anany Levitin.
Besides 《
Thinking in Java, this is another book that I have read 2/3 and want to read continuously. This book is well written, and I can feel that the author tries his best to be close to the reader, and the explanation is clear and easy to understand, involving comprehensive, in addition, there are many things that have never been mentioned in other algorithm books (such as the Foundation for solving algorithm problems and a large number of interesting puzzles ).
In general, it is highly readable, interesting, and practical. It achieves a good balance and compromise between theory and practice and has a good enlightening effect. If you want to have an easy-to-understand and in-depth algorithm entry book, this book is the best choice.
The most authoritative algorithm book is naturally an introduction to algorithms. I think these two books are enough for general algorithms! It seems that there is another book called "programmer's practical algorithm", but I just flipped through it in the bookstore. I can tell you the title of the book. This book should be very good as a portable algorithm manual.
PS
: Thinking About Algorithms
What is an algorithm? As the name suggests, the calculation method. Algorithms are the methods and approaches for solving problems using computational methods.
Hardware provides the physical resources required for computing, while algorithms provide the ideas and technologies required for computing. Hardware and algorithms constitute the computing power of computers. Software, however, is the logical entity that can be used by the combination of hardware and algorithms.
This involves three basic questions: What is computing? How to calculate? Can everything be computed?
What
Is computing?
-
In the general sense, computation refers to mathematical computation, addition, subtraction, multiplication, division, modulo, and other computation, and most computation (including subtraction, multiplication, division, and modulo, no matter how complicated) can be implemented using addition;
Now that computers can process text, what is the computing technology used to process text?
At the computer hardware level, any operation is implemented using bitwise operations. Without a doubt, how to use bitwise operations to achieve various operations is what mathematicians are best.
Bitwise operations are logical representations and changes of physical states. Physical states can be implemented by electronics, machinery, or any other physical entity. Undoubtedly, this is what physicists are best.
In the human body and other creatures, the physical entity of computation may be the objects carried by neurons, bioelectricity, and so on. What is used as the unit of computation is still a mystery.
How to calculate
?
First, the part involved in scientific computing is naturally related to mathematics and specific fields (especially engineering fields). It can be calculated and improved by following related theorems and formulas; computing technologies involving text data processing are emerging computer application fields. The question of how to calculate is probably to select the basic computing unit (such as addition, subtraction, multiplication, division, and data replication) and how it is combined (control process, order or concurrency ).
Concurrent computing or parallel computing will surely become the mainstream in the future. The computing method adopted by the human brain is very likely to adopt the parallel method. Assume that 1 m² of the space can be placed with 100 CPUs, and 100 m² of the space can be placed with 10000 CPUs. If the utilization rate of parallel computing algorithms is 50%, there will also be 5000 CPU computing capabilities, this means that the current one-year computing workload may only require 365/5000 × 24 = 1.752 hours. Think about what the future it world will look like if we adopt a better parallel technology.
Can everything be computed?
Obviously, at least for the moment, the answer is no. This is a theoretical issue of Computability. Furthermore, it is often very clumsy to apply algorithms mechanically to daily life. What kind of computing units and methods have humans (and even other creatures) taken to make people think about problems so agile and changeable? It is still a question worth exploring.
Where is the program developer?
Based on physical and bit operations
1
,
2. In addition, the scientific computing part is mainly completed by scientists in related fields. For program developers, the so-called algorithms should mainly refer to the algorithm technologies used in text processing.