当前位置:网站首页>Part I - Chapter 1 Overview
Part I - Chapter 1 Overview
2020-11-08 17:48:00 【Li Lihao】
Data structure introduction
Three reasons to use data structures : efficiency 、 abstract 、 reusability
Introduction to the algorithm : efficiency 、 abstract 、 reusability
General method of algorithm design : Random method 、 Divide and conquer method 、 Dynamic programming 、 The law of greed 、 Approximate method
General method of algorithm design
Random method
Random methods rely on the statistical properties of random numbers . For example, an example of applying the stochastic method is Quick sort .
Divide and conquer method
Divide and conquer contains 3 A step : decompose 、 solve 、 Merge . An example of divide and conquer is Merge sort
Dynamic programming
Dynamic programming is similar to divide and conquer , All of them decompose the larger problem into subproblems, and finally merge the results .
The difference , In dynamic planning , The way the problem is handled is related to the relationship between the subproblems . In divide and conquer , Each subproblem is independent .
therefore , In divide and conquer, you can use recursion ( The first 3 Chapter ) The way to solve each sub problem , Then merge the results with the results of other subproblems .
The law of greed
The greedy method can always make the best choice at present when solving problems . let me put it another way , It's not about the overall optimum , And it's just a local optimal solution in a sense .
An example of a greedy approach is Huffman coding ( The first 14 Chapter ), It's a data compression algorithm .
The most important part of Huffman coding is to build a Huffman tree ( Also known as the optimal binary tree ).
- (1) To build a Hoffman tree , From its leaf nodes, from the bottom up . Take each compressed symbol and the number of times they appear in the data ( frequency ) Save together as the root node of the binary tree .
- (2) Next , Select two root nodes with the minimum frequency as the left and right subtree nodes , Construct a new binary tree , And the frequency value of the new binary tree root node is the sum of the frequency values of the left and right subtree nodes .
- (3) Then repeat this step , Know to get the only tree , This is the final Hoffman tree .
The root node of the Huffman tree contains the total number of symbols in the data , Leaf nodes contain the original symbols and how often they appear .
Huffman coding is a greedy algorithm , Because every time it selects the most suitable two trees to merge .
Approximate method
The approximate method does not calculate the optimal solution , contrary , It only calculates “ Good enough. ” Solution . The approximate method is usually used to solve the problems that are expensive to calculate and unwilling to give up because of its value .
Salesman problem ( The first 16 Chapter ) It's a problem that is usually solved by approximation .
版权声明
本文为[Li Lihao]所创,转载请带上原文链接,感谢
边栏推荐
- Solution of DEV-C + + unable to debug in Windows Environment
- Your random IO hard disk
- TypeScript(1-2-2)
- 机械硬盘随机IO慢的超乎你的想象
- One minute comprehensive understanding of forsage smart contract global shared Ethereum matrix plan
- Build simple business monitoring Kanban based on Alibaba cloud log service
- VirtualBox安装centos7
- Package subsystem in Simulink
- 第二章编程练习
- Solution to cross domain problem of front end separation
猜你喜欢
Dynamic relu: Microsoft's refreshing device may be the best relu improvement | ECCV 2020
write文件一个字节后何时发起写磁盘IO
Recurrence of Apache kylin Remote Code Execution Vulnerability (cve-2020-1956)
SQL quick query
不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
学习记录并且简单分析
SQL 速查
On the concurrency of update operation
An online accident caused by improper use of thread pool
关于adb连接手机offline的问题解决
随机推荐
接口测试用例思路总结
Talk about go code coverage technology and best practices
LiteOS-消息队列-实战
What is forsage Ethereum smart contract? What is the global decline of Ethereum
Elasticsearch learning one (basic introduction)
Recurrence of Apache kylin Remote Code Execution Vulnerability (cve-2020-1956)
Dynamic ReLU:微软推出提点神器,可能是最好的ReLU改进 | ECCV 2020
趣文分享:C 语言和 C++、C# 的区别在什么地方?
(O)ServiceManager分析(一)之BinderInternal.getContextObject
What are the necessary laws and regulations to know when entering the Internet?
. net large data concurrency solution
SQL quick query
Chapter 5 programming
Xiaoqingtai officially set foot on the third day of no return
Why need to use API management platform
函数分类大pk!sigmoid和softmax,到底分别怎么用?
TypeScript(1-2-2)
Leancloud changes in October
abp(net core)+easyui+efcore实现仓储管理系统——出库管理之五(五十四)
Using k3s to create local development cluster