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

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

1
ハノイの塔、ただし任意の初期および最終構成
最近、ハノイの塔のバリエーションであるこの問題に遭遇しました。 問題文: よく知られている問題、ハノイの塔の次のバリエーションを考えてみましょう。 我々は、与えられたタワーおよびサイズのM個のディスク1 、2 、3 、... 、Mいくつかの塔の上に積層します。あなたの目的は、管理できる限り少ない移動ですべてのディスクをk 番目のタワーに転送することですが、次のルールを考慮します。nnn1,2,3,…,m1,2,3,…,m1,2,3,\dots,mkthkthk^{\text{th}} 一度に1つのディスクのみを移動し、 大きいディスクを小さいディスクに移動しないでください。 最大で距離でタワー間のみを移動する。ddd (元の問題で制限: 及びM ≤ 100テストケースの数。≤ 1000年すべての問題は以下で解決することができると仮定することができる。 20000移動します。)3≤n≤10003≤n≤10003 \le n \le 1000m≤100m≤100m \le 100≤1000≤1000\le 1000200002000020000 面白いですね。ハノイ問題の古典的なタワーには、ソース、宛先、およびディスクをソースから宛先に移動するために使用される一時的なタワーがあります。そのサイトで提案された問題には、基本的に初期構成と最終構成があります。 この問題にどのように取り組みますか?

2
nマルチ選択kの複雑さを簡素化
私は繰り返しでnからk要素を選択することに相当する時間の複雑さを持つ再帰的アルゴリズムを持っています、そして私はより単純化されたbig-O式を得ることができるかどうか疑問に思っていました。私の場合、はよりも大きく、独立して成長します。kkknnn 具体的には、明示的な指数式を期待します。これまでに見つけた中で最高のものは、スターリングの近似に基づいているので、それを使用できますが、もっと良いものが得られるかどうか疑問に思いました。O(n!)≈O((n/2)n)O(n!)≈O((n/2)n)O(n!) \approx O((n/2)^n) O((n+k−1k))=O(?)O((n+k−1k))=O(?)O\left({{n+k-1}\choose{k}}\right) = O(?)

1
ランダムグラフのクリーク数
(Gilbertによる)n個のノードを持つランダムグラフファミリーがあります。可能な各エッジは、確率pでG (n 、p )に独立して挿入されます。ましょX kはサイズのクリークの数であり、KにおけるG (N 、P )。G (n 、p )G(n,p)G(n, p)んnnG (n 、p )G(n,p)G(n, p)pppバツkXkX_kkkkG (n 、p )G(n,p)G(n, p) 私が知っている、しかしどうやってそれを証明するのですか?E( Xk)= ( nk) ⋅P( k2)E(Xk)=(nk)⋅p(k2)\mathbb{E}(X_k)=\tbinom{n}{k}\cdot p^{\tbinom{k}{2}} どのように表示するについてのn → ∞の?そして、どのように表示することE(X C ⋅ ログ2 N)→ 0のためのN → ∞と固定、任意の定数をC > 1?E( Xログ2ん)≥ 1E(Xlog2⁡n)≥1\mathbb{E}(X_{\log_2n})\ge1n → ∞n→∞n\to\inftyE( XC ⋅ ログ2ん)→ 0E(Xc⋅log2⁡n)→0\mathbb{E}(X_{c\cdot\log_2n}) \to 0n → …

1
セットのパーティションを表すコンパクトな方法は何ですか?
セットパーティションを表すための効率的なデータ構造が存在します。これらのデータ構造は、UnionやFindなどの操作には時間的に複雑ですが、スペース効率は特に高くありません。 セットのパーティションを表すスペース効率の良い方法は何ですか? 以下は、考えられる開始点の1つです。 N個の要素 を持つセットのパーティション数は、N番目のベル数であるB Nであることを知っています。したがって、N個の要素を持つセットのパーティションを表すための最適な空間の複雑さは、 log 2(B N)ビットです。そのような表現を見つけるために、(N要素のセットのパーティションのセット)と(1からB Nまでの整数のセット)の間の1対1のマッピングを探すことができます。NNNBNBNB_NNNNNNNログ2(BN)log2⁡(BN)\log_2(B_N)NNN111BNBNB_N 計算するのに効率的なそのようなマッピングはありますか?「効率的」とは、このコンパクトな表現を、またはlog 2(B N)の時間多項式で、操作が簡単な表現(リストのリストなど)との間で変換したいということです。NNNログ2(BN)log2⁡(BN)\log_2(B_N)

