タグ付けされた質問 「combinatorics」

組み合わせ論と離散数学構造に関する質問

11
数列の再帰関係の解決または近似
コンピューターサイエンスでは、再帰関係を解決する必要があります。これは、再帰的に定義された一連の数値の閉じた形式を見つけることです。ランタイムを検討する際、主にシーケンスの漸近的成長に主に興味があります。 例は 本体が時間f (n )を要するnから000まで下にステップする末尾再帰関数のランタイム:nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} フィボナッチ数列: F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} n個の括弧ペアを持つDyckワードの数:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} 長さリストに対するmergesortランタイムの繰り返しnnn: T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} T(1) &= T(0) = 0 …

2
計算可能な関数よりも計算できない関数の方が多いのはなぜですか?
現在、アルゴリズムと複雑さに関する本を読んでいます。現時点では、計算可能および計算不可能な機能について読んでおり、私の本は、計算可能よりも計算不可能な機能がはるかに多いと述べています。実際、大半は計算不可能です。ある意味では、私はそれを直感的に受け入れることができますが、この本は正式な証拠を与えておらず、トピックについて詳しく説明していません。 ここで誰かがそれについて詳しく説明したり、計算可能な関数よりも計算できない関数が多い理由をより厳密に理解したりすることを望みました。

4
一般化された3SUM(k-SUM)問題?
3SUMの問題は、3つの整数を識別しようとし、B 、CセットからSサイズをNよう+ B + C = 0。a 、b 、ca,b,ca,b,cSSSnnna + b + c = 0a+b+c=0a + b + c = 0 二次、すなわちよりも良い解はないことが推測されます。または、別の言い方をすると:o(n log (n )+ n 2)。o( n2)o(n2)\mathcal{o}(n^2)o(nログ(n )+ n2)o(nlog⁡(n)+n2)\mathcal{o}(n \log(n) + n^2) これが一般化問題に適用される場合、私は思っていたので:整数を探す私のためのI ∈ [ 1 ... K ]集合でSサイズのNようにΣ I ∈ [ 1 .. kの] A I = 0。a私aia_iI …

