Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析关于有向图的输入_Java_Parsing_Graph - Fatal编程技术网

Java 解析关于有向图的输入

Java 解析关于有向图的输入,java,parsing,graph,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(最后两个数字) 我必

我正在处理一个有点耽搁的问题。我正在研究有向图,并试图确定是否在某个输入中,是否存在到达该输入的路径。现在我的问题是,我必须在一个字符串中输入输入,但它必须以提取重要信息的方式进行解析。例如:

您有一个问题实例,其中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)


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

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

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

编辑:
您只需初始化一个大小等于顶点数的布尔数组。最初,不会访问所有顶点

嘿@Xline谢谢你的回复!直到现在我才意识到修剪的功能。这确实帮了我的忙。我希望我能去掉第一块,但是,不幸的是,这是一个要求。@jmart很高兴它有帮助:)不过我还有一个问题。如何将每个节点标记为已访问并为此设置初始设计?我对有向图一点也不熟悉,它的输入真的很奇怪。有骷髅吗?我明白你的意思了,谢谢。比如Boolean[]visted=new Boolean[n],其中n是顶点数?但我现在主要关心的是,如何利用这些信息,我可以把每一个视频都分解成自己的视频。例如,如果我必须处理输入,我将如何处理vertice 1->2(1,2),然后执行1->3(1,3)?我只是被困在如何实际实现一个结构来处理这个问题上。我就是想不出有什么办法行得通。有什么办法吗?谢谢
 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();