グラフのサイクル数


9

多くのサイクルのどのCk kである頂点グラフグラフは、任意のサイクル持たないように、Cメートル メートル>k

たとえば、=5k=場合、グラフには最大で2つのCため、GC kがありませんk > 3 Ckk>

上記の条件を満たすOサイクルがあると思います。

誰か助けてもらえますか?


2
頂点によって引き起こされるサイクルについて話していますか?素なサイクル?
Igor Shinkar 2013

1
答えはパリティに依存しメートルkます。たとえば、5サイクルのバランスのとれたブローアップを考えます。このグラフには6サイクルは含まれていませんが、Θ5によって誘発された5サイクルが含まれています。
Igor Shinkar 2013

5
@IgorShinkar私は「m > kに対してmサイクルがないn頂点グラフのkサイクルの最大数はいくつですか?」という質問を読みました。したがって、mはパラメーターではなく、普遍的に定量化されますメートルメートル>kメートル
Sasho Nikolov 2013

私はあなたが誘導サイクル(穴)について話していると思います。最小数が必要な場合、それは確かに0、空のグラフです。最大数が必要な場合は、k = 3の場合はn ^ 3です(完全なグラフを検討してください)。
Yixin Cao 2013

@YixinCao k = 3の場合、「n」個の頂点を持つ完全なグラフを考えると、長さが3を超えるサイクルがあります。グラフに長さkの最大数のサイクルを探して、グラフに含まれないようにしますkを超える長さのサイクル
Kumar

回答:


5

k = 3でない限り、はありません。以下のためのKであっても、完全な二部グラフにおけるサイクルの最大長さK 、N K / 2Ok=kKk/2あり、及び長さ-の数k個のサイクルがあるKkk。たとえば、 K 2 nは4サイクルの2次数ですが、4より長いサイクルはありません。k21k/2=Θk/2K2

一方、最長のサイクルの長さの定数境界の場合、三角形の数は実際にはO n です。ここに簡単な証明があります:深さ優先検索ツリーでは、各エッジは2つのエンドポイントの下位から祖先まで最大でk 1ステップ戻るため、ツリーのどのリーフにも次数が最大でk 1ありますkOk1k1あり、ほとんど三角形。葉を取り除き、誘導する。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.