"The fun of algorithm" author Wang Xiaohua interview: Read more, do more, think more is the secret

Source: Internet
Author: User

Wang Xiaohua is a programmer who is passionate about algorithmic research, a super-popular blogger (blog) for the CSDN algorithm column, and the author of the "Fun of Algorithms" book. 2005 graduated from Huazhong University of Science and Technology, currently in the ZTE Shanghai Research and Development Center engaged in optical fiber access network communications equipment development, as EPON (Ethernet passive optical networks) business software development Manager, involved in the development of PON equipment in the world deployed over billion line, for hundreds of millions of families to provide broadband access services.

Recently, I interviewed Wang Xiaohua, asked him to share the fun of the research algorithm.


Wang Xiaohua

CSDN: Please do a self-introduction, your company and the current area of responsibility.

Wang Xiaohua: I am currently working on software development at the ZTE Shanghai Research and Development Center. The products we develop are passive optical network (PON) equipment, in the field of network equipment, we develop equipment belonging to the access network equipment, which is often said "the last kilometer of the network." Optical access technology is currently the mainstream technology access network, the future of family broadband construction, such as FTTH, FTTB, are dependent on the optical access technology, the continuous development and innovation. Currently, the next Generation Pon technology (NG-PON2) standards are in the process, the NG-PON2 standard will provide a single fiber 40G bps downlink bandwidth, gigabit fiber into the home will become a reality, then only the hundred-gigabit interface will be eliminated, the rate of wireless transmission will rise.

CSDN: What prompted you to be interested in the algorithm. What causes you to insist on the algorithm to do it.

Wang Xiaohua: at first I have no concept of algorithms and software, I think the program is to deal with the work. Later because the study form code input method, wrote a program to convert the Windows Format Table Code table file to Ucdos supported code table file format, this program only took a few minutes to complete the conversion of a hundred thousand of records, give me a great shock, let me think this thing is not just hand in homework, You can also do something useful to start interested in programming, start with a simple sorting algorithm, and gradually get in touch with more useful algorithms, thus creating an interest in design algorithms.

Research algorithm is actually a very boring process, often a person sitting in front of the computer is a day, other people are difficult to understand this behavior, no interest is not stick down. School is also keen to participate in various algorithm competitions, spoon-fed back a lot of things, remember the model of the algorithm, make very hard, also did not get very good results. At that time thought this was the meaning of the algorithm, making almost lost interest in the algorithm. Graduate students want to do a MP3 player, in order to achieve the function of equalizer and spectrum, find a lot of information, finally found a discrete Fourier transform algorithm, a small algorithm contains so much meaning in the inside, so the algorithm and ignited interest. Later learned some very interesting, but are very practical algorithms, such as a * path-finding algorithm, chess game tree algorithm and so on, gradually began to put interest in more practical practical class algorithm, began to study a variety of practical problems of the algorithm design and implementation. The more practical problems are solved, the stronger the ability to analyze and solve problems, the greater the interest of the "play" algorithm.

CSDN: What is the idea of the "fun of Algorithms" book? How do you suggest to the reader how to learn the book?

Wang Xiaohua: This book has been planned from the very beginning, along with the idea of fostering interest. There are already a lot of algorithmic design books on the market, or easy to understand, or unfathomable, if you follow a similar discussion to write another one completely meaningless. And my "algorithm series" column has just introduced a lot of interesting algorithms, so based on this column, supplemented by a number of interesting professional class algorithm and practical class algorithm, the main structure of the book. Each interesting algorithm shows from the problem, to the design model, finally to solve the problem of the implementation of the complete process of the algorithm, the algorithm design of the three key issues into the entire process, so that readers get a fun algorithm at the same time, also learned the whole process of algorithm design.

There is no relationship between the chapters of this book, and you can start reading the book from any of the chapters of interest. For the reader, I recommend that the first three chapters be read before you start by selecting the chapters of interest. All the source code of this book can be downloaded in the Turing community, and any questions can be found in the source code.

CSDN: What is an algorithm. What are the most common algorithms? Can you give us an example of one of them?

Wang Xiaohua: I understand the meaning of the algorithm is to solve the problem, from this point of view, I will divide the algorithm into professional class algorithm, general class algorithm and practical class algorithm three categories.

Professional class algorithms usually have some solid mathematical theory, physical theory or other theory as a theoretical support, such as discrete Fourier transform algorithm, RSA algorithm, AES encryption algorithm, various curve fitting method, interpolation algorithm, Newton iterative method and computer graphics in the various graph generation algorithm, Blanking algorithm and so on. Professional class algorithms are commonly used in a number of professional fields, after years of research and technology accumulation, the general formation of a variety of fixed high-efficiency algorithm implementation, in many cases can be like a function library directly to use.

