【发布时间】:2014-06-11 05:03:32
【问题描述】:
取 N 个节点(其中 N >= 3)排成一条直线。每个节点都知道自己的唯一标识符和离它最近的两个节点的标识符,但不知道最近的两个节点在哪一边。
如果给定一个代表节点的对象集合,我如何对它们进行排序以使它们按正确的顺序排列?
例如,如果我们有四个节点排列为 1,2,3,4,它们可以由四个具有属性 (1,2,3) (2,1,3) (3,2,4) & (4,2,3) 其中三元组是 (node, neighbour1, neighbour2)。
我将在这里稍微解释一下,但重要的是节点不知道哪个邻居是哪个。例如,节点 3 知道节点 2 和 4 是它最近的邻居,但不知道每个节点在哪一侧。因此,上面显示的四个对象等价于 (1,3,2) (2,3,1) (3,4,2) & (4,3,2) 以及任何其他有效排列。
行尾的节点显然是有问题的,因为它们最近的两个邻居都是同一侧 - 尽管节点本身没有意识到这一点。
因此,给定代表节点的 N 个随机排序的对象,我正在使用一种算法对对象进行排序,使它们处于正确的顺序:即从左到右或从右到左等同于节点未知。
欢迎提出任何建议。谢谢!
顺便说一句 - 如果这是一个“众所周知的”数据结构/算法问题,我会 (a) 因为无法在线找到它而自责,并且 (b) 很高兴有(大概) 和同样众所周知的解决方案。
【问题讨论】: