【问题标题】:Depth search of a path in tree or graph data structures树或图形数据结构中路径的深度搜索
【发布时间】:2021-02-09 11:13:38
【问题描述】:

我正在尝试创建一个 Tree 或 Graph 数据结构,如果存在特定路径,我可以快速搜索(深度搜索)。特别是,从字符串列表开始:

ArrayList<String> data = new ArrayList<String>();
data.add("2.2.3.3.3");
data.add("2.3.4.3.4");
data.add("2.2.2.4.4");

String pathToFind1 = "2.3.4.X.4"
String pathToFind2 = "2.X.X.2.4"
String pathToFind3 = "2.3.X.4.4"

以及要查找的路径(例如“X.2.X.4.4”),我会检查是否存在以下路径:

  • pathToFind1:链接节点 2(深度 1)、3(深度 2)、4(深度 3)和 4(深度 5);
  • pathToFind2:链接节点 2(深度 1)、2(深度 4)和 4(深度 5);
  • pathToFind3:链接节点 2(深度 1)、3(深度 2)、4(深度 4)和 4(深度 5);

值 X 代表一个通用值。

/*
            2
          /   \
         2     3
        / \     \
       2   3     4
      /     \     \  
     4       3     3
      \       \     \     
       4       3     4     
*/

public static boolean findPath(String path) {
    //...
}

findPath(pathToFind1); //return true
findPath(pathToFind2); //return false
findPath(pathToFind3); //return false

我曾想过使用Trie,但这种结构的主要问题是我应该考虑一个完整的查找路径(即包含所有元素的路径)。 你能建议一个数据结构或解决方案来解决我的问题吗?请注意,不必使用树或图,但我的目标是快速搜索路径。

【问题讨论】:

  • trie 可以完成这项工作。当你得到 X 时做一个 dfs。有什么问题吗?

标签: java data-structures graph tree depth-first-search


【解决方案1】:

您可以使用两种主要算法来完成这项工作。我的意思是 DLSIDS。 这两个对于无意识搜索是稳定的。这意味着他们在指定的级别进行搜索,而不是在所有图形中搜索,而且它确实更快并且需要更少的内存。 试试它们可能会解决您的问题。

【讨论】:

  • 感谢您的回复,但我无法用这些算法解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多