특정 크기의 모든 비 등방성 그래프 열거


30

크기가 n 인 모든 무 방향 그래프를 열거하고 싶지만 각 동 형사상 클래스의 인스턴스 하나만 필요합니다 . 다시 말해, n 개의 꼭짓점 에서 모든 비 동형 (비 방향) 그래프를 열거하고 싶습니다 . 어떻게해야합니까?

보다 구체적으로, I는 무향 그래프의 시퀀스 생성 알고리즘 원하는 G1,G2,,Gk 다음과 같은 속성 : 모든 무향 그래프 G 에 대한 n 버텍스 인덱스가 존재 i 되도록 G 동형을 행 Gi . 알고리즘이 가능한 한 효율적이기를 원합니다. 즉, 내가 관심있는 메트릭은이 그래프 목록을 생성하고 반복하는 실행 시간입니다. 두 번째 목표는 알고리즘이 구현하기에 너무 복잡하지 않으면 좋을 것입니다.

각 동 형사상 클래스에서 최소한 하나의 그래프가 필요하지만 알고리즘에서 둘 이상의 인스턴스를 생성해도 괜찮습니다. 특히, 출력 시퀀스에 두 개의 동형 그래프가 포함되어 있으면 가능합니다. 가능한 모든 그래프를 포함하는 한 그러한 알고리즘을 쉽게 찾을 수있게하거나보다 효율적인 알고리즘을 가능하게합니다.

내 응용 프로그램은 다음과 같습니다. 크기의 모든 그래프에서 테스트하려는 프로그램이 n있습니다. 두 그래프가 동형 인 경우 두 프로그램에서 모두 프로그램이 동일하게 작동하므로 (두 가지 모두에서 정확하거나 두 가지 모두에서 부정확 할 수 있음) 각 동 형사상 클래스에서 적어도 하나의 대표자를 열거 한 다음 테스트합니다. 그 입력에 프로그램. 내 응용 프로그램에서 n 은 상당히 작습니다.

내가 고려한 일부 후보 알고리즘 :

  • 가능한 모든 인접 행렬, 즉 대각선에 모두 0이있는 모든 대칭 n×n 0 또는 1 행렬을 열거 할 수 있습니다 . 그러나 이것은 2n(n1)/2 행렬을 열거해야합니다 . 이러한 행렬 중 다수는 동형 그래프를 나타내므로 많은 노력을 낭비하는 것처럼 보입니다.

  • 가능한 모든 인접 행렬을 열거하고 각각에 대해 이전에 출력 한 그래프와 동형인지 테스트합니다. 이전에 출력 된 것과 동형이 아닌 경우 출력하십시오. 이렇게하면 출력 목록이 크게 단축되지만 그래도 적어도 2n(n1)/2 단계의 계산이 필요합니다 (그래프 동형 검사가 매우 빠르다고 가정하더라도).

  • 인접 행렬의 하위 집합을 열거 할 수 있습니다. 특히, n 개의 꼭짓점 V = { v 1 , , v n } 에 대한 그래프 인 경우 , 일반성을 잃지 않고 꼭짓점이 deg v 1deg v 2deg v n 으로 정렬되어 있다고 가정 할 수 있습니다GnV={v1,,vn}degv1degv2degvn. 다시 말해, 모든 그래프는 정점이 감소하지 않는 순서로 배열 된 것과 동형이다. 따라서이 속성이있는 인접 행렬 만 열거하면됩니다. 나는 거기에 같은 인접 행렬들은 정확히 얼마나 많은 모르겠지만,은 많은 미만 , 그들은 훨씬보다 더 적은으로 열거 할 수 2 N ( N - 1 ) / 2 단계 계산. 그러나 이것은 여전히 ​​많은 중복성을 남깁니다. 많은 동 형사상 클래스는 여전히 여러 번 다루어 질 것이므로 이것이 최적이라고는 생각하지 않습니다.2n(n1)/22n(n1)/2