2
この組み合わせ最適化の問題は、既知の問題と似ていますか?
問題は次のとおりです。 2次元の配列/数値のグリッドがあり、それぞれが「利益」または「利益」を表します。また、2つの固定整数とh(「幅」と「高さ」)と、固定整数nもあります。wwwhhhnnn ここで、これらの長方形のセルの値の合計が最大になるように、グリッドに次元w × hの長方形をオーバーレイします。nnnw×hw×hw \times h 次の図は、そのような2つの長方形が上に重ねられた2次元グリッドの例です(この図は、最適なソリューションを示していませんおよびn = 2の 1つの可能な重ね合わせのみです)。w=h=2w=h=2w = h = 2n=2n=2n = 2 長方形は交差できません(そうでなければ、1つの長方形の最適な位置を見つけて、すべての長方形をその位置に配置するだけで済みます)。 上記の例では、セルの値の合計は−2+4.2+2.4+3.14+2.3−1.4+1−3.1−2+4.2+2.4+3.14+2.3−1.4+1−3.1-2 + 4.2 + 2.4 + 3.14 + 2.3 -1.4 + 1 - 3.1 これは、組み合わせ最適化の既知の問題に似ていますか?読書を始めて、それを解決する方法を見つけることができるように。 興味のある人のためのいくつかの背景: これまでのところ、私が持っていた唯一のアイデアは、貪欲なアルゴリズム(最初の四角形の最適な場所を見つけ、次に2番目の四角形の重複しない場所を見つけるなど)または遺伝的アルゴリズムなどのメタヒューリスティックです。 実際には、約100万のセルと数万(または数十万)の長方形を持つグリッドでこの問題を解決したいと考えていますが、短時間で解決する必要はありません(つまり、アルゴリズムは数時間または数日かかる場合があります。)正確な解決策を期待していませんが、これらの制約を考慮して、可能な限り優れた解決策を求めています。 乾杯!

3
n個の項目をテストするとき、すべてのtサブセットを可能な限り少数のsサブセットでカバーするにはどうすればよいですか?
この問題は、ソフトウェアのテストから発生しました。問題を説明するのは少し難しいです。最初に例を示し、次に問題を一般化してみます。 AからJまでの10項目のテストがあり、同時に3項目をテストできるテストツールがあります。テストツール内のアイテムの順序は関係ありません。もちろん、徹底的なテストを行うには、アイテムの組み合わせが必要です。10C310C3^{10}C_{3} 問題はより複雑です。追加の条件として、1組のアイテムを一緒にテストすると、同じペアを再度テストする必要がなくなるという条件があります。 たとえば、次の3つのテストを実行するとします。 ABC ADE BDF 実行する必要はありません: ABD ペアA、Bは最初のテストケースでカバーされ、A、Dは2番目のテストケースでカバーされ、B、Dは3番目のテストケースでカバーされたためです。 それで問題は、すべてのペアがテストされることを保証するために必要なテストケースの最小数は何ですか? 一般化するために、n個のアイテムがある場合、sを同時にテストでき、可能なすべてのtタプル(s> tなど)をテストする必要があります。これは、必要なテストケースの最小数です。 n、s、tの項? そして最後に、必要なテストケースを生成するための良いアルゴリズムは何でしょうか?

2
二分木の平均高さはどれくらいですか?
二分木の平均高さについて正式な定義はありますか? 次の2つの方法を使用してバイナリツリーの平均の高さを見つけることに関するチュートリアルの質問があります。 自然な解決策は、ルートからリーフへのすべての可能なパスの平均の長さを取ることです。 。avh1(T)=1# leaves in T⋅∑v leaf of Tdepth(v)avh1⁡(T)=1# leaves in T⋅∑v leaf of Tdepth⁡(v)\qquad \displaystyle \operatorname{avh}_1(T) = \frac{1}{\text{# leaves in } T} \cdot \sum_{v \text{ leaf of } T} \operatorname{depth}(v) 別のオプションは、再帰的に定義することです。つまり、ノードの平均の高さは、サブツリーの平均の高さの平均に1を加えたものです。つまり、 avh2(N(l,r))=avh2(l)+avh2(r)2+1avh2⁡(N(l,r))=avh2⁡(l)+avh2⁡(r)2+1\qquad \displaystyle \operatorname{avh}_2(N(l,r)) = \frac{\operatorname{avh}_2(l) + \operatorname{avh}_2(r)}{2} + 1 リーフのためのL及びAVH 2(_ )= 0空きスロット用。avh2(l)=1avh2⁡(l)=1\operatorname{avh}_2(l) = 1lllavh2(_)=0avh2⁡(_)=0\operatorname{avh}_2(\_) = 0 …

