วิธีการหลายรอบจะมีในกราฟจุดสุดยอดดังกล่าวว่ากราฟไม่ได้มีวงจรใด ๆk)
ตัวอย่างเช่น ,จากนั้นกราฟจะมีอย่างน้อยสองดังนั้นจะไม่มี
ฉันคิดว่ามีรอบจะมีความพึงพอใจเหนือเงื่อนไข
บางคนสามารถช่วยฉันออก
วิธีการหลายรอบจะมีในกราฟจุดสุดยอดดังกล่าวว่ากราฟไม่ได้มีวงจรใด ๆk)
ตัวอย่างเช่น ,จากนั้นกราฟจะมีอย่างน้อยสองดังนั้นจะไม่มี
ฉันคิดว่ามีรอบจะมีความพึงพอใจเหนือเงื่อนไข
บางคนสามารถช่วยฉันออก
คำตอบ:
มันไม่ใช่ เว้นแต่ . สำหรับ แม้กระทั่งความยาวสูงสุดของรอบในกราฟสองฝ่ายที่สมบูรณ์ คือ และจำนวนความยาว - รอบคือ . ตัวอย่างเช่น มีจำนวนกำลังสองเป็น 4 รอบ แต่ไม่เกิน 4 รอบ
ในทางตรงกันข้ามสำหรับค่าคงที่ใด ๆ ในความยาวของวัฏจักรที่ยาวที่สุดจำนวนของสามเหลี่ยมจริง ๆ คือ . ต่อไปนี้เป็นข้อพิสูจน์อย่างรวดเร็ว: ในโครงสร้างการค้นหาแรกที่มีความลึกแต่ละขอบเริ่มจากจุดสิ้นสุดด้านล่างสองจุดไปสู่บรรพบุรุษที่มากที่สุด ย้อนกลับไปดังนั้นใบไม้ใด ๆ ของต้นไม้จึงมีระดับมากที่สุด และเป็นที่มากที่สุดรูปสามเหลี่ยม ตอนนี้เอาใบไม้และการเหนี่ยวนำ
ฉันเขียนโปรแกรม 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.