我必须在图中检测一个循环 .
矩阵的大小是m×n,其中m是进程总数,n是资源总数 .
-
0:进程Pi和资源Rj之间没有边缘 .
-
1:从进程Pi到资源Rj存在传出边缘 .
-
2:从资源Rj到进程Pi存在传出边缘 .
TestCase01.txt的示例是
2,1
0,0
1,2
输出应该是
检测到死锁程序找到此循环:P0 - > R1 - > P2 - > R0 - > P0
我想跟踪访问节点,这些节点产生一个循环,但我的输出是
检测到死锁程序找到此循环:
我认为我的算法有点不对,我该怎么办?
This is code that I have done.
import java.io.*;
import java.util.*;
public class FindCycle {
static int[][] matrix = new int[10000][10000];
static int x=0, y=0;
public static void main(String[] args) {
{
try
{
BufferedReader in = new BufferedReader(new FileReader("TestCase01.txt"));
String line;
while ((line = in.readLine()) != null)
{
y=0;
String[] values = line.split(",");
for (String str : values)
{
int str_int = Integer.parseInt(str);
matrix[x][y]=str_int;
System.out.print(matrix[x][y] + " ");
y++;
}
System.out.println("");
x++;
}
in.close();
System.out.println(isDeadlock());