2
エミュレーター入力の最適化問題をどのように分類しますか?どのアルゴリズムでそれにアプローチする必要がありますか?
質問の性質上、多くの背景情報を含める必要があります(私の質問は:これをどのように絞り込むのですか?)とはいえ、要約すると(私の知る限り)次のようになります。 非常に大きな組み合わせ検索空間で局所最適を見つける方法は何ですか? バックグラウンド ツールを使用したスーパープレイコミュニティでは、コスト(通常は完了までの時間)を最小限に抑えるために、ビデオゲームコンソールまたはエミュレータに特別に細工された(リアルタイムでは生成されない)入力を提供することを目指しています。これが現在行われている方法は、例えば(何度もゲームフレーム・バイ・フレームを再生し、フレームごとに入力を指定して、多くの場合、実行の部分をやり直すことである最近発表されたため、実行ゼルダの伝説を:時間のオカリナを持っています合計198,590回の再試行)。 これらの実行を実行して目標を達成するには、通常、ルート計画とトラバーサルという2つの主な要因があります。前者は後者よりもはるかに「創造的」です。 ルート計画は、プレイヤーがゲームを完了するために全体的にナビゲートする方法を決定するものであり、多くの場合、ランの最も重要な部分です。これは、たとえば、使用するソート方法の選択に似ています。世界で最高のバブルソートは、100万要素のクイックソートよりも優れているわけではありません。 ただし、完璧を求めて、トラバーサル(ルートの実行方法)も大きな要因です。類推を続けると、これがソーティングアルゴリズムの実装方法です。特定の入力フレームがないと実行できないルートもあります。これはツール支援の最も退屈なプロセスであり、完了したランの生成には数か月、場合によっては数年もかか​​ります。同じアイデアのさまざまなバリエーションを試してみるのが一番だと考えられるため、難しいプロセスではありません(人間にとって)。このタスクへのマシンの適用は、ここでは適切なようです。 私の目標は、今やニンテンドー64システム全体のトラバーサルプロセスを自動化することです。この問題の探索空間があるはるかに強引なアプローチで攻撃するには大きすぎます。N64ランのnフレームセグメントには2つの30n可能な入力があります。つまり、30フレームの入力(30FPSでの1秒)には2つの900可能な入力があります。これらの潜在的なソリューションをテストすることは不可能であり、2時間の実行全体をテストすることはできません。 ただし、フルランの全体的な最適化を試行する(または試行するつもりはありません)ことに興味はありません。むしろ、初期入力が与えられたときに、実行の特定のセグメントの局所最適値(または、ある種のセミグローバル最適化の場合は最も近いn個の局所最適値)を近似したいと思います。つまり、ルートとそのルートの最初のトラバーサルを指定します。そのトラバーサルの近隣を検索してコストを最小限に抑えますが、問題を解決できるすべてのケースを試すように縮退しないでください。 したがって、私のプログラムは、開始状態、入力ストリーム、評価関数を取り、評価の結果を最小化することによって局所最適を出力する必要があります。 現在の状態 現在、すべてのフレームワークを処理しています。これには、エミュレーターの操作、セットアップとティアダウン、構成などによる入力ストリームの評価が含まれます。また、一種のプレースホルダーとして、オプティマイザーは非常に基本的な遺伝的アルゴリズムです。入力ストリームの母集団を評価し、勝者を格納/置換し、勝者ストリームを変更して新しい母集団を生成します。このプロセスは、時間や世代番号など、任意の基準が満たされるまで続きます。 このプログラムの最も遅い部分は、断然、入力ストリームの評価になることに注意してください。これは、nフレームのゲームをエミュレートする必要があるためです。(時間があれば、この種のものへのフックを提供する独自のエミュレーターを作成しますが、今のところ、メッセージの合成と、別のプロセスからの既存のエミュレーターのメモリの変更が残っています。)メインコンピューターかなりモダンで、200フレームの評価には約14秒かかります。そのため、関数の評価の数を最小限に抑えるアルゴリズム(選択した場合)を使用したいと思います。 エミュレータを同時に管理するフレームワークでシステムを作成しました。そのため、線形パフォーマンススケールで一度に多数のストリームを評価できますが、実際には、システムパフォーマンスが低下する前に、実行中のエミュレーターの数は8から32にしかなりません(32は実際にそれを押し上げています)。つまり、オプティマイザは評価を待つ間、かなりの作業を行うことができるため、評価が行われている間に処理を実行できるアルゴリズム(選択した場合)は非常に有益です。 テストとして、私の評価関数(ゲームBanjo Kazooieの)は、フレームごとに、プレーヤーからゴールポイントまでの距離を合計することでした。つまり、最適なソリューションは、できるだけ早くそのポイントに近づくことです。変異をアナログスティックのみに制限すると、問題のないソリューションを取得するのに1日かかりました。(これは同時実行を実装する前でした。) 同時実行を追加した後、Aボタンを押す操作の変更を有効にし、ジャンプが必要な領域で同じ評価関数を実行しました。24個のエミュレーターを実行すると、最初は空白の入力ストリームから目標に到達するのに約1時間かかりましたが、最適に近いものに到達するには、おそらく数日実行する必要があります。 問題 私が直面している問題は、最適化問題を適切にモデル化する方法を知るのに数学的最適化フィールドについて十分に知らないということです!たとえば、Wikipediaで説明されているように、多くのアルゴリズムの概念的なアイデアを大まかに追跡できますが、問題を分類する方法や、そのカテゴリに最新のアルゴリズムを選択する方法がわかりません。 私が知ることができることから、私は非常に大きな近所との組み合わせの問題を抱えています。その上、評価関数は非常に不連続で、勾配がなく、多くのプラトーがあります。また、制約はそれほど多くありませんが、問題を解決するのに役立つ場合は、それらを表現する機能を喜んで追加します。たとえば、[スタート]ボタンを使用しないように指定できますが、これは一般的なケースではありません。 質問 だから私の質問は:これをどのようにモデル化するのですか?どのような最適化問題を解決しようとしていますか?どのアルゴリズムを使用すると思いますか?私は研究論文を読むことを恐れていないので、何を読むべきかを知らせてください! 直感的に、遺伝的アルゴリズムは実際には学習していないように見えるため、最高ではありません。たとえば、[開始]を押すと常に評価が悪化するように見える場合(ゲームが一時停止するため)、「ある時点で[開始]を押しても役に立たない」と学習するある種のデザイナーまたは頭脳があるはずです。しかし、この目標でさえ、思ったほど簡単ではありません。スーパーマリオ64のいわゆる「一時停止後方ロングジャンプ」などのように、プレスを押すのが最適な場合があるためです。ここでは、脳はより複雑なパターンを学習する必要があります。「スタートを押しても、プレーヤーがこの非常に特殊な状態にあり、ボタンを押しながらいくつかの組み合わせを続ける場合を除き、役に立たない」 変更にもっと適した他の方法で入力を表現する(またはマシンが学習できる)ようです。フレームごとの入力は細かく見えます。本当に必要なのは「アクション」であり、これは複数のフレームにまたがる場合があります...しかし、多くの発見はフレームごとに行われるため、完全に除外することはできません(前述の一時停止後方ロングジャンプには、フレームレベルの精度が必要です)。また、入力がシリアルに処理されるということは、活用できるものでなければならないようですが、方法はわかりません。 現在、私は(リアクティブ)タブー検索、超大規模近傍検索、教育学習ベースの最適化、およびアリコロニー最適化について読んでいます。 この問題は、ランダムな遺伝的アルゴリズム以外のものに取り組むのが難しいほど単純ですか?それとも実際にずっと前に解決された些細な問題ですか?読んでくれてありがとう。返事を送ってくれてありがとう。

