解析关于有向图的输入

时间:2014-11-15 01:47:53

标签: java parsing graph

我正在解决一个我遇到轻微延迟的问题。我正在使用有向图并尝试确定是否在某个输入内,是否存在到达那里的路线。现在我的问题是我必须在一个字符串中输入输入,但必须解析它以提取重要信息的方式。例如:

你有一个问题实例,其中G是一个有向图,其路径从s到t(节点)

我的输入字符串是:(1,2,3,4,5),((1,2),(1,3),(2,3),(2,4),(3, 2),(3,5),(4,3),(5,2)),1,5-二

第一组括号表示节点,第二组表示图形和路径的组成,其中数字1表示s,5表示t(最后两个数字)。

我必须实现一个程序来确定路径是否存在。问题在于解析。我需要提取节点列表(第一个括号),边缘列表(第二个集合),起始节点(1)和结束节点(5)。

任何人都可以向我提供一些有关如何解析这些内容并将其分解的方法,以便我可以提取并打印出这些内容吗?我不是在寻找一个完整的书面工作程序,只是澄清和可能的代码片段指出我正确的方向。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我们假设输入严格遵循您提供的格式,那么这只是一个解析问题。以下是如何获得三个大块(顶点,边和st)。

 String input=" (1,2,3,4,5),((1,2),(1,3),(2,3),(2,4),(3,2),(3,5),(4,3),(5,2)),1,5";

String nodes=input.substring(0, input.indexOf("((")-1).trim();
String edges=input.substring(input.indexOf("((")+1, input.indexOf("))")+1).trim();
String st=input.substring(input.indexOf("))")+3).trim();

然后,您可以单独解析每个块并获取其值。一件事:边缘列表足以定义图形(您实际上不需要第一个块)。

编辑: 您可以简单地初始化一个大小等于顶点数的布尔数组visited[]。最初,不访问所有顶点。