2022 年 6 月,「卡申银矿事件」曾轰动一时——有一位 Wikipedia 用户为了在文游中获取优势,杜撰了大量关于古罗斯史的词条,全长超过百万字,而其中部分内容还反向污染了其他语言的 Wiki。感叹之余,我变得乐于溯源更「一手」的信息,结果今天竟偶然发现了算法竞赛趣闻一则,特此与大家分享一下。
近几天我正在进行的一项工作是重写 OI-Wiki「最大流」词条的「Ford-Fulkerson 增广」部分。OI-Wiki 大概已经是质量较高的中文算法竞赛资料,但这一部分内容逻辑混乱,充满不 well-defined 的表述、含糊其辞的伪证和莫名奇妙的文章结构,水准似乎甚至不及 CSDN 的垃圾博文。尽管如此,自我第一次看到这部分内容以来,它从来没有被显著改进过,因此最近我下定决心打算修订一下。这几天我整理资料并重写了很多较正式的、长期以来被中文互联网上绝大部分关于增广类最大流算法的介绍所忽略的证明,它们已经被提案到 PR4663,希望这部分工作能早日合并到主分支!(upd:合并了!)
说回正题——算法竞赛趣闻。在 OI-Wiki 上,作为增广类最大流算法的重要部分,Edmonds-Karp 算法一节使用了以下标题「Edmonds-Karp 动能算法(EK 算法)」。我很早就对这个标题感到疑惑,因为 Edmonds-Karp 算法的流程中似乎没有任何能定义成「动能」或者让人联想到「动能」的内容。
在重写这一部分内容的过程中,再次看到这个标题的我决定趁此机会研究一下这个标题到底最早出自哪里、是否来自某个中文用户的杜撰。在 Google 上尝试了各种检索之后,除了一个叫做「Chemical Reaction Optimization Algorithm」的最大流算法定义了「Kinetic Energy」之外,我没有发现任何关于最大流的英文资料提到「动能」;百度上大量提到「Edmonds-Karp 动能算法」的页面也基本都出现在近几年,尽管 Edmonds-Karp 算法是一个上世纪七十年代的算法。
此时我内心已经有答案了,但是我继续在 Universal OJ 群提出了以上问题。如果这个词存在一个实际可信的来源,群里的老害中应该总是会有人听说过。结果是 UOJ 群友也开始对这个问题感到疑惑,我们开始查这个标题最早是由谁 commit 到 OI-Wiki 的。Negiizhao 指出这部分内容最早可以追溯到 PR344,在 2018.09.01 被一名叫做 Xarfa 的一击脱离用户所编辑,并被当时一位叫做 GekkaSaori 的 reviewer 通过。
由于不知道一击脱离的 Xarfa 到底是谁,这个问题好像也就带着些许一拳打在棉花上的意味到此为止了。然而这似乎太莫名其妙了一点,我还是不甘心。在百度检索「最大流 动能 site:http://luogu.com.cn」之后,我发现这个说法竟然有一个比 PR344 更早的来源——2018.03.24 的一篇评论数量为 0 的个人博客——网络最大流 - DimensionTripper 的博客 - 洛谷博客,其中出现了如下标题。由于这篇博客引用的资料中并没有出现「动能」一说,这可能是这个说法的最早来源。
群友意识到,原来「动能」这个词来自于个人博客上的一个玩笑,即物理上常用 E_k 代表动能这一物理量。Xarfa 可能是一位对网络流理解不多但尝试搬运该部分内容的用户,但在搬运时没有意识到这是一个玩笑,并且由于 OI-Wiki 禁止使用删除线所以移除了「动能」二字的删除线。这一玩笑在逃过 review 之后进入了 OI-wiki 并保持原状至今长达四年有余,期间部分其他网站和博客也开始引用这一说法。一篇 0 评论的个人博客中的玩笑就这样被一些不明真相的选手当作正式表述以讹传讹地在中文算法竞赛圈子中传播。
难绷之余,这也只不过是中文算法竞赛圈子现状的一个缩影。作为许多算法竞赛选手眼中的黑盒,网络流这一领域确实是各种奇怪伪证的重灾区;但在除此之外的领域,也有大量错误的信息、过时的语法等等,通过许多个人博客杂乱无章的互相摘编,在国内算法竞赛选手之间广为流传。我心目中的算法竞赛应当有一种纯粹的、严谨的、科学的美感在其中,而如今的算法竞赛是否也大势所趋地陷入一种互联网迷思?
CSDN 博文良莠不齐也无可指摘,但 OI-Wiki 不应如此。我不想说「尽管如此我也无力改变什么就是了」。确实我们中的大部分人都不可能让算法竞赛出现什么显著的改变,但我仍愿意做一些向沙漠中洒水的工作。我很想看到修订 OI-Wiki「最大流」页面之后,下一代算法竞赛选手不再满口念着各种最大流算法伪证的那天。很没有意义是吗?毕竟不一定会有那天呢。但我很喜欢耶!
Upd:动笔之前没想到这篇文章能得到这么多关注,所以这里给不熟悉算法竞赛的读者额外补充一些信息:一是行文比较正式可能给读者带来「这一讹误已造成较显著影响」的印象,不过幸运的是实际上到目前为止它传播的规模不算大,希望 OI-Wiki 修正之后能逐渐停止传播;二是对于类似「不同于卡申银矿事件,本文事件的最初来源只是一个无恶意的玩笑」的评价我当然赞同,只是调查完之后心里感到有点离谱,联想到看过的各种以讹传讹资料,忍不住借来吐槽一下,希望这个比喻不会显得过于不恰当。感谢大家的阅读。
上一篇:视频号运营的常见问题有哪些?
下一篇:给想在拼多多开店的建议