タグ付けされた質問 「reference-request」

特定の狭い問題に関する文献の論文を要求する質問。

1
コードグラフ与えられた場合、簡約クリークグラフの計算の複雑さはどのですか?
グラフは、長さが以上のサイクルを引き起こさない場合、弦です。クリークツリーのツリーの頂点の最大クリークされた木である。のエッジは最小のセパレーターに対応します。別個のクリークツリーの数は、コードグラフの頂点の数で指数関数的になる可能性があります。GGG444TTTGGGGGGTTT 減少クリークグラフ 、すべてのクリーク木の組合である。つまり、すべて同じ頂点とすべての可能なエッジがあります。与えられたを計算する複雑さは何ですか?Cr(G)Cr(G)C_r(G)GGGCr(G)Cr(G)C_r(G)GGG が証明なしで時間で計算できると主張するプレゼンテーションを見たことがあります。これは、クリークツリーを計算するのと同じくらい簡単であることを意味します。これを確認する、またはそれを計算するためのより遅いアルゴリズムを与えるリファレンスはありますか?Cr(G)Cr(G)C_r(G)O(m+n)O(m+n)O(m+n)GGG

3
二次元ケーキの公平な分割
私は土地の公平な分割(すなわち羨望の的でない分割、または少なくとも比例分割)の手順に興味があります。 よく研究されたケーキの分割の問題とは対照的に、土地の分割は2次元です。つまり、ユーザーの好みは水平方向と垂直方向の両方で変化する可能性があります。したがって、アルゴリズムを並列カットに限定することは現実的ではありません。 私がこれまでに見つけた唯一の参照は、2007年のKarthik IyerとMichael Huhnsです。彼らは、「これまでのところ、一般的な土地分割問題に対する建設的な(アルゴリズム的な)解決策を見つけたことはありません。すべての論文は、問題の適格バージョンに対する実存的な解決策を提供しています。」 それら自体は、一定の制限付きで、比例土地分割のO(n ^ 2)アルゴリズムを証明します(たとえば、n人のエージェントはそれぞれ、ユーティリティ1 / nでn個の長方形領域をマークする必要があり、長方形があまりオーバーラップしない場合、アルゴリズム各エージェントが長方形の1つを取得することを保証します)。 この問題に関する新しいリファレンスを知っていますか?私は特に実用的なアルゴリズムに興味があり、それらはおおよその可能性があります。


7
公開された研究論文はどこにありますか?
コンピュータサイエンスの博士号を取得しようと考えている人の視点から来ています。 博士課程に行くときに何に焦点を当てるかを決めるのに苦労しています。academia.SEに関するこの質問も参照してください。 だから私は、どのような研究が行われていて、どの研究論文が発表されているかを読んで最新に保つことは、....インスピレーションの良い情報源だと思いますか?プラス知っている良い知識。 最近公開されたCSの研究論文を見るには、中央の場所/データベース/良い出発点がありますか、それともすべて、作成された大学のWebサイトの奥深くに隠れていますか?

2
高速k不一致文字列マッチングアルゴリズム
高速なk不一致文字列マッチングアルゴリズムを探しています。長さmのパターン文字列Pと長さnのテキスト文字列Tが与えられた場合、Pが最大でk個の不一致を持つTの部分文字列と一致するすべての位置を見つけるための高速(線形時間)アルゴリズムが必要です。これは、k差問題(編集距離)とは異なります。不一致は、部分文字列とパターンの最大k個の位置に異なる文字があることを意味します。本当に必要なのはk = 1(最大で1つの不一致)だけなので、k = 1の特定のケースに対する高速アルゴリズムでも十分です。アルファベットのサイズは26(大文字と小文字を区別しない英語のテキスト)であるため、スペースの要件はアルファベットのサイズに比例して大きくなりすぎないようにする必要があります(たとえば、FAASTアルゴリズムは、アルファベットのサイズで指数関数的にスペースを取るなど)。タンパク質および遺伝子配列にのみ適しています)。 ダイナミックプログラミングベースのアプローチは、最悪の場合O(mn)になる傾向があり、遅くなります。私はこのためのボイヤー・ムーアアルゴリズムの変更があると信じていますが、私はそのような論文を手に入れることができません。私は学術雑誌や出版物にアクセスするためのサブスクリプションを持っていないので、すべての参照はパブリックドメインにある必要があります。 私は、ポインタ、または自由に入手できるドキュメントへの参照、またはこの問題のアルゴリズム自体に大いに感謝します。