General-purpose algorithms also have corresponding theoretical support, the routines of the algorithm is fixed, but the implementation of the algorithm depends on the specific problems. Examples of such algorithms are also more, such as annealing algorithm, Ant colony algorithm, genetic algorithm, BP neural network Model Learning algorithm (Error reverse propagation algorithm) and so on. Although this kind of algorithm is fixed, but different problems have different implementation way. Taking the genetic algorithm as an example, to design different genetic coding formats for different problems, the genetic coding format is not the same, the corresponding gene crossover and mutation algorithm of the specific implementation of nature is not the same, but in general, or in accordance with the genetic algorithm routines. General-purpose algorithm is more widely used, the above mentioned algorithms are commonly used optimization algorithm (random search algorithm), in the field of machine learning, artificial intelligence and virtual reality can be seen in the figure of these algorithms.

utility-class algorithms are often designed for specific problems and are used to solve some or some kind of problem. Sometimes there are many algorithms for solving problems, but it is often recognized that the most efficient algorithms are valued. For example, a stable matching problem, Gale-shapley algorithm is recognized as the best algorithm. Binary matching problem, you will be preferred Hungarian algorithm. The Pierre Dellacherie algorithm is the best one-piece evaluation algorithm in Tetris games. In addition to these well-known algorithms, anyone designed to solve a problem can also be classified as a practical algorithm, such as the book provides the solution "three buckets equal to 8 liters of water problem" algorithm and "Einstein's study Questions" algorithm. Designing practical algorithms for specific problems is an important factor to measure the level of a programmer, and it is also a problem that programmers need to focus on.

CSDN: What algorithms does ZTE use today? Can you give the reader a detailed description of the algorithm.

Wang Xiaohua: ZTE's product line is very long, even including solar power and wireless charging, I really do not know what these products are used in the end of the algorithm. In terms of the products I'm involved in, a lot of the basic algorithms will be used, both professional algorithms and general-purpose algorithms designed to solve specific problems. For example, the sorting and finding of linear tables uses the fast sorting algorithm and the binary search algorithm, the data consistency check uses the CRC algorithm, and the circular queue algorithm mentioned in this book. Pon network is characterized by the downlink data is broadcast to all terminal equipment, in order to data security, the standard defines a set of key exchange algorithm, but also stipulates that the actual encryption data using the triple perturbation algorithm and AES encryption algorithm.

CSDN: from a senior programmer to the author of Algorithmic fun, what is your learning secret? The ways in which you can improve your professional skills.

Wang Xiaohua: actually there is no secret, is to see more, do more and think more. More reading is to read more, look at a variety of excellent algorithm implementation code. More to do is to write more code, understand the implementation of the algorithm and write the correct algorithm between the realization of a very wide sill, research an algorithm, to be able to correctly write the algorithm until the implementation, rather than to read it. Think more than thinking, why this algorithm is more efficient than the algorithm. Why should this heuristic function be designed like this? Thinking more can cultivate the ability of extrapolate.

CSDN: What is the next step in the future? What are the difficulties that need to be overcome.

Wang Xiaohua: This is really a momentary don't know where to start, not to answer, sorry.

CSDN: Currently, what are the programming languages you use? In your opinion, which languages are more popular.

Wang Xiaohua: The programming language I'm using today is C + + and Lua, and occasionally in Java. 2008 Listen to Ivar Jacoson's speech, he told a joke, described the software industry as a fashion industry, one day a trend: 15 years ago we all discussed Oo, ten years ago we were chasing components, UML and up, five years ago became RUP and CMMI, two years ago, popular XP, is now scrum. But one of his words I agree with is that these are good things, but there is no silver bullet that can solve all your problems. My view of today's more popular programming languages is the same, there is a reason, these programming languages are not good or bad points, but have their own areas of expertise, to use them rationally.

CSDN: Since when did you get into contact with CSDN? Do you have any suggestions for csdn?

Wang Xiaohua: I have been a registered user of CSDN since 2001, and I started out as a forum and later wrote a blog. Suggested words I think csdn to allow bloggers to get benefits through the blog, selfless dedication is a kind of enthusiasm, but after the enthusiasm of nothing. Before CSDN's blog was able to embed ads, I got $ more than 10 in revenue from embedded ads, then canceled, and I saw a lot of people move their blogs away, or apply for a separate domain. CSDN's blog and technical Articles to prosper, there will be a winning model.

Reprint: Click to open link

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.