가능한 모든 순열을 생성하고 일치하는 항목이 있는지 "brute force"를 사용하는 Java 프로그램을 만들고 있습니다. 예 : G1 = "0-1 0-2 1-2 1-3 2-3"이고 G2 = "1-3 2-0 0-3 1-2 1-0"인 경우 순열→ 2310은 일치하지만→ 2013은 일치합니다.문자열을 가져 와서 배열에 넣기 Java
그래프 클래스는 그래프를 2 차원 부울 배열로 나타내야하며 2 개의 꼭지점이 가장자리인지 확인하고 그래프를 인쇄하는 멤버 함수가 있습니다. 생성자는 가장자리 목록을 나타내는 위의 문자열을 사용해야합니다.
나는 그 형식의 문자열을 어떻게 배열에 넣을 지 알아야합니다.
전반적으로 두 그래프가 동형인지 알아보기를 원합니다.
아래의 코드는 순열 생성기입니다.
// Generator of all permutations of: 0,1,2,...,n-1
public class PermutationGenerator
{
// private data
private int[] perm;
private boolean first;
// constructor
public PermutationGenerator (int n)
{
perm = new int [n];
first = true;
}
public int[] next()
{
int n = perm.length;
// starting permutation: 0 1 2 3 ... n-1
if (first)
{
first = false;
for (int i = 0 ; i < n ; i++)
perm [i] = i;
return perm;
}
// construct the next permutation
// find largest k so that perm[k] < perm[k+1]; if none, finish
int i, j, k, l;
for (k = n - 2 ; k >= 0 && perm [k] >= perm [k + 1] ; k--)
;
if (k < 0)
return null; // no more
// find largest l so that perm[k] < perm[l]
for (l = n - 1 ; l >= 0 && perm [k] >= perm [l] ; l--)
;
// swap perm[k] and perm[l]
swap (perm, k, l);
// reverse perm[k+1]...perm[n-1]
for (i = k + 1, j = n - 1 ; i < j ; i++, j--)
swap (perm, i, j);
return perm;
}
// swap a[i] and a[j]
private static void swap (int a[], int i, int j)
{
int temp = a [i];
a [i] = a [j];
a [j] = temp;
}
}
왜 'G1'과 'G2'가 모두 필요합니까? 하나만 충분하지 않겠습니까? – irrelephant
그래프 "G1"이 그래프 "G2"와 같은지 확인하려고 기다리시겠습니까? – arshajii
무엇이 당신의 질문입니까? – Dmitri