1
与えられた長さの通常の言語の単語数の漸近
通常の言語場合、をの長さ単語数とします。ジョーダン正準形(の一部のDFAの注釈なし遷移行列に適用)を使用すると、十分に大きい、 ここで、は複素多項式で、は複素「固有値」です。(小さい、という形式の追加の項があり。ここで、および場合、はですC N(L )L N L N C N(L )= kのΣを iは= 1つの P I(N )λをN I、P I λ I N CとK [ N = K ] [ N = K ] 1 N = k 0LLLcn(L )cn(L)c_n(L)LLLnnnLLLnnncn(L )= ∑i = 1kP私(n )λn私、cn(L)=∑i=1kPi(n)λin, c_n(L) = \sum_{i=1}^k P_i(n) \lambda_i^n, P私PiP_iλ私λi\lambda_innnCk[ n …

2
二分木を数える
(私は数学的な背景を持つ学生で、特定の種類の二分木の数を数える方法を知りたいです。) バイナリツリーの Wikipediaページを見ると、サイズルート化バイナリツリーの数はこのカタロニア語番号であるというこの主張に気付きました: C_n = \ dfrac {1} {n + 1} {2n \ choose n}nnnCn=1n+1(2nn)Cn=1n+1(2nn)C_n = \dfrac{1}{n+1}{2n \choose n} しかし、私は自分でそのような結果をどのように思い付くことができるのか理解できませんか?この結果を見つける方法はありますか? さて、サブツリーの順序(左、右)が考慮されない場合はどうなりますか?たとえば、私の観点から、これら2つのツリーは同じであると考えています。 /\ /\ /\ /\ 同様の方法を適用して、これらのオブジェクトのうち正確にnnnノードを持つオブジェクトの数をカウントすることは可能でしょうか?

1
貪欲なアルゴリズムはいつコイン交換の問題を解決できますか?
異なる金種および値v のコインのセットが与えられた場合、値vを表すのに必要な最小数のコインを見つけたいと考えます。C 1 、。。。、c nc1,...,cnc1, ... , cn たとえば、コインセット1,5,10,20の場合、合計6の場合は2コイン、合計19の場合は6コインになります。 私の主な質問は、この問題を解決するために貪欲な戦略をいつ使用できるかということです。 ボーナスポイント:この文は明らかに間違っていますか?(From:最小コイン変更問題に対して貪欲なアルゴリズムで十分かどうかを見分ける方法は?) ただし、この論文では、欲張りアルゴリズムが最初の最大値と2番目に大きい値に対して機能する場合、それらすべてに対して機能するという証拠があり、それをチェックするために欲張りアルゴリズムと最適なDPアルゴリズムを使用することを提案します。 http://www.cs.cornell.edu/~kozen/papers/change.pdf 追伸 そのスレッドの答えは信じられないほどぎこちないことに注意してください。そのため、私は新たに質問をしました。

2
和のセットを「加算解除」するための効率的なアルゴリズム
自然数Xのマルチセットが与えられた場合、すべての可能な合計のセットを考えます。 sums(X)={∑i∈Ai|A⊆X}sums(X)={∑i∈Ai|A⊆X}\textrm{sums}(X)= \left\{ \sum_{i \in A} i \,|\, A \subseteq X \right\} 例えば、sums({1,5})={0,1,5,6}sums({1,5})={0,1,5,6}\textrm{sums}(\left\{1,5\right\}) = \left\{0, 1, 5, 6\right\}ながら sums({1,1})={0,1,2}sums({1,1})={0,1,2}\textrm{sums}(\left\{1,1\right\}) = \left\{0, 1, 2\right\}。 (和の入力セットのサイズに関して測定される)逆演算を計算するための最も効率的なアルゴリズムは何ですか?具体的には、次のいずれかを効率的に計算できますか? 特定のセットが有効な合計セットであるかどうか。(例えば、{0,1,2}{0,1,2}\left\{0,1,2\right\}、有効であるが、{0,1,3}{0,1,3}\left\{0,1,3\right\}ではありません。) 指定されたセットに合計されるマルチセット。 最小の所与のセットへの合計マルチセット。(たとえば、{1,2}{1、2}\left\{1,2\right\}と{1,1,1}{1、1、1}\left\{1,1,1\right\}両方の合計{0,1,2,3}{0、1、2、3}\left\{0,1,2,3\right\}が、前者が小さいです。)

1
アルゴリズム設計におけるマトロイドとグリードイドはどのくらい基本的ですか?
当初、マトロイドは、いくつかのグラウンドセットIに対するサブセットコレクションの線形独立性の概念を一般化するために導入されました。この構造を含む特定の問題により、貪欲なアルゴリズムが最適なソリューションを見つけることができます。欲張り法によって最適な解決策を見つけることを可能にするより多くの問題を捕捉するために、この構造を一般化するために、後にグリードイドの概念が導入されました。EEEIII これらの構造は、アルゴリズム設計でどのくらいの頻度で発生しますか? さらに、多くの場合、貪欲なアルゴリズムでは最適なソリューションを見つけるために必要なものを完全にキャプチャすることはできませんが、それでも非常に優れた近似ソリューションを見つけることができます(たとえば、Bin Packing)。それを考えると、問題がグリードイドまたはマトロイドにどれだけ「近い」かを測定する方法はありますか?

1
3,400万の組み合わせのピザ商業用クレーム
ピザのコマーシャルは、3400万の異なる組み合わせに成分を組み合わせることができると主張しています。私はそれを信じていなかったので、錆びた組み合わせのスキルを振り払って、それを理解しようとしました。ここに私が持っているものがあります:オンライン注文サイトから私は選択肢を得ました クラスト(4種類、1つ選択) サイズ(4種類、1を選択)いくつかのクラストは特定のサイズに制限されています-それを考慮していないが、したいです。 チーズ(5種類、1つ選択) ソース(4種類、1つ選択) ソースレベル(3種類、1つ選択) 肉(9種類、9種類まで選択) 肉以外(15種類、15個まで選択可能) だから私はこれが組み合わせの問題(順序は重要ではない)であり、nはkを選択しない問題であると考えました.nullはクラストとクラスト、サイズ、チーズ、ソースとソースのレベルがすべて1つのみを選択する場合にのみ許可されます。肉と肉以外?だからそれは次のようになります:2?2?2^? クラスト (41)=4(41)=4\binom{4}{1}=4 サイズ (41)=4(41)=4\binom{4}{1}=4 チーズ(51)=5(51)=5\binom{5}{1}=5 ソース (41)=4(41)=4\binom{4}{1}=4 ソースレベル(31)=3(31)=3\binom{3}{1}=3 肉29=51229=5122^9 = 512 肉以外215=32768215=327682^{15} = 32768 この時点で立ち往生していますが、これらを組み合わせて可能な組み合わせの総数を取得するにはどうすればよいですか? このサイトは役に立ちました。 ETA: クラストサイズの制限を考慮しない場合-一部のクラストは特定のサイズでのみ利用可能です-160億以上あります。16,106,127,360の組み合わせが利用可能なため、かなりの差がありました。

1
すべての十分に大きい文字列には繰り返しがありますか?
ましょ固定サイズの文字のある有限集合とします。してみましょうαを超えるいくつかの文字列でΣ。私たちは、空でない部分文字列と言うβのαがある繰り返した場合にβ = γ γ、一部の文字列のためのγ。ΣΣ\Sigmaαα\alphaΣΣ\Sigmaββ\betaαα\alphaβ=γγβ=γγ\beta = \gamma \gammaγγ\gamma さて、私の質問は以下が成り立つかどうかです。 すべてのために、いくつか存在するN ∈ N毎に文字列のようなオーバー少なくとも長さの、少なくとも一つの繰り返しが含まれています。ΣΣ\Sigman∈Nn∈Nn \in \mathbb{N}Σ N ααα\alphaΣΣ\Sigmannnαα\alpha 私はバイナリアルファベットでこれを確認しましたが、これはその場合には非常に簡単ですが、サイズ3のアルファベットはすでに確認するのがかなり難しいため、任意の大きな文法の証明が必要です。 上記の推測が当てはまる場合、他の質問で空の文字列を挿入する要求を(ほぼ)削除できます。

1
数に等しい二項係数を見つけることの複雑さ
バイナリエンコーディングでビットを使用して)数値取得していると仮定します。O (log m )mmmO(logm)O(log⁡m)O(\log m) どれだけ速く見つけることができますか(またはそのようなものが存在しないと判断しますn,k∈N,1&lt;k≤n2:(nk)=mn,k∈N,1&lt;k≤n2:(nk)=mn,k\in \mathbb N, 1<k\leq\frac{n}{2}:{n \choose k}=m か)? たとえば、入力m = 8436285が与えられた場合、n = 27、k = 10をm=8436285m=8436285m=8436285出力できます。n=27,k=10n=27,k=10n=27, k=10 問題の単純なアルゴリズムは、nのすべての可能な値を調べ、プロパティを満たすkのnnn値を検索します。kkk 簡単な観察は、\ log mより小さいまたはO(\ sqrt m)より大きいnの値をチェックする必要がないということです。ただし(n値ごとにO(1)可能なk値のみをチェックできたとしても)これは、入力サイズが指数関数的である非効率的なアルゴリズムになります。nnnlogmlog⁡m\log mO(m−−√)O(m)O(\sqrt m)O(1)O(1)O(1)kkknnn 別のアプローチは、kの可能な値kkkを調べて(\ {2,3、\ ldots、2 \ log m \}をチェックするのに十分です{2,3,…,2logm}{2,3,…,2log⁡m}\{2,3,\ldots,2\log m\})、nnn値をチェックするたびに行います。その後、次を使用できます: (nk)k&lt;(nk)&lt;nkk!(nk)k&lt;(nk)&lt;nkk!\left(\frac{n}{k}\right)^k<{n\choose k}< \frac{n^k}{k!} したがって、与えられたkに対して、範囲[\ sqrt [\ leftroot {-2} \ uproot {2} k] {m \ …


2
ユニパシーグラフはいくつのエッジを持つことができますか?
ユニパシーグラフは、1つの頂点から他の頂点への単純なパスが最大1つであるような有向グラフです。 ユニパシーグラフにはサイクルがあります。たとえば、二重にリンクされたリスト(円形のリストではありません!)は単一パスのグラフです。リストに要素がある場合、グラフには長さ2のサイクル、合計ます。nnnn−1n−1n-12(n−1)2(n−1)2(n-1) 個の頂点を持つユニパシーグラフのエッジの最大数はいくつですか?漸近的な境界があります(例:または)。O (n )Θ (n 2)nnnO(n)O(n)O(n)Θ(n2)Θ(n2)\Theta(n^2) 計量された単一経路グラフで最短経路を見つけることに触発されました。で、私の証明、私は当初、エッジの数があったと主張したかったが、その後のサイクル数を境界とすることは十分であったことに気づきました。O(n)O(n)O(n)

1
シェルピスキーグラフ上のハミルトニアンサイクルの数
私はこのフォーラムに初めて参加し、物理学者で脳を整えるためにこれを行います。そのため、最もエレガントな言語を使用しない場合は、恵みを示してください。他のタグがより適切だと思われる場合は、コメントを残してください。 私は、ハミルトニアンサイクルの数を次のシェルピンスキーグラフ計算する必要があるこの問題を解決しようとしています。(シェルピンスキーグラフの定義と写真については、上記のリンクも参照してください)C(n)C(n)C(n)nnnSnSnS_n 私はを見つけましたが、解決策が与えられた値一致しないため、何かを台無しにしたに違いありません。私の議論は非常に基本的な考えから成り立っており、間違いを見つけることはできません。どんな助けも大歓迎です。長いように見えても、フォローしている間にグラフを見れば、考えは些細なものになります。C(n)C(n)C(n)C(5)=71328803586048C(5)=71328803586048C(5) = 71328803586048 (a)与えられたグラフ、外側の角呼び出します。次に、次の数量を定義します。SnSnS_nA,B,CA,B,CA,B,C N(n):=N(n):=N(n) := からへのハミルトニアンパスの数。AAACCC N¯(n):=N¯(n):=\bar{N}(n) := を除く各ノードを1回訪問からへのパスの数。AAACCCBBB また、このようなパスをまたはタイプのパスと呼ぶことにします。NNNN¯N¯\bar{N} (b)ことが簡単にわかります。N(n)=N¯(n)N(n)=N¯(n)N(n)=\bar{N}(n) 理由は次のとおりですタイプのパスを考えてください。から始まるこのパスの形式はです。セグメントをに置き換えることにより、タイプのパスを取得します。この操作は、すべてのタイプのパスをタイプのパスに一意にマッピングします。NNNAAA(A,...,X1,B,X2,...,C)(A,...,X1,B,X2,...,C)(A,...,X_1,B,X_2,...,C)(X1,B,X2)(X1,B,X2)(X_1,B,X_2)(X1,X2)(X1,X2)(X_1,X_2)N¯N¯\bar{N}NNNN¯N¯\bar{N} (c)再帰を導出します。N(n+1)=2N(n)3N(n+1)=2N(n)3N(n+1)=2N(n)^3 検討から型経路にし、外側の隅subtrianglesを表すによってそれぞれ。タイプのパスは、からを介してまで、一度だけ各サブトライアングルを訪れることは明らかです。ここで、サブと接触するノードを考えます。(i)離れる前、または(ii)を入力した後、パスがこのポイントにアクセスする場合、2つの可能性があります。NNNAAABBBA,B,CA,B,CA,B,CTA,TB,TCTA,TB,TCT_A,T_B,T_CNNNTATAT_ATBTBT_BTCTCT_CZZZTATAT_ATCTCT_CTATAT_ATCTCT_C。これらの場合、内の3つのサブパスは、それぞれタイプ(i)または(ii)です。これを念頭に置いてカウントすることができますTA,TB,TCTA,TB,TCT_A,T_B,T_C N,N,N¯N,N,N¯N,N,\bar{N} N¯,N,NN¯,N,N\bar{N},N,N N(n+1)=N(n)N(n)N¯(n)+N¯(n)N(n)N(n)N(n+1)=N(n)N(n)N¯(n)+N¯(n)N(n)N(n)N(n+1)=N(n)N(n)\bar{N}(n)+\bar{N}(n)N(n)N(n)そして(b)で上に到達します再帰。 (D)我々は再帰解決の(c)とと得。N(1)=1N(1)=1N(1)=1N(n)=230+31+...+3n−2N(n)=230+31+...+3n−2N(n)=2^{3^0+3^1+...+3^{n-2}} (e)グラフハミルトニアンサイクルを考えます。3つのサブ三角形はそれぞれ2つのノードのみを介して他のサブ三角形に接続されているため、サイクルが1つの接続ノードを介して各サブ三角形に1回だけ入り、それを「塗りつぶし」、最後に他の接続ノードを介して離れることは明らかです。したがって、のハミルトニアンサイクルは、すべてが構造を持つサブトライアングルの3つの型サブパスで構成されます。ハミルトニアンサイクルの数について結論づけることができますSnSnS_nSnSnS_nNNNSn−1Sn−1S_{n-1} C(n)=N(n−1)3C(n)=N(n−1)3C(n) = N(n-1)^3。 ただし、場合は次のようになりますn=5n=5n=5 C(5)=N(4)3=81923=549755813888≠71328803586048C(5)=N(4)3=81923=549755813888≠71328803586048C(5) = N(4)^3 = 8192^3=549755813888 \neq 71328803586048 後者は問題のページに従って取得する必要があります(上記のリンク)。 ヘルプやコメントをありがとう。

4
アルゴリズムの繰り返しと生成関数
コンビナトリクスは、コンピューターサイエンスで重要な役割を果たします。アルゴリズムの設計と設計の両方で、組み合わせ手法を頻繁に利用します。たとえば、グラフで頂点カバーセットを見つける方法の1つは、\ binom {n} {k}の可能なサブセットすべてを検査するだけです。二項関数は指数関数的に成長しますが、kが何らかの固定定数である場合、漸近解析による多項式時間アルゴリズムになります。kkk(nk)(nk)\binom{n}{k}kkk 多くの場合、現実の問題には、より複雑な組み合わせのメカニズムが必要であり、それを繰り返しの観点から定義することができます。有名な例の1つは、(単純に)次のように定義されたフィボナッチ数列です。 f(n)=⎧⎩⎨10f(n−1)+f(n−2)if n=1if n=0otherwisef(n)={1if n=10if n=0f(n−1)+f(n−2)otherwisef(n) = \begin{cases} 1 & \text{if } n = 1 \\ 0 & \text{if } n = 0 \\ f(n-1) + f(n-2) & \text{otherwise} \end{cases} nnn番目の項の値の計算は、この繰り返しを使用して指数関数的に増加しますが、動的プログラミングのおかげで、線形時間で計算できます。現在、すべての繰り返しがDP(オフハンド、階乗関数)に役立つわけではありませんが、カウントを生成関数ではなく繰り返しとして定義する場合、潜在的に悪用可能なプロパティです。 関数の生成は、特定の構造のカウントを形式化するエレガントな方法です。おそらく最も有名なのは、次のように定義された二項関数です。 (x+y)α=∑∞k=0(αk)xα−kyk(x+y)α=∑k=0∞(αk)xα−kyk(x + y)^\alpha = \sum_{k=0}^\infty \binom{\alpha}{k}x^{\alpha - k}y^k 幸いなことに、これには閉じた形式のソリューションがあります。すべての生成関数がこのようなコンパクトな記述を許可するわけではありません。 私の質問はこれです:アルゴリズムの設計で使用される関数を生成する頻度はどれくらいですか?分析によってアルゴリズムに必要な成長率を理解するためにそれらがどのように活用されるかは簡単にわかりますが、問題を解決する方法を作成するときに問題について教えてください。 同じカウントが何度も繰り返しとして再定式化される場合、動的プログラミングに役立つ可能性がありますが、おそらく同じ生成関数は閉じた形式になります。だから、それはそれほど均等にカットされていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.