怎么发现一个有用的算法?
我们平时发现一个算法一般会遵循一下这几个步骤:
- 遇到问题,试图发现这个问题的主要元素。
- 然后找到解决这个问题的算法
- 第一次写的算法(也许很快,也许很慢)
- 但一般第一次写的算法都比较糟糕,这时候就找方法解决为什么会那么糟糕了
- 找到使得算法变好的关键点
- 不断迭代
Dynamic Connectivity
寻找有没有连接两个点的路径,如下:
你发现又连接8-9的路径,但是没有连接0-7的路径,要是想连接0-7的话,可以连接0-5,6-1,2-7,这就连接上0-7了。
一看,你发现连接0-1就可以直接连接0-7了,这样貌似的效率要更高。
其实很多时候,我们的算法就是干的这么一些事,为了让我们运行的效率更高,消耗更少的计算机资源。
事实上,很多时候,计算机做的就是连接,比如排序算法,就是通过整数索引进行元素与索引的连接,进而完成一些操作。
连接相关的定义还有:
很多时候,我们会在一些没有关系连接的部分建立连接,形成更加强大的组块。但现实是,往往连接的都是一些非常大的数,这就需要我们的算法足够的高效。