Có bao nhiêu chu kỳ trong một đồ thị đỉnh sao cho đồ thị không có chu kỳ .
Ví dụ: , , thì đồ thị sẽ có nhiều nhất hai để sẽ không có bất kỳ
Tôi nghĩ rằng có chu kỳ sẽ ở đó thỏa mãn các điều kiện trên.
Ai đó có thể giúp tôi không.
Có bao nhiêu chu kỳ trong một đồ thị đỉnh sao cho đồ thị không có chu kỳ .
Ví dụ: , , thì đồ thị sẽ có nhiều nhất hai để sẽ không có bất kỳ
Tôi nghĩ rằng có chu kỳ sẽ ở đó thỏa mãn các điều kiện trên.
Ai đó có thể giúp tôi không.
Câu trả lời:
Nó không phải là trừ khi k = 3 . Đối với k chẵn, độ dài tối đa của một chu kỳ trong đồ thị lưỡng cực hoàn chỉnh K n , k / 2 là k và số chu kỳ độ dài k là ( k. Chẳng hạn,K2,ncó số bậc 4 gồm 4 chu kỳ, nhưng không có chu kỳ nào dài hơn 4.
Mặt khác, với bất kỳ liên kết ràng buộc nào trên độ dài của chu kỳ dài nhất, số lượng tam giác thực sự là O ( n ) . Đây là một bằng chứng nhanh: trong một cây tìm kiếm sâu đầu tiên, mỗi cạnh đi từ phía dưới hai điểm cuối của nó đến tổ tiên nhiều nhất là k - 1 bước lùi, do đó, bất kỳ lá nào của cây đều có độ lớn nhất là k - 1 và thuộc về nhất ( k - 1 hình tam giác. Bây giờ loại bỏ lá và cuộn cảm.
Tôi đã viết một chương trình clingo ngắn để kiểm tra các giá trị nhỏ (nó có thể xử lý nhanh các đồ thị lên đến 7 đỉnh. Ngoài ra, việc nối đất có thể mất khá nhiều thời gian):
Tôi có cái bàn này
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
Đây là chương trình:
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.