그래프의 사이클 수


9

몇 사이클 케이 (케이) 에있다 그래프에 사이클이없는 정점 그래프 미디엄 (미디엄>케이).

예를 들어 =5, 케이=그래프는 최대 2 개입니다 C그래서 없어요 케이(케이>).

나는 생각하고 있습니다 영형() 위의 조건을 만족하는 사이클이 있습니다.

어떤 사람이 나를 도울 수 있습니까?


2
정점에 의한주기에 대해 이야기하고 있습니까? 분리 사이클?
Igor Shinkar

1
대답은 패리티에 따라 다를 수 있습니다 미디엄케이. 예를 들어, 5주기의 균형 잡힌 폭발을 고려하십시오. 이 그래프에는 6주기가 포함되어 있지 않지만 포함되어 있습니다.Θ(5)유도 된 5 사이클.
Igor Shinkar

5
@ IgorShinkar 나는 "의 최대 수는 얼마입니까? k사이클 n없는 정점 그래프 m-주기 m>k? "그래서 미디엄매개 변수, 그것은 보편적으로 정량화 것하지 않습니다
Sasho 니콜 로프

나는 당신이 유도주기 (구멍)에 대해 이야기한다고 가정합니다. 최소 숫자를 원하면 반드시 빈 그래프 인 0입니다. 최대 수를 원하면 k = 3의 경우 n ^ 3입니다 (완전한 그래프 고려).
Yixin Cao

@YixinCao k = 3의 경우, 'n'꼭짓점이있는 완전한 그래프를 고려하면 길이가 3보다 큰주기를 갖게됩니다. 그래프에 포함되지 않아야하는 길이 k의 최대 개수주기를 그래프에서 찾고 있습니다. k보다 긴 길이의 사이클
Kumar

답변:


5

아니다 O(n) 그렇지 않으면 k=3. 에 대한k 완전한 이분 그래프에서 사이클의 최대 길이 Kn,k/2 이다 k, 길이 수k 사이클은 (k21)!nk/2=Θ(nk/2). 예를 들어K2,n 4 차의 2 차 수를 가지지 만 4보다 긴주기는 없습니다.

반면에, 일정한 경계 k 가장 긴주기의 길이에서 실제로 삼각형의 수는 O(n). 깊이있는 첫 번째 검색 트리에서 각 가장자리는 두 끝점의 아래쪽에서 최대 조상으로 이동합니다.k1 물러서서 나무의 어떤 잎도 기껏해야 정도 k1 그리고 최대에 속한다 (k12)삼각형. 이제 잎과 유도를 제거하십시오.


네, 맞습니다 :)
virgi

1

작은 값을 확인하기 위해 짧은 clingo 프로그램을 작성했습니다 (최대 7 개의 정점 그래프를 신속하게 처리 할 수 ​​있습니다.

나는이 테이블을 얻었다

                            n (vertices)
                         3   4   5   6   7

                      3  1   1   2   2   3

                      4      3   3   6  10

k (cycle length)      5         12  12  12

                      6             60  60

                      7                360

프로그램은 다음과 같습니다.

num(1..n).
is_sym_order(empty,0).
ncontains(empty,K) :- num(K).
is_sym_order(cons(K,empty),1) :- num(K).
last(cons(K,empty), K) :- num(K).
is_sym_order(cons(K,S),M+1) :- is_sym_order(S,M), ncontains(S,K), last(S,L), K > L.
ncontains(cons(K,S), J) :- J != K, ncontains(S,J), is_sym_order(cons(K,S),_).
last(cons(K,S), L) :- last(S,L), is_sym_order(cons(K,S),_).
sec_last(cons(A,S),A) :- is_sym_order(cons(A,S),2).
sec_last(cons(K,S), SL) :- sec_last(S,SL), is_sym_order(cons(K,S),_).
is_sub_order(cons(A,S), M) :- A > SL, sec_last(S,SL), is_sym_order(cons(A,S), M).

vertex(1..n).
{is_edge(V,W)} :- vertex(V), vertex(W), V < W.
sym_edge(V,W;W,V) :- is_edge(V,W).

is_path(cons(V,empty)) :- vertex(V).

is_path(cons(A,cons(B,S))) :- is_path(cons(B,S)), sym_edge(A,B), is_sym_order(cons(A,cons(B,S)),_).
is_cycle(cons(A,S)) :- is_path(cons(A,S)), is_edge(V,A), last(S,V), is_sub_order(cons(A,S),M), M >= k.

:- is_cycle(S), is_sub_order(S,M), M > k.
prim_cycle(S) :- is_cycle(S), is_sub_order(S,k).
:~ not is_cycle(S), is_sub_order(S,k).[1,S]

num_cycs(C) :- C = #count{is_cycle(S):is_cycle(S)}.
#show is_edge/2.
#show num_cycs/1.
#show prim_cycle/1.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.