刺客 vs 保镖

Maryam Mirzakhani 在 2014 年的 一次报告 中提出了如下的问题:(问题大约在视频的 25 分 50 秒处)

问题 假设平面上有一个正方形的房间,房间的四面墙壁都是光滑的反射镜子。子弹在碰到墙壁时会遵循入射角等于出射角的规律无限反射下去。房间中有一位政要和一个刺客,他们的位置是固定的,但可能是房间中任何两点。问题是:能否在房间中放置有限数量的保镖,使得这些保镖可以封锁刺客的所有射击角度,从而确保政要不被子弹击中?

根据 这篇论文 的考据,这个问题曾经在 1989 年列宁格勒的数学竞赛中出现过。最近,通过 PBSmath3ma 的博客 的科普推广,这个问题又引起了更多人的兴趣。我强烈建议读者在深入阅读本文之前,先观看这些视频和博客。它们的讲解非常通俗易懂,对于普通读者来说非常友好。

Greg Egan 在他的博客中 进一步讨论了房间是正三角形和正六边形的情况。虽然他给出的答案是正确的,但是他对正六边形情形的解释有点让人难以理解(Greg Egan 的一贯风格)。

正方形、正三角形和正六边形是仅有的三种可以用有限多个保镖保护目标的情形,对其它正 \(N\,(N\ne3,4,6)\) 边形房间,有限数量的保镖是不行的。

本文是对 math3ma 和 Greg Egan 博客文章的补充,我将主要针对正六边形的情况进行详细解释。我觉得从仿射 Weyl 群的角度来看这个情形最方便,但这对大多数读者来说可能是个陌生的概念。我还是假定读者知道群的概念,并尽量结合直观的图形来解释。如果读者对深入了解仿射 Weyl 群感兴趣,可以参考 Humphreys (1990) chapter 4。

本文的代码在 Github 上。这个项目包含了一个交互式的脚本,你可以在窗口中点击并拖拽鼠标来查看刺客射击的轨迹以及保镖的位置:

正方形 正三角形 正六边形

Todd-Coxeter 算法和 3D/4D 均匀多胞体

The English version of this doc is here.

本文介绍我写的一个高颜值的、脱离了低级趣味的小程序:用 Python 和 POV-Ray 绘制各种三维多面体和四维多胞体,代码在 Github 上。

以下是用这个程序渲染的一些例子,其中不同颜色的顶点/边/面表示它们在对称群的作用下位于不同的轨道中,具体解释见后。

Möbius 变换的分类与上半双曲空间的等距

2021/06/27 更新:我更新了一下 shader 代码,把每个动画放在一个 SVG 图片中。最后几个动画代码是可以使用键盘选择场景的,具体操作如下:

  • 按下 1 开启/关闭 Möbius 变换。
  • 按下 2 开启/关闭椭圆旋转。
  • 按下 3 开启/关闭双曲缩放。
  • 按下 4 开启/关闭展示 Riemann 球面。

这几个按键可以组合出许多不同的效果来!


本文的想法源自 Roice Nelson 的 shadertoy 项目,我觉得他的创意很棒,就是效果有点糙,于是 动手改进了一番。不懂的人看这个动画可能只是觉得好玩,其实它背后的数学并不简单。

这篇文章将用动画的形式从三个角度演示 Möbius 变换,这三个角度是密切相关的:

  1. Möbius 变换作为扩充复平面 \(\hat{\mathbb{C}}\) 到自身的全纯函数。
  2. Möbius 变换作为 Riemann 球面 \(S^2\) 到自身的全纯函数。
  3. Möbius 变换作为上半双曲空间中的等距变换。

本文只做演示,并不介绍详细的数学证明。读者可以参考下面的资料:

  1. 维基百科页面.
  2. Visual complex analysis, Tristan Needham.
  3. Indra’s pearls, chapter 3.
  4. An introduction to complex function theory. Bruce P. Palka. Undergraduate texts in mathematics. chapter IX, section 2.

本文的动画应该可以帮助你更好地理解这些资料中的内容。

 | 

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器