1
安定したマッチング問題におけるカップルの安定性
で安定マッチング問題、ケースが存在し得ることが記載されている男性のリストは、その決定をコンテンツとすることができるが、まだのリストアルゴリズムが男性の提案で実行されることができないとき。mmmfff 私が読んだことによると、不安定な一致は、とが現在のパートナーよりも互いを好む場合に発生します。mmmfff この場合の安定したマッチングの定義では、少し迷っています。ここでスライドについて説明します。 女性の好みが一致していなくても男性が満足している限り、ペア安定していますか?(m,f)(m,f)(m, f)

2
最適な順序を見つける
私はこの問題に遭遇し、それに取り組む方法を見つけるのに苦労しています。どんな考えでも大歓迎です! たとえば、行列 -1、0、1が与えられているとします。{−1,0,1}n × k{−1,0,1}n × k\{-1, 0, 1\}^{n\ \times\ k} ⎡⎣⎢⎢⎢⎢⎢⎢1−10−11001−101010000010−11−11− 1⎤⎦⎥⎥⎥⎥⎥⎥[1010−1−100010110−1−1−10111000−1]\begin{bmatrix} 1 & 0 & 1 & 0 & -1 \\ -1 & 0 & 0 & 0 & 1 \\ 0 & 1 & 1 & 0 & -1 \\ -1 & -1 & 0 & 1 …

