《开端》引发的回溯算法思考

每天好像我们都在某种循环之中,上学是,上班也是,恋爱也是。满足了某种条件才能跳出这次循环,进入下一个循环。

    最初对循环题材的认知是来源于《盗梦空间》,直至今日,这部由莱昂纳多主演,诺兰导演的科幻大作,仍然是我心目当中最佳的循环嵌套主题电影。

    不过促使我想写这篇文章的是《开端》,一部国产网剧。剧情简单概括来说就是,男女主在一辆公交车上遭遇了车祸和爆炸,但是每次沉睡或者死亡都会使他们重新回到公交车上,再次经历已经发生的事情。

    《开端》用的是时间线上的循环概念,主人公会带有重复时间的记忆,大量的爆炸场景搭配演员们的逼真演技和在线颜值,很过瘾。这不禁让我想到了一个概念,在算法上非常基础和重要的概念-Backtrack(回溯)。

    回溯的意思简单来说就是,在没有满足规定条件时无限循环某个功能,直至功能修改的参数满足规定的条件时停止回溯。那拿到影视作品来说就是,主人公触发了某种回溯机制,进入循环中,一开始没有明白某种真相,或者没有做出正确的决定或者行动,但逐渐明白跳出循环需要满足的条件,最后经过不断尝试后成功脱离循环,还收获可能的爱情、感动和对人性更深刻的认识。从各种好的循环片来看,观众是十分买账的,这点从豆瓣的评分就可以看出。这不禁让人联想,程序员是否可以跨界参与到影视作品的创作中,通过严密的逻辑推理,创作出更让观众瞠目结舌的新概念。

    为什么在算法中和影视作品中回溯,或者说是循环都如此让人着迷?在编程中回溯和递归是一种大量介绍重复代码的工具,一般需要较高的抽象能力才会想到运用,这不是一个初学者容易想到的技法。影视作品中身在循环的主人公就像是不断被送往下一次递归,但是每一次都是建立在上一次的经验和判断之上,那种观众和主人公一起刷怪积累经验的过程,让人大呼过瘾。一部好的电影会让人有代入感,还记得小学学校组织去看儿童话剧,故事会告诉大家谁是坏人,然后在同一个场景坏人伪装成了好人,紧接着演员会抛出类似于“小朋友们你们说我该不该相信他呢?”,此时台下一定会有如雷贯耳般的尖叫声“不!”,虽然放到今天这颇有“大聪明”的直视感,但这恰恰说明了话剧的成功,小朋友们完全沉入了其中。通过话剧中的循环,观众们们提前获得了必要的信息,剧中如果好人被坏人击败,那么坏人将得逞,故事将继续循环,直到好人得到了足够的信息,击败了坏人,那么故事将画上圆满的句号。这和程序员在设计回溯时,有着极大的相似性,回溯的关键一环就是设计出口,设计那个圆满结局,程序员是站在上帝视角如同观众,程序中的变量就是主人公,在程序中重复改变着变量。这种模式避免了电影中过多的剧情铺开和场景需要,专注于交代主人公的心理和情感变化,又能够让观众参与到一次次循环中共同探索和收集信息,补充了弹幕的内容。

    电影来源于生活,生活中存在回溯吗?每天好像我们都在某种循环之中,上学是,上班也是,恋爱也是。满足了某种条件才能跳出这次循环,进入下一个循环。

你可能感兴趣的:(《开端》引发的回溯算法思考)