크기가 인 모든 무 방향 그래프를 열거하고 싶지만 각 동 형사상 클래스의 인스턴스 하나만 필요합니다 . 다시 말해, 개의 꼭짓점 에서 모든 비 동형 (비 방향) 그래프를 열거하고 싶습니다 . 어떻게해야합니까?
보다 구체적으로, I는 무향 그래프의 시퀀스 생성 알고리즘 원하는 다음과 같은 속성 : 모든 무향 그래프 에 대한 버텍스 인덱스가 존재 되도록 동형을 행 . 알고리즘이 가능한 한 효율적이기를 원합니다. 즉, 내가 관심있는 메트릭은이 그래프 목록을 생성하고 반복하는 실행 시간입니다. 두 번째 목표는 알고리즘이 구현하기에 너무 복잡하지 않으면 좋을 것입니다.
각 동 형사상 클래스에서 최소한 하나의 그래프가 필요하지만 알고리즘에서 둘 이상의 인스턴스를 생성해도 괜찮습니다. 특히, 출력 시퀀스에 두 개의 동형 그래프가 포함되어 있으면 가능합니다. 가능한 모든 그래프를 포함하는 한 그러한 알고리즘을 쉽게 찾을 수있게하거나보다 효율적인 알고리즘을 가능하게합니다.
내 응용 프로그램은 다음과 같습니다. 크기의 모든 그래프에서 테스트하려는 프로그램이 있습니다. 두 그래프가 동형 인 경우 두 프로그램에서 모두 프로그램이 동일하게 작동하므로 (두 가지 모두에서 정확하거나 두 가지 모두에서 부정확 할 수 있음) 각 동 형사상 클래스에서 적어도 하나의 대표자를 열거 한 다음 테스트합니다. 그 입력에 프로그램. 내 응용 프로그램에서 은 상당히 작습니다.
내가 고려한 일부 후보 알고리즘 :
가능한 모든 인접 행렬, 즉 대각선에 모두 0이있는 모든 대칭 0 또는 1 행렬을 열거 할 수 있습니다 . 그러나 이것은 행렬을 열거해야합니다 . 이러한 행렬 중 다수는 동형 그래프를 나타내므로 많은 노력을 낭비하는 것처럼 보입니다.
가능한 모든 인접 행렬을 열거하고 각각에 대해 이전에 출력 한 그래프와 동형인지 테스트합니다. 이전에 출력 된 것과 동형이 아닌 경우 출력하십시오. 이렇게하면 출력 목록이 크게 단축되지만 그래도 적어도 단계의 계산이 필요합니다 (그래프 동형 검사가 매우 빠르다고 가정하더라도).
인접 행렬의 하위 집합을 열거 할 수 있습니다. 특히, 가 n 개의 꼭짓점 V = { v 1 , … , v n } 에 대한 그래프 인 경우 , 일반성을 잃지 않고 꼭짓점이 deg v 1 ≤ deg v 2 ≤ ⋯ ≤ deg v n 으로 정렬되어 있다고 가정 할 수 있습니다. 다시 말해, 모든 그래프는 정점이 감소하지 않는 순서로 배열 된 것과 동형이다. 따라서이 속성이있는 인접 행렬 만 열거하면됩니다. 나는 거기에 같은 인접 행렬들은 정확히 얼마나 많은 모르겠지만,은 많은 미만 , 그들은 훨씬보다 더 적은으로 열거 할 수 2 N ( N - 1 ) / 2 단계 계산. 그러나 이것은 여전히 많은 중복성을 남깁니다. 많은 동 형사상 클래스는 여전히 여러 번 다루어 질 것이므로 이것이 최적이라고는 생각하지 않습니다.
더 잘할 수 있을까요? 만약 내가 제대로 이해하고, 약이있다 비 등방성 그래프의 등가 클래스. 위의 알고리즘보다 실행 시간이 더 좋은 알고리즘을 찾을 수 있습니까? 우리는 ~ 2 n ( n - 1 ) / 2 / n에 얼마나 가까이 갈 수 있습니까 ! 하한? 나는 주로 작은 n의 다루기 쉬움에 관심이 있습니다 (즉, n = 5 또는 n = 8정도; 큰 에 대한 점증에 대해서는 그다지 중요하지 않습니다 .