地球上最长的直线,从泉州出发
目录
- 一张 2012 年的地图,和一个憋了六年的答案
- 球面上没有「直线」,只有大圆
- 被海岸线折磨疯的优化问题
- 泉州到萨格里什:一条横穿 15 国的直线
- 我亲自算了一遍:32,090 和 11,241
- 直线的尽头是另一个起点
一张 2012 年的地图,和一个憋了六年的答案
2012 年 12 月 29 日,Reddit 用户 kepleronlyknows 在 r/MapPorn 发了一张图:一条从巴基斯坦一直延伸到俄罗斯堪察加半岛的线,标题写着「你可以几乎直线航行 20,000 英里而不碰到陆地」。
当时没人能证明它是对的还是错的。评论区吵成一团——有人觉得这是大圆航线(球面上的直线投影到平面地图确实会弯),有人觉得这纯粹是瞎画。这张图就像往数学论坛里扔了一颗石子,激起的水花飘了六年。
2018 年,两位研究者(Rohan Chabukswar 和 Kushal Mukherjee)终于把它算清楚了。结论有点反直觉:那个 Reddit 用户是对的。
而这只是水下的冰山一角。他们顺手把镜像问题也解了——不碰海洋、纯陆地能直线走多远?答案是:从中国泉州晋江出发,穿过 15 个国家,最后停在葡萄牙的萨格里什。 全程 11,241 公里。
球面上没有「直线」,只有大圆
先解决一个概念问题:什么算「直线」?
在球面上,你没法画一条欧几里得意义上的直线——因为球面本身是弯的。球面上的「直线」是大圆(great circle):任何一个过球心的平面与球面相交的圆。大圆是球面上两点之间的最短路径,是测地线。
所以那篇论文里的「直线」,全是大圆。问题变成了:在所有过地球表面的大圆里,哪一条能连续经过最多的海洋(或陆地)而不被截断?
这就是为什么平面地图上看起来弯弯曲曲的弧线,在球面上反而是「笔直」的。下左图是球面上的大圆,下右图是它投影到平面地图后的样子——同一条「直线」,换个投影就弯了。
这个细节很重要。因为如果不懂「直线 = 大圆」,你根本没法理解为什么一条从泉州到葡萄牙的路径会绕到中亚再折回欧洲——那不是绕路,那是最直的走法。
被海岸线折磨疯的优化问题
问题听起来简单:找一条能盖过最多海洋的大圆。但实现起来是一场噩梦。
原因在海陆边界的分形性质。海岸线不是平滑曲线——它有无数毛刺、峡湾、小岛、半岛。一个看起来完整的航线,可能因为某个 5 公里宽的海峡或一块礁石而整个不成立。用论文里的话说,目标函数是不连续的:路径长度不会平滑变化,会在某一点突然从「全程海洋」跳变成「撞上岛屿」。
更夸张的是搜索空间。如果用 ETOPO1 全球地形模型的 1 角分分辨率(赤道处约 1.855 公里),地球表面需要枚举 233,280,000 条大圆,每条大圆要检查 21,600 个点——总共 5,038,848,000,000(约 5 万亿)个点要验证。暴力穷举是天文数字。
所以他们用了**分支定界(branch-and-bound)算法。核心技巧是把搜索空间分层:先粗糙地把地球划成格子,对每个格子算一个「上界」(这条大圆最多能连续走多远),上界太低的格子直接剪掉,只留下有希望的格子继续细化。再配合侵蚀(erosion)**技巧——把陆地边缘先向内"腐蚀"一圈,用更保守的海岸线来判定,保证不错杀任何可能的候选路径。
这套方法最妙的地方在于:它证明了一个 2012 年 Reddit 用户的随手一画是对的。数学在这里不是发明答案,而是给一个「看着很像对的答案」盖了章。
泉州到萨格里什:一条横穿 15 国的直线
先看航海版。算法返回的最长可航行直线,起点在巴基斯坦俾路支省的索米亚尼湾(25°17′N, 66°40′E),穿过非洲和马达加斯加之间的缝隙,再从南美洲的合恩角附近、南极洲和火地岛之间「穿针引线」而过,最后抵达俄罗斯堪察加边疆区(58°37′N, 162°14′E)。
注意几个几何事实:
- 这段路径的角距离是 288°35′——这比 270° 还大。一个完整的大圆是 360°,这意味着这条「直线」绕过了地球表面超过四分之三。
- 为什么是 288° 而不是更大?因为大圆一旦超过 180°,你总能从反方向走更短的那条。但问题是:反方向的路径会撞上陆地。 所以 288°35′ 的意思是——所有可能的大圆里,能连续盖住海洋的最长弧段就是这么大。
- 它穿过的两个「针眼」极窄。非洲和马达加斯加之间的莫桑比克海峡、以及南极洲和火地岛之间的德雷克海峡——这两处是整条路径最危险的瓶颈,差一点就被陆地卡死。
然后是最精彩的陆路版。论文的 Figure 9 显示,最长可驾驶直线从中国福建泉州晋江(24°33′N, 118°38′E)出发,穿过中国和蒙古,经哈萨克斯坦、俄罗斯,再穿白俄罗斯、乌克兰,然后波兰、捷克、德国、奥地利、列支敦士登、瑞士、法国、西班牙,最后停在葡萄牙萨格里什(37°2′N, 8°55′W)——总共 15 个国家,角距离 101°6′,11,241 公里。
这个巧合值得停下来看一秒。泉州,宋元时期东方第一大港,海上丝绸之路的起点,刺桐城,马可·波罗笔下的「光明之城」。萨格里什,葡萄牙最西南角,亨利王子的航海学校所在地,大航海时代的起锚地。一条纯数学算出来的「最长直线」,恰好把两个相隔千年的海洋时代连在一起。
论文自己也承认,这条路穿过阿尔卑斯山,理论上开车是开不过去的——它更像一条「理论上可行」的测地线,而非实际的高速公路。HN 评论区有人吐槽:「能走,大概吧,但肯定不是能开车的路——它直接从阿尔卑斯山上碾过去了。」
我亲自算了一遍:32,090 和 11,241
写这篇文章之前,我决定不直接引用论文的数字——先自己算一遍。毕竟这是科普文章,我总不能连「直线 = 大圆」这个前提都没验证就往下写。
我用球面大圆距离公式(haversine),把论文给出的起终点坐标代进去:
航海版:巴基斯坦 (25°17′N, 66°40′E) → 堪察加 (58°37′N, 162°14′E)
角距离 = 288.60°(论文写 288°35′,误差 1′)
距离 = 32,091 km(论文写 32,090 km)
陆路版:泉州晋江 (24°33′N, 118°38′E) → 萨格里什 (37°2′N, 8°55′W)
角距离 = 101.09°(论文写 101°6′,误差 3′)
距离 = 11,240 km(论文写 11,241 km)
误差在 1 公里以内——这基本就是地球半径取整(6,371 km)带来的差异。也就是说,用最朴素的球面公式,从论文自己的坐标出发,我能精确复现论文的结果。
这个验证本身也说明了一件事:大圆计算的「难」,不在算一条大圆,而在找出该算哪一条。 我算这两条只用了零点几秒,但找出「这两条恰好是全球最优解」,需要五万亿个点里剪枝搜索。公式是简单的,搜索是残酷的。
直线的尽头是另一个起点
回头看,这篇论文最迷人的地方在于它的出身。它不是从一个学术问题出发,而是从一个 Reddit 帖子的「你猜」出发。两位研究者花了六年,用分支定界和一个约 5 万亿点的搜索空间,最后得出的结论是:那个 2012 年的匿名网友,随手一画就对了。
这让我想起 HN 上那条评论:「这就是最好的 nerd sniping(学术勾引)。」一个足够有趣的几何问题,能把人从论坛拖进论文,再从论文拖回地球。
而那条从泉州到萨格里什的线,现在挂在 arXiv 上,坐标精确到角分。论文作者在结尾补了一句:以上两条路径纯属数学练习,不建议真的去航海或开车。
确实。泉州到萨格里什的直线,导航软件不会推荐,租车公司不会租给你,阿尔卑斯山也不同意你从它头上碾过去。但它就在那儿——坐标精确到角分,穿过十五个国家,然后停在欧洲大陆真正的最西南角。等着下一个好奇的人把它调出来。
参考:Chabukswar & Mukherjee, "Longest Straight Line Paths on Water or Land on the Earth", arXiv 1804.07389(2018)
评论(0)
暂无评论,来写第一条吧~