首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用字符串连接板上钉子的算法

用字符串连接板上钉子的算法
EN

Stack Overflow用户
提问于 2020-09-28 08:45:15
回答 1查看 221关注 0票数 6

我想知道是否存在这个问题的现有算法,或者它是否可以映射到现有的算法。

问题

你是在2D和想做一些字符串艺术使用钉子在木板上。为此,你从固定的钉子开始,所有的钉子都不规则地放在板子上。然后,你在指甲板周围线性地移动,直到你到达钉子的末端。现在,您要收紧字符串,并希望知道字符串的路径以及字符串所接触到的钉子。

Output:紧固字符串及其钉子的路径。

示例:橙色的路径是你绕着板走的线。绿线是最后一根紧固的绳子。请注意,与钉子X开头这样的直接连接是非法的,因为使用了路径。

另一种类推:你在树林里固定一根绳子。然后你绕着树木一条条地跑过去。你在一棵树前停下来,用力拉绳子,所以绳子被勒紧了。

这个问题似乎是一个最短路径问题,但有一个额外的约束,即只能使用一些节点/钉子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-28 15:08:36

David Eisenstat提出的潜在解决方案:

多边形最短(同伦)路径(参见https://jeffe.cs.illinois.edu/teaching/comptop/2009/notes/shortest-homotopic-paths.pdf)

这里,我们将该算法应用于原始示例。

步骤1:交叉序列

利用Delaunay三角剖分,我们可以从输入钉子中得到多边形P。然后,我们命名所有的三角形交叉(见图),并写下路径的顺序。

结果:ABCBDEFGHIJKLMNOPPQRSTU

步骤2:裁减

移除未完成的循环:

ABCCBDEFGHIJKLMNOPPQRSTU

-> ABBDEFGHIJKLMNOQRSTU

-> ADEFGHIJKLMNOQRSTU

第三步:套筒

套筒只是所有的三角形在减少交叉序列“粘”在一起的顺序。

步骤4:漏斗

基本上,从一开始就查看漏斗的每个对角线,然后迭代地确定到某个点的最短路径,直到到达终点为止。

附加注意事项:本文建议不要按照顺序明确地使用这些步骤,因为您可以一次完成这些步骤。此外,该算法还可以对循环进行一些修改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64098785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档