看《长安十二时辰》可以了解哪些算法知识?

程序员小吴 2019-07-27 10:59:00
最近,小吴在追一部古装剧——《长安十二时辰》。

 

故事讲的是在上元节前夕,长安城混入可疑人员,身陷囹圄的张小敬临危受命,与少年天才李必携手在十二时辰内破除隐患。

 

该剧的一大亮点就在于时间很紧迫,需要在二十四小时内捉拿蓄谋已久的“恐怖分子”。

 

而之所以张小敬与李必能及时破除隐患,依赖的是正确的使用数据结构与算法!

 

大案牍术与推荐算法

 

 

大案牍术的发明者是靖安司中的徐宾,凭借着神奇的“记忆宫殿”加上刻苦钻研,研究出了一套以档案数据为基础的处理事务的方法,即为“大案牍术”。

 

你可以将大案牍术理解为我们当下热门的大数据

 

依托于这个大案牍术,可以快速分析大量数据信息进行推理,无论是破案调查找人,还是预言未来,都可以做到。

 

故事的主角张小敬正是凭借着大案牍术中的推荐算法脱颖而出,成为拯救长安的大英雄。

 

长安舆图与时间复杂度

 

对于“恐怖分子”狼卫来说,长安不是他们的家乡,是一个人生地不熟的陌生城市。

 

如果通过四处遍历的方式(暴力法)去寻找长安的核心目标,那再给他们几个月也是无法精准定位的,此时他们到达目的地的时间复杂度为 O(n2)。

 

所以,剧情一开始狼卫准备夺取长安舆图 。

 

 

有了上面这份长安舆图便可轻易精准定位目标所在地,狼卫使用长安舆图优化了时间复杂度,达到了 O(n) 级别。

 

此时,长安危在旦夕。

 

“五尊阎罗”张小敬站出来了!对于他来说,长安可不是平面的,而是三维立体的,哪里有沟渠哪里能上房都一清二楚。

 

张小敬通过以空间换时间的方式(飞檐走壁),极大的优化了时间复杂度,达到了O(logn) 的级别。

 

正是因为他们使用的算法不同,这才在为张小敬能追上狼卫提供了理论上的支持。

 

望楼系统与加密算法

 

整部剧的信息传递极大的依赖于剧中的望楼系统

 

先说一下望楼:望楼是八丈高的瞭望塔,星罗棋布的安置于长安城中,敲鼓之后用方格拼出的图案传递信息。

 

▲ 图片来源于北斗北工作室

 

望楼系统的信息传递使用的是公开的方式,视野处都能看到望楼上显示的花纹图案,但是它们的具体含义只有内部人员通过密码本进行查询,方可解密出对应的文字含义。

 

▲ 图片来源于北斗北工作室

 

 

作者:程序员小吴

来源:五分钟学算法(ID:CXYxiaowu)

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn

活动预告