더 잘할 수 있을까요? 만약 내가 제대로 이해하고, 약이있다 비 등방성 그래프의 등가 클래스. 위의 알고리즘보다 실행 시간이 더 좋은 알고리즘을 찾을 수 있습니까? 우리는 ~ 2 n ( n - 1 ) / 2 / n에 얼마나 가까이 갈 수 있습니까 ! 하한? 나는 주로 작은 n의 다루기 쉬움에 관심이 있습니다 (즉, n = 5 또는 n = 82n(n1)/2/n!2n(n1)/2/n!nn=5n=8정도; 큰 에 대한 점증에 대해서는 그다지 중요하지 않습니다 .n

관련성 : 동등 하지 않은 이진 행렬 구성 (불행히도 올바른 답을 얻지 못한 것 같음 ).


1
Afaik, 크기 에서 동형까지 의 그래프 수조차 알려지지 않았으므로 (브 루트 포스가 아닌) 알고리즘이 없을 것 같습니다. 후보 알고리즘과 관련하여 그래프 동형 검사 (afaik)를 확인하기위한 다항식 시간 알고리즘을 알지 못하므로 O ( | output | ) 로 실행되는 모든 알고리즘은 동형 검사를 피해야합니다 ( 종종 / 멍청한). (또한, | output | = Ω ( n | classes | ) )nO(|output|)|output|=Ω(n|classes|)
Raphael

@Raphael, (1) 우리는 동형에 이르기까지 크기 의 정확한 수의 그래프를 모른다는 것을 알고 있지만,이 문제는 반드시 알고 있어야 할 필요는 없습니다 (예 : 반복으로 괜찮다는 사실 때문에). 나는 그것이 내가 준 것보다 더 나은 알고리즘이 없을 것임을 암시하는 이유를 모른다. (2) 예, 나는 더 그래프 동형에 대한 다항식 시간 알고리즘이 알려져있다 알 수 없지만, 우리의 가치에 대해 이야기 할 것입니다 n은 같은 N = 6 빠른 그래서 기존의 알고리즘이 아마있을 것입니다, 여기에 - 어쨌든, 난 단지 언급 그 후보 알고리즘은 그것을 거부하기 때문에 어쨌든 무례합니다. nnn=6
DW

들어 6 최대, 나는 정점의 수와 모서리의 수를 선택하고이 제안하는대로 정도에 따라 비 감소 적 정점 라벨을 주문 한 후, 다음 거의 가능 동형 클래스가있을 것이라고 믿는다. 이 시점에서 NAUTY 또는 BLISS를 사용하여 무차별 대입 동형 검사를 통해 나머지 사례를 정렬하는 것이 가능할 수 있습니다. n
Simon

답변:


19

작은 정점 수에 대한 모든 비 등방성 그래프를 열거하는 가장 쉬운 방법 은 Brendan McKay 's collection에서 다운로드하는 것입니다 . 열거 알고리즘은 McKay의 논문 [1]에 설명되어 있으며, 가능한 모든 방법으로 크기가 n-1 인 비동 형체를 확장하고 새로운 정점이 정식인지 확인하여 작동합니다. gengMcKay의 그래프 동형 검사기에서 와 같이 구현됩니다 nauty.

[1] : BD McKay, Labeled enumeration 기술 적용 , Congressus Numerantium, 40 (1983) 207-221.


문제가 있습니다. n-1당신이 말했듯 이 크기 그래프를 가져 와서 가능한 모든 방법으로 정점으로 확장하고 있습니다. 그런 다음 정점에 정식 레이블이 있는지 확인하십시오 1(정규 정점?!). 그러나 그래프가 정식 형식에만 동형이며 정점이 다른 레이블을 갖는 경우 어떻게해야합니까? 레이블 1이 있는 정점 이 동일한 궤도 에 있는지 확인하기 위해 자동 형태를 확인하려고했지만 목록에서 두 번 그래프로 끝납니다. 이 신문은 정말 도움이되지 않습니다. 또한 geng의 소스 코드는 모든 바이너리 최적화와 거의 주석으로 인해 읽을 수 없습니다.
Alex

1
@Alex 새 정점이 1과 같은 궤도에 있는지 확인하는 확인 버전을 확실히 원합니다. 두 개의 동형 그래프를 생성하는 예를 들어 주시겠습니까? 아마도 이것은 새로운 질문으로 더 나을 것입니다.
David Eisenstat

고마워요! 이 경우 "가능한 모든 방법으로 확장"하려면 어떻게 든 n-1정점 이있는 그래프의 형태를 고려해야한다고 생각 합니까? 예를 들어 n = 3이고 이전 그래프는 P2입니다. 그런 다음 세 번째 정점을 이전 정점 중 하나에 결합하는 두 경우는 물론 동일한 그래프 P3을 생성합니다. "가능한 모든 방법으로 확장"하는 방법을 신속하게 설명해 주시겠습니까? 아니면 다른 질문으로 질문해야합니까? (또한 프로그램이 특수한 유형의 그래프의 비 동질성을 찾아서 좀 더 복잡하게 만드는 상황에 따라 혼란스러워하는 경우가 있습니다)
Alex

@Alex 예, 확장 자체는 정식이어야합니다. 아마도 이것이 내 머리 꼭대기에서 어떻게 작동하는지 기억하지 못하기 때문에 아마도 새로운 질문의 가치가 있습니다.
David Eisenstat

1
Nauty 홈페이지
Guy Coder

4

세 번째 아이디어에 대한 개선을 제안합니다. 인접 행렬을 행 단위로 채우고 이전에 채워진 정점과의 정도 및 인접성과 관련하여 정점을 추적합니다. 따라서 초기에 등가 클래스는 같은 정도의 모든 노드로 구성됩니다.
새로 채워진 정점이 동등한 노드 중 일부에만 인접 할 경우, 선택시 같은 isomrphism 클래스의 표현자가 나타납니다. 따라서 현재 채워진 정점이 가장 높은 수의 정점에 인접하고 나머지 프로세스에 대해 동등성 클래스를 2로 분할하는 할당 만 고려합니다.

나는이 접근법이 대한 모든 동 형사상을 포괄한다고 생각한다 . 큰 그래프를 들어, 우리는 가장자리 서브 그래프에 있다는 사실에 기초 isomorphisms를 얻을 수있다 ( 1 , 2 )( 3 , 4 ) 않음 (기타), 우리는 정점 동일한 두 그룹을 가지고 있지만, 그 추적되지 접근. (물론 확장 될 수는 있지만 n = 6 만 목표로한다면 노력할 가치가 있다고 의심합니다 .)n<6
(1,2)(3,4)n=6

이 알고리즘의 순진한 구현은 데드 엔드 (dead end)로 진행되며, 주어진 정도 및 이전 할당에 따라 인접 행렬을 채울 수 없습니다. 이를 조기에 감지 / 필터링하는 것이 좋습니다. 몇 가지 아이디어 :

  • 도의 합이 홀수이면 결코 그래프를 형성하지 않습니다.
  • 나머지 정점의 전부 / 없음에 즉시 연결해야하는 정점에 대한 항목을 채 웁니다.

3

이 논문은 흥미로울 것입니다.

"간결한 그래프 표현", Gyorgy Turan, 이산 응용 수학, 8 권, 3 호, 1984 년 7 월, 289-294 http://www.sciencedirect.com/science/article/pii/0166218X84901264

"일반 레이블이없는 그래프의 간결한 표현", Moni Naor, 이산 응용 수학, 제 28 권, 제 3 권, 1990 년 9 월, pp. 303-307 http://www.sciencedirect.com/science/article/pii/0166218X9090011Z

그것들은 정점 레이블이 붙은 그래프를 인코딩하기위한 인코딩 및 디코딩 기능을 제공하여, 하나의 결과가 다른 하나의 정점 레이블을 치환함으로써 발생하는 경우에만 그러한 두 개의 그래프가 동일한 코드 워드에 매핑된다.

또한, 인코딩 및 디코딩 기능이 효율적이라는 것이 입증되었다.

첫 번째 논문은 평면 그래프를 다룹니다. 두 번째 논문에서는 평면성 제한이 제거되었습니다.

편집 :이 백서는 관련이있을 수 있습니다 :

준 다항식 시간의 그래프 동형, 라 슬로 바바이, 시카고 대학, arXiv에 프리 프레스 년 12 월 9 일 2015 http://arxiv.org/pdf/1512.03547v1.pdf

그의 결과에 대한 Babai의 발표는 다음과 같은 뉴스를 만들었습니다 : https://www.sciencenews.org/article/new-algorithm-cracks-graph-problem

그러나 아마도 OP 질문을이 세 가지 논문과 혼동하는 것으로 잘못 생각했을까요? OP는 비 등방성 그래프를 열거하고자하지만, 두 그래프가 동형 일 때를 결정하는 효율적인 방법을 갖는 것이 여전히 도움이 될 수 있습니다.


나는 생각에 감사하지만 두 그래프가 동형인지 여부를 결정하는 방법을 묻지 않고 있습니다. 비 동형 그래프를 열거하는 방법을 정말로 묻습니다. 두 그래프가 동형인지 여부를 테스트하는 알고리즘을 설명하는 것이 실제로 도움이되지는 않습니다.하지만 노력해 주셔서 감사합니다!
DW

Turan과 Naor (위에서 언급 한 논문에서)는 설명하는 유형의 함수, 즉 그래프를 해당 동등 클래스의 표준 대표로 그래프를 맵핑하는 함수를 구성합니다. 정식 대표자를 열거 할 수 있다면 문제를 해결할 것 같습니다.
Simon

Babai는 준다 항적 런타임에 대한 주장을 철회했다 . 분석에 오류가있는 것 같습니다.
Raphael

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.