Files
DeansBequest/src/FindPathsPls/PathFinder.java

125 lines
3.5 KiB
Java

package FindPathsPls;
import java.util.ArrayList;
import java.util.Arrays;
public class PathFinder
{
public static void main(String[] args)
{
ArrayList<String[]> Graph = new ArrayList<>();
Graph.add(new String[]{"", "e1", "e3"});
Graph.add( new String[]{"e1", "", "e2"});
Graph.add( new String[]{"e3", "e2", ""});
GetPaths(Graph,3,3,2);
ArrayList<String[]> ExtremeGraph = new ArrayList<>();
ArrayList<String[]> Graph2 = new ArrayList<>();
Graph2.add(new String[]{"", "e1,e2,e3", "e3,e4"});
Graph2.add( new String[]{"e1,e2,e3", "", "e6"});
Graph2.add( new String[]{"e3,e4", "e6", ""});
GetPaths(Graph2,3,3,2);
}
private static void GetPaths(ArrayList<String[]> Graph , int row_len, int col_len, int path_len)
{
int power =2;
int count = 0;
if(path_len == 2)
{
ArrayList<String[]> output = SquareMatrix(Graph, row_len, col_len);
for(int i = 0; i < output.size();i++)
{
count++;
System.out.print(Arrays.toString(output.get(i))+" , ");
if(count % 3 == 0)
System.out.println();
}
}
else
{
ArrayList<String[]> output = Graph;
while(power <= path_len)
{
output = MultiplyMatrix(output, Graph, row_len, col_len);
power++;
}
for(int i = 0; i <= output.size();i++)
{
count++;
System.out.print(Arrays.toString(output.get(i)));
if((count % 3) == 0)
System.out.println();
}
}
}
private static ArrayList<String[]> MultiplyMatrix(ArrayList<String[]> M1, ArrayList<String[]> M2, int row_len, int col_len)
{
return MatrixMultiplication(M1, M2, row_len, col_len);
}
private static ArrayList<String[]> MatrixMultiplication(ArrayList<String[]> M1, ArrayList<String[]> M2, int row_len, int col_len)
{
String[] R;
String[] C;
ArrayList<String[]> output = new ArrayList<>();
for(int rows = 0; rows < row_len; rows++)
{
R = getRow(M1,rows);
for (int cols = 0; cols < col_len; cols++)
{
C = getColumn(M2, cols);
output.add(findCart(R, C));
}
}
return output;
}
private static ArrayList<String[]> SquareMatrix(ArrayList<String[]> input, int row_len, int col_len)
{
return MatrixMultiplication(input, input, row_len, col_len);
}
public static String[] findCart(String[] arr1, String[] arr2)
{
ArrayList<String> list = new ArrayList<>();
for (String s : arr1)
for (String value : arr2)
{
if (!(s.equals("") || value.equals("")))
{
list.add(s + "->" + value);
}
}
String[] arr = new String[list.size()];
return list.toArray(arr);
}
public static String[] getColumn(ArrayList<String[]> input , int index)
{
String[] output = new String[input.size()];
for(int i = 0; i < input.size(); i++)
{
if(input.get(i) != null)
output[i] = input.get(i)[index];
}
return output;
}
public static String[] getRow(ArrayList<String[]> input , int index)
{
return input.get(index);
}
}