繁体   English   中英

一种算法,用于查找两个10位数字之间的正交路径

[英]An algorithm to find an orthogonal path between two 10 digit numbers

S是一组10位数字。 给定S中的任意两个数字vw ,我想知道是否存在一系列数字v = u_0,u_1,...,u_k = w,这样:

  1. 每个u_i都在S中
  2. 对于每个i = 1,...,k ,数字u_ {i-1}u_i恰好在一个位置上不同

作为一个加号,找到一个算法来找到最短的序列会更好。

理想情况下,我更喜欢C(或伪代码)解决方案,但我真的非常感谢任何和所有关于这个的建议! 谢谢!

从S的元素形成图形:u和v是相邻的,如果它们恰好在一个坐标上不同。

现在给你,做一个广泛的第一次搜索,直到你击中v。

我将S转换为节点对象的图形,其中每个节点对象包含指向相邻节点的链接。 (在某些编程语言中,将'links'作为'指针'读取。)邻接由序列上的条件2定义,因此通过结果图的任何路径都是与这两个条件匹配的序列。

从那里开始,检查图中两个顶点的连通性是一个简单的问题。 最简单的解决方案是广度优先搜索 (该特定算法也恰好找到最短路径。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM