จำนวนรอบในกราฟ


9

วิธีการหลายรอบจะมีในกราฟจุดสุดยอดดังกล่าวว่ากราฟไม่ได้มีวงจรใด ๆk)Ck (k3)nCm (m>k)

ตัวอย่างเช่น ,จากนั้นกราฟจะมีอย่างน้อยสองดังนั้นจะไม่มีn=5k=3C3GCk(k>3).

ฉันคิดว่ามีรอบจะมีความพึงพอใจเหนือเงื่อนไขO(n)

บางคนสามารถช่วยฉันออก


2
คุณกำลังพูดถึงวัฏจักรที่เกิดจากจุดสุดยอดหรือไม่? ไม่ปะติดปะต่อรอบ?
Igor Shinkar

1
คำตอบอาจจะขึ้นอยู่กับความเท่าเทียมกันของmkยกตัวอย่างเช่นพิจารณาการระเบิด 5 รอบอย่างสมดุล กราฟนี้ไม่มี 6 รอบ แต่มันมี 5 รอบ ม.-kΘ(n5)
Igor Shinkar

5
@IgorShinkar ฉันอ่านคำถามว่า "จำนวนสูงสุดของ -____ ในกราฟ -vertex ที่ไม่มี -cycle สำหรับคืออะไร" ดังนั้นไม่ใช่พารามิเตอร์ แต่เป็นปริมาณที่เป็นสากลknม.ม.>kม.
Sasho Nikolov

ฉันคิดว่าคุณกำลังพูดถึงรอบเหนี่ยวนำ (หลุม) ถ้าคุณต้องการจำนวนขั้นต่ำมันเป็น 0, กราฟเปล่า หากคุณต้องการจำนวนสูงสุดมันคือ n ^ 3 สำหรับ k = 3 (พิจารณากราฟที่สมบูรณ์)
Yixin Cao

@YixinCao สำหรับ k = 3 หากคุณพิจารณากราฟที่สมบูรณ์ด้วยจุดยอด 'n' เราจะมีวัฏจักรที่มีความยาวมากกว่า 3 ฉันกำลังมองหาจำนวนรอบสูงสุดของความยาว k ในกราฟโดยที่กราฟไม่ควรมี รอบความยาวใด ๆ ที่มากกว่า k
Kumar

คำตอบ:


5

มันไม่ใช่ O(n) เว้นแต่ k=3. สำหรับk แม้กระทั่งความยาวสูงสุดของรอบในกราฟสองฝ่ายที่สมบูรณ์ Kn,k/2 คือ kและจำนวนความยาว -k รอบคือ (k2-1)!nk/2=Θ(nk/2). ตัวอย่างเช่นK2,n มีจำนวนกำลังสองเป็น 4 รอบ แต่ไม่เกิน 4 รอบ

ในทางตรงกันข้ามสำหรับค่าคงที่ใด ๆ k ในความยาวของวัฏจักรที่ยาวที่สุดจำนวนของสามเหลี่ยมจริง ๆ คือ O(n). ต่อไปนี้เป็นข้อพิสูจน์อย่างรวดเร็ว: ในโครงสร้างการค้นหาแรกที่มีความลึกแต่ละขอบเริ่มจากจุดสิ้นสุดด้านล่างสองจุดไปสู่บรรพบุรุษที่มากที่สุดk-1 ย้อนกลับไปดังนั้นใบไม้ใด ๆ ของต้นไม้จึงมีระดับมากที่สุด k-1และเป็นที่มากที่สุดรูปสามเหลี่ยม ตอนนี้เอาใบไม้และการเหนี่ยวนำ(k-12)


ใช่คุณพูดถูก :)
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.