Byzantine 和 Dijkstra
这个学期学习分布式算法,老师讲课没有什么互动,按照讲义细致的慢慢的讲解。本人也算多线程,多进程,并行都或多或少实践良久,对老师再慢慢的从简单,基础的概念诉说,各个算法都各种描述、证明、时间空间复杂度评价挺快就坚持不下来了,还是看我的OpenGL吧。
上课中老师布置了作业,用SystemC模拟实现下HS算法,五一放假正好没什么安排就决定处理下这个,问题来了,什么是HS算法?老师的PDF翻了下也没解释,同章节就提了LCR算法,也是个’爆简单’的算法,想想HS应该也不难,便在网上搜索起来,发现相关解释并不多,有一篇略微提了一下的重点说Byzantine算法去了,可能这个HS太简单所以网上说的也不多吧?但是这个Byzantine吸引到我了,说是并行计算里理解生涩但需要好好理解弄清楚的问题,索性想着好好看一下,发现故事不少,顺藤摸瓜又看到不少讨论介绍这个问题的,还把作者的相关介绍看了一堆(算法本身挺简明的,但是要明确理解,证明确实生涩一些)。绕了半天,后面在另一个老师的讲义中看到HS描述,就两边通信选取leader,挺简单哈,不过在SystemC老师设定的框架中实现还是花了不少时间(细节不表,也不想说了)。
这个经历却又触动了我,想起先前学习机器视觉,从简单的图像高低频信号处理到后面各种滤波处理、特征提取、图像训练等等。基础概念的累积,每个概念,算法严谨表述证明评价理解,才能一步步累积描述处理更复杂的系统。工作久了,慢慢不少东西用已经很熟悉的方式变形、排列组合处理一下就搞定。最多也就拿来主义快速参考解决问题。却在更深入的层次和其它领域缺少耐心,不能做到去夯实基础,持续学习。导致思维固化,也与前沿技术慢慢脱节,不了解现在各种高精尖是如何处理完成的。
今天上课提到Dijkstra算法,又是一个例子,提出来时也是很简单的一段伪码,然后用formal mode方式描述了一遍,十行变百行,后面再是分析证明评价,盯着这几行简单常见的代码段,突然有一种极其深邃的感觉。
发现自己越来越不会学习了,有感而发一大堆,中心思想:积跬步,至千里。
近期评论