给定平面中的一组顶点,选择一个点作为入口,入口附近的一个点作为出口,如何连接它们,任何两个连续点的边缘不大于某个最大值? 如下面,*代表顶点,给定一个点为In,而不是从入口附近的一个点退出,是否有任何算法可以做到这一点?救命?
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * * <------ in
* * * * * * * * * *
* * * * * * * * * * <------- out
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * * * *
* * * * * * * *
* * * * * * * * *
答案 0 :(得分:2)
如果将点放在规则网格上,并且没有丢失点,则解决方案相对简单(A,B,C)。如果网格具有奇数行和奇数列,并且如果点之间的对角线距离大于最大允许距离(D),则可能出现问题。
如果您对可能的解决方案的理论属性感兴趣,您可能还想查看Moore curve或space-filling curves。
我认为如果点间距不均匀,或者网格上的所有位置都没有占用,问题会变得相当复杂。
答案 1 :(得分:0)
# Input: G (set of vertices), v (entry vertex)
procedure BFS(G,v) is
let Q be a queue
Q.enqueue(v)
label v as discovered
while Q is not empty
v ← Q.dequeue()
process(v)
for all edges from v to w in G.adjacentEdges(v) do
if w is not labeled as discovered
Q.enqueue(w)
label w as discovered
G.adjacentEdges(v)
会搜索足够接近但尚未发现的顶点。 process(v)
会测试v
是否是退出顶点。每个顶点还必须记住它是如何从入口顶点到达的。