Numero di cicli in un grafico


9

Come molti cicli ( k 3 ) esistono in un n grafo vertice tale che grafico non ha alcun ciclo C m ( m > k ) .Ck (k3)nCm (m>k)

Ad esempio , k = 3 , allora il grafico avrà al massimo due C 3 'così che G non avrà alcun C k ( k > 3 ) .n=5k=3C3GCk(k>3).

Sto pensando che ci saranno O(n) cicli soddisfacenti sopra le condizioni.

Qualcuno mi può aiutare.


2
stai parlando di cicli indotti da vertici? cicli disgiunti?
Igor Shinkar,

1
La risposta può dipendere dalla parità di mk . Ad esempio, si consideri un esplosione bilanciata di un ciclo 5. Questo grafico non contiene 6 cicli, ma contiene 5 cicli indotti da Θ(n5) .
Igor Shinkar,

5
@IgorShinkar Ho letto la domanda come "qual è il numero massimo di k -cycles in un grafico n -vertex che non ha m -cycle per qualsiasi m>k ?" quindi m non è un parametro, è universalmente quantificato
Sasho Nikolov,

Presumo che tu stia parlando di cicli indotti (buchi). Se vuoi il numero minimo, è sicuramente 0, un grafico vuoto. Se vuoi il numero massimo, è n ^ 3 per k = 3 (considera un grafico completo).
Yixin Cao,

@YixinCao Per k = 3, Se consideri un grafico completo con vertici 'n', avremo un ciclo la cui lunghezza è superiore a 3. Sto cercando cicli di numero massimo di lunghezza k in un grafico in modo che il grafico non contenga qualsiasi ciclo di lunghezza superiore a k
Kumar,

Risposte:


5

O(n)k=3kKn,k/2kk(k21)!nk/2=Θ(nk/2)K2,n

kO(n)k1k1(k12)


si, hai ragione :)
Virgi,

1

Ho scritto un breve programma di clingo per controllare i piccoli valori (può gestire rapidamente grafici fino a 7 vertici. Oltre a ciò, la messa a terra può richiedere un po 'di tempo):

Ho preso questo tavolo

                            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

Ecco il programma:

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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.