1
特定の文字列が文字列のコレクションとどの程度類似しているかを判断する
この質問がここにあるかどうかはわかりませんが、そうでない場合はお詫びします。私がやろうとしていることは、与えられた文字列が文字列のバッグに「属する」かどうかを確率論的に決定できるプログラム的な方法を開発することです。たとえば、10,000の米国の都市名のバッグがあり、「フィラデルフィア」という文字列がある場合、「フィラデルフィア」がすでに知っている米国の都市名に基づいて、米国の都市名である可能性を定量的に測定したいと思います。このコンテキストでは、実際の都市名と偽の都市名を区別できないことはわかっていますが、少なくとも、「123.75」や「速い赤狐が怠惰な茶色の犬を飛び越えた」などの文字列は除外されます。いくつかのしきい値。 開始するには、レーベンシュタイン距離を見て、それが少なくとも私が解決しようとしている問題と多少似ている問題にどのように適用されるかについて少し考えました。私が見つけた興味深いアプリケーションの1つは、盗作の検出でした。1つの論文では、変更されたSmith-WatermanアルゴリズムでLevenshtein距離がどのように使用され、特定のベースペーパーの盗聴されたバージョンである可能性に基づいて論文をスコア付けしました。私の質問は、誰かが私を助けるかもしれない他の確立されたアルゴリズムまたは方法論で私を正しい方向に向けることができるかどうかです。これは過去の誰かが解決しようとした問題かもしれないという感じがしますが、これまでのところ、Google-fuは失敗しました。


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のいわゆる「一時停止後方ロングジャンプ」などのように、プレスを押すのが最適な場合があるためです。ここでは、脳はより複雑なパターンを学習する必要があります。「スタートを押しても、プレーヤーがこの非常に特殊な状態にあり、ボタンを押しながらいくつかの組み合わせを続ける場合を除き、役に立たない」 変更にもっと適した他の方法で入力を表現する(またはマシンが学習できる)ようです。フレームごとの入力は細かく見えます。本当に必要なのは「アクション」であり、これは複数のフレームにまたがる場合があります...しかし、多くの発見はフレームごとに行われるため、完全に除外することはできません(前述の一時停止後方ロングジャンプには、フレームレベルの精度が必要です)。また、入力がシリアルに処理されるということは、活用できるものでなければならないようですが、方法はわかりません。 現在、私は(リアクティブ)タブー検索、超大規模近傍検索、教育学習ベースの最適化、およびアリコロニー最適化について読んでいます。 この問題は、ランダムな遺伝的アルゴリズム以外のものに取り組むのが難しいほど単純ですか?それとも実際にずっと前に解決された些細な問題ですか?読んでくれてありがとう。返事を送ってくれてありがとう。

2
依存して型付けされたエリミネーターを導出する方法は?
依存型プログラミングでは、データを分解して再帰を実行する主な方法が2つあります。 依存パターンマッチング:関数定義は複数の句として指定されます。統一により、すべての省略されたケースが不可能であることが保証され、外部ソルバーが再帰の根拠を確実にします。 エリミネーター:各帰納的データ型は、帰納原理として、および型値を分解する再帰関数として機能する、関連する定数があります。これらはより冗長ですが、合計であり(すべてのケースはカバーされ)、構造によって終了するという利点があります。DDDEDEDE_DDDDEDEDE_D エリミネーターが基本的に数学的帰納であるなどの一般的なデータ型のエリミネーターや、エリミネーターが基本的にフォールドであるを見てきました。NatNatNatListListList 私は依存パターンマッチングに関するいくつかの論文を読んでおり、その多くはデータ型を定義できる型理論に言及しており、エリミネーターは理論によって提供されます。たとえば、依存パターンマッチングの除去では、UTTがエリミネーターに基づいている方法と、公理存在下でパターンマッチングを除去に変換する方法について説明しています。私の理解では、データ型が定義されると、理論はエリミネーターを提供します。KKK 私が見つけていない(または、少なくとも見た場合に認識されていない)ことは、エリミネーター(タイプとセマンティクスの両方)をどのようにして導き出すことができるかについての良い説明です。 誰かが、データ型の定義からエリミネーターを取得する方法を説明する参照を私に指摘できますか?

4
アルゴリズムの自動ランタイム分析の方法はありますか?
私は疑問に思っています、少なくともアルゴリズムの関連するサブセット(分析可能なアルゴリズム)で機能する自動ランタイム分析の方法はありますか? 私は私に与えた「自動アルゴリズム分析」ググこれを、それはあまりにもMathyさんです。私が理解できるpsuedocodeの簡単な例が欲しいだけです。具体的すぎるかもしれませんが、一見の価値があると思いました。

