18

我花了很长时间寻找解决这个问题的方法。我画了大量的交叉阴影线三角形,在简单的情况下数了三角形,并搜索了某种模式。不幸的是,我撞到了墙上。我很确定我的编程/数学技能不符合这个问题的先决条件。

所以我在网上找到了一个解决方案,以便访问论坛。我根本不了解大多数方法,有些方法似乎太复杂了。

谁能让我理解这个问题?其中一种方法,可在此处找到:http: //www.math.uni-bielefeld.de/~sillke/SEQUENCES/grid-triangles(问题 C)允许使用单个函数。

他们是如何想出这个解决方案的?在这一点上,我真的很想了解这个有趣问题背后的一些概念。我知道查找解决方案不是欧拉精神的一部分,但我很确定无论如何我都不会解决这个问题。

4

2 回答 2

4

这本质上是枚举组合学中的一个问题,它是计算事物组合的艺术。这是一个美丽的主题,但可能需要一些热身才能欣赏您提供的参考资料中的忍者技巧。

另一方面,该问题的解决方案线程中的评论表明,许多人已经使用蛮力方法解决了该问题。最常见的技巧之一是获取图中三条线的所有可能组合,并查看它们是否会产生位于最大三角形内的三角形。

您可以通过注意线条位于六个方向之一来大大减少搜索空间。由于包含两条平行线的线组合不会产生三角形,因此您可以迭代线三元组,以便三元组中的每条线具有不同的方向。

给定三条线,计算它们的交点。您将有三种可能性 1) 线重合 - 它们都在一个公共点相交 2) 其中两条线在三角形外的一点相交 3) 所有三个交点都是不同的,并且它们都位于外部三角形内

只需计算满足条件(3)的组合,就完成了。您必须测试的线路组合数量为 O(n 3 ),这并不令人望而却步。

EDIT1:重读您的问题,我觉得您可能更感兴趣的是对组合学解决方案/公式的解释,而不是蛮力方法的概述。如果是这种情况,请说出来,我将删除此答案。但我还要说,这种情况下的问题不适合这个网站。

EDIT2:另见Bill Daly 等人的组合学解决方案。它在数学上比另一个更温和。

于 2010-05-14T18:46:49.440 回答
0

我还没有为项目欧拉解决这个问题并且我正在解决您提供的问题和解决方案。在单一功能的情况下,所提出的方法最终是简单的模式发现。求解器根据交叉点出现的三角形类型将提出的问题分为三个部分。这是解决此类问题的一种相当标准的方法,将较大的模式分解为较小的模式以使解决更容易。用于表达各种形式的三角形的函数我只能假设是由非常敏锐的模式发现思维或一些数论/几何生成的。这也超出了这个解释和我的知识范围。这个问题与编程无关。它基本上完全是数学。

于 2010-05-14T17:35:01.843 回答