1
最も重い平面サブグラフ
次の問題を考えてください。 与えられた:エッジに実際の非負の重みを持つ完全なグラフ。 タスク:最大重量の平面サブグラフを見つけます。(可能なすべての平面サブグラフの中で「最大」。) 注:最大重みサブグラフは三角形分割になります。完全なグラフが個の頂点にある場合、m = 3 n − 6のエッジになります。nnnm=3n−6m=3n−6m=3n-6 質問:この問題に最適なアルゴリズムは何ですか?その時間の複雑さは何ですか?

1
正方形のユニークなタイル
私たちは、タイルにしたい:2つのタイルの種類使用して-square 1 × 1 -squareタイルと2 × 2、すべての根底にある広場が重ならずに覆われているように-squareタイルを。n 1 × 1-二乗と任意の数の2 × 2-二乗を使用して、一意に耕作可能な最大の正方形のサイズを与える関数f (n )を定義します。m × mm×mm\times m1 × 11×11 \times 12 × 22×22 \times 2f(n )f(n)f(n)んnn 1 × 11×11\times 12 × 22×22 \times 2 この関数は計算可能ですか?アルゴリズムとは何ですか? EDIT1:スティーブンの答えに基づいて、ユニークなタイリング手段配置する一つの方法があることをの内側-squaresをM × Mの位置のためのユニークな構成で-square nは1 × 1内部-squares メートル× mは -平方。2 × 22×22 \times 2m × mm×mm …

1
任意の順列を一連の(挿入、移動、削除)操作として表現する
2つの文字列があるとします。それらをおよびBと呼びます。どちらの文字列にも繰り返し文字はありません。AAABBB をBに変換する挿入、移動、削除操作の最短のシーケンスを見つけるにはどうすればよいですか?AAABBB insert(char, offset)文字列charの指定さoffsetれた位置に挿入します move(from_offset, to_offset)現在オフセットfrom_offsetにある文字を新しい位置に移動して、オフセットを設定しますto_offset delete(offset) の文字を削除します offset アプリケーション例:データベースクエリを実行し、結果をWebサイトに表示します。その後、データベースクエリを再実行し、結果が変更されたことを発見しました。最小数のDOM操作を使用して、現在データベースにあるものと一致するようにページの内容を変更したいとします。最短の操作シーケンスが必要な理由は2つあります。まず、効率。変更されるレコードが数個しかない場合は、O(n )ではなくを実行する必要があります。O(1)O(1)\mathcal{O}(1)O(n)O(n)\mathcal{O}(n)DOM操作。高価なため。第二に、正しさ。アイテムをある位置から別の位置に移動した場合、関連付けられたDOMノードを破棄して再作成せずに、1回の操作で移動する必要があります。そうしないと、フォーカス状態、<input>要素のコンテンツなどが失われます。

3
数独を完全に指定するための手がかりの最小数?
この論文から、手がかりが16個以下で解決できるパズルは存在しないことがわかりますが、17個の手がかりから解決できるパズルが存在することを示しています。すべての有効な数独パズルを17の手掛かりで指定できますか?そうでない場合、すべての有効なパズルを完全に特定できる手掛かりの最小数はいくつですか?より正式には、17の手がかりからしか一意に解くことができない有効な数独パズル(または、それがパズルのセットになると思います)は存在しますか?もしそうなら、手掛かりの最小数はいくつですか?すべての有効な数独パズルをまたはそれ以下の手掛かりで一意に指定できますか?CCCCCCC

1
定数kが与えられた場合、ルートからリーフへのすべてのパスについて、そのノードのアリティの合計がkに等しい場合、最大のルート付きツリーを見つけますか?
例として、の場合に考えられるすべてのツリーを次に 示します。 各ノードには、アリティ(=子の数)が書き込まれます。k=3k=3k=3 これは動的プログラミングで解決できるはずですが、これには組み合わせの結果があったと思います(正確またはかなり細かい上限)。誰か知っていますか? 編集: ツリーのサイズは、ノードの数です。したがって、最大のツリーは、ノードの最大数を持つツリーになります。

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