2
FSA文法間の「類似性」を測定する方法は?
私は、特定のテキスト文字列とそのすべての部分文字列を受け入れる非循環有限状態オートマトンを生成するパターンマッチングアルゴリズムを使用しています。FSAアルゴリズムは、音楽ストリーム(MIDIデータなど)の記号表現で実行されています。音楽ストリームは、各曲をラベルのない「セグメント」に分割するように前処理されています。AN FSAは、各楽曲の各セグメントに対して生成される:私が持っている場合曲は、各々 、に分割YセグメントIがありますN ⋅ Y別個のFSAを。nnnyyyn⋅yn⋅yn \cdot y 各セグメントのFSAをコーパス内の他のFSAと比較したいと思います。最終的な目標は、類似性空間内でクラスタリングを実行し、それらの構築メトリックがどの程度類似しているかに従ってセグメントの「クラス」を生み出すことです。したがって、特に興味深いのは、各FSAが定義する文法です(セグメント内の音楽コンテンツのほぼ特定のコンポーネントに対応)。このようなものを比較するのに良いかもしれないテクニックはありますか?KLダイバージェンスが頭に浮かびます(たとえば、それを使用して、特定のFSAに関連付けられた文字列の分布を比較します)。ただし、より良い/より効率的な手法があるかもしれません。 また、この質問が(1)ささいなほど簡単であるか、(2)より深い誤解を示しているか、(3)他の場所で回答されているかについてもお詫びします。私は本当のナブです、皆さん!

3
プログラム分析の開始
プログラム分析を始めるためのリソースを探しています。 私がこのトピックについて見つけた唯一の本は、ニールソンとニールソンの本です。 それ以外には、「プログラム分析」が章か何かに沿った「コンパイラ」本だけがあるようです。 人々は他のリソースを知っていますか?


3
数学/ CS記法の辞書を探しています
数学やCSの論文では、時々目まいがする記号の配列が使用されています。しかし、多くの人は、1か所ではめったに教えられないような基本的な知識を前提としています。特にCSの観点から、次のような辞書を探しています。 すべての基本的な数学記号をリストし、それらの意味と例を示します。同等の方法で時々使用されるシンボルについて話します。初心者のよくある間違いに気づくでしょう。 それは、単一の記号の異なる意味を取り巻く微妙さについて話します(辞書の同じ単語の複数の定義のように)。 これは、「サブセット」のような1つの単語の説明など、各シンボルの非常に簡潔な説明ではありません。 シンボルが時々「オーバーロード」される方法を示します。たとえば、はを整数として持つことができますが、がこの表記のセットになることもあり、このセットから要素を選択することを意味します。は、整数のセット1 \ ldots nを意味することもあれば、1要素の配列を意味することもあります。( xy)(バツy)\binom{x}{y}zzzzzz[ n ][ん][n]1 … n1…ん1 \ldots n さまざまな種類の「オブジェクト」をさまざまなシンボルまたはそれらを参照する同等の方法(ただしより明確)で記述する方法と、それらのオブジェクトで可能な操作について説明する場合があります。つまり、数学オブジェクトのAPIのようなものです。 すなわち、それは時々、数学的記述をどのように提示するかについてのさまざまなニュアンスの「スタイルマニュアル」になることもあります。これは、数学のスタック交換で質問を書く人にとって非常に役立つリソースです。ここで、多くの質問は、トリッキーな数学の慣習に適合しないことに基づいて意味をなさないものです。 いくつかの本の紹介には、これらの機能の多くがあります。しかし、理想的にはそれは別の治療になるでしょう。また、理想的にはもちろんそれはオンラインであるでしょう。ラテックスシンボルの表がありますが、実際には上記の基準の多くを満たしていません。 これらの機能に一致する「シンボルの辞書」を見た人はいますか? (または、このような適切な参照が存在しない場合、優れたwikiまたはFAQプロジェクトのように見えます。)

1
グラフに自明ではない自己同型があるかどうかを判断するための効率的なアルゴリズムはありますか?
私はラテン方格に関連する問題に取り組んでおり、本質的に決定問題に帰着する方法を求めています。 入力:有限の単純なグラフG。 出力:YESGが自明でない自己同型を持つNO場合、それ以外の場合。 したがって... 質問:グラフに自明でない自己同型があるかどうかを判断するための効率的なアルゴリズムはありますか? NautyまたはBliss(およびおそらく他のいくつかのパッケージ)を使用して、自己同型グループ全体を計算できますが、私はそれを必要としません。私が判断する必要があるのは、それが取るに​​足らないことかどうかです。 この決定問題は、理論的には「自己同型グループ全体を計算する」ことと理論的には同じくらい複雑である可能性があります。よく分かりません。 私の目的では、「効率的」とは基本的に「自己同型群全体を計算するよりも実際に速い」ことを意味しますが、その背後にある理論にも興味があります。

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