コンピュータサイエンス

コンピュータサイエンスの学生、研究者、実務家のためのQ&A

1
2つの順序付け制約を同時に満たす最大長の部分列を見つける
我々は、セット与えられるの果実を。各フルーツには価格とビタミン含有量ます。果物を順序付けられたペアに関連付けました。次に、ソートされたリストに価格が昇順で、ビタミン含有量が降順で含まれるように、これらの果物を配置する必要があります。F={f1,f2,f3,…,fN}F={f1,f2,f3,…,fN}F=\{f_1, f_2, f_3, …, f_N\}NNNPiPiP_iViViV_ififif_i(Pi,Vi)(Pi,Vi)(P_i, V_i) 例1:および。N=4N=4N = 4F={(2,8),(5,11),(7,9),(10,2)}F={(2,8),(5,11),(7,9),(10,2)}F = \{(2, 8), (5, 11), (7, 9), (10, 2)\} すべての価格が昇順で、ビタミン含有量が降順であるようにリストを配置すると、有効なリストは次のようになります。 [(2,8)][(2,8)][(2, 8)] [(5,11)][(5,11)][(5, 11)] [(7,9)][(7,9)][(7, 9)] [(10,2)][(10,2)][(10, 2)] [(2,8),(10,2)][(2,8),(10,2)][(2, 8), (10, 2)] [(5,11),(7,9)][(5,11),(7,9)][(5, 11), (7, 9)] [(5,11),(10,2)][(5,11),(10,2)][(5, 11), (10, 2)] [(7,9),(10,2)][(7,9),(10,2)][(7, 9), (10, 2)] [(5,11),(7,9),(10,2)][(5,11),(7,9),(10,2)][(5, 11), (7, 9), (10, 2)] 上記のリストから、最大サイズのリストを選択したいと思います。複数のリストに最大サイズがある場合、価格の合計が最小となる最大サイズのリストを選択する必要があります。上記の例で選択する必要があるリストは、です。{(5,11),(7,9),(10,2)}{(5,11),(7,9),(10,2)}\{(5, …

3
TSPのこのロジスティックバリアントの名前は何ですか?
変種とロジスティックの問題があり。それはとても自然なことです、私はそれがオペレーションズリサーチまたは類似の何かで研究されたと確信しています。これは問題を見る1つの方法です。TSPTSP\text{TSP} 私が持っているデカルト平面上の倉庫を。倉庫から他のすべての倉庫へのパスがあり、使用される距離メトリックはユークリッド距離です。さらに、異なるアイテムがあります。各アイテムは、任意の数の倉庫に存在できます。コレクターがあり、原点開始点が与えられます。コレクターには注文が与えられるため、アイテムのリストです。ここでは、リストに個別のアイテムとそれぞれ1つだけが含まれていると想定できます。注文のすべてのアイテムを受け取るために、いくつかの倉庫を訪問するから始まる最短のツアーを決定する必要があります。PPPんんn1 ≤ I ≤n1≤私≤ん1 \leq i \leq nsss(0,0)(0、0)(0,0)sss でランダムに生成されたインスタンスの視覚化を以下に示します。倉庫は円で表されます。赤はアイテム、青はアイテム、緑はアイテムです。いくつかの開始点と注文()が与えられた場合、注文を完了するには、赤、青、緑の倉庫をそれぞれ1つ選択する必要があります。偶然にも、この例には複数の色の倉庫がないため、すべて1つのアイテムしか含まれていません。この特定のインスタンスは、set-TSPの場合です。P=35P=35P = 35111222333sss1,2,31,2,31,2,3 問題が確かにことを示すことができます。各アイテムが異なる倉庫ある場合を考えます。注文には、すべてのアイテムが含まれています。次に、すべての倉庫を訪問し、そうする最短のツアーを見つける必要があります。これはインスタンスを解決することと同じです。NPNP\mathcal{NP}iiiPiPiP_iPiPiP_iTSPTSP\text{TSP} 少なくともロジスティクス、ルーティング、および計画のコンテキストでは非常に有用であるため、これは以前に検討されたはずです。2つの質問があります。 問題の名前は何ですか? 問題を近似することをどれだけうまく期待できますか(仮定して)?P≠NPP≠NP\mathcal{P} \neq \mathcal{NP} 問題の名前や参照に非常に満足しています。たぶん、2番目のポイントへの答えは簡単に続くか、自分でそれを見つけることができます。


2
合計でのオーバーフローの検出
私はの配列を指定していたとの固定幅の整数を(彼らは幅のレジスタに収まるすなわち)、。2の補数演算を備えたマシンで合計を計算します。これは、ラップアラウンドセマンティクスでを法とする加算を実行します。それは簡単ですが、合計がレジスタサイズをオーバーフローする可能性があり、オーバーフローすると、結果が不正になります。nnnwwwa1,a2,…ana1,a2,…ana_1, a_2, \dots a_nS=a1+…+anS=a1+…+anS = a_1 + \ldots + a_n2w2w2^w 合計がオーバーフローしない場合は、それを計算し、オーバーフローがないことをできるだけ早く確認したいと考えています。合計がオーバーフローした場合、それがオーバーフローしていることだけを知りたいので、値は気にしません。 部分的な合計がオーバーフローする可能性があるため、単純に順番に数値を追加することはできません。たとえば、8ビットレジスタでは、は有効であり、合計がですが、部分合計がレジスタ範囲オーバーフローします。(120,120,−115)(120,120,−115)(120, 120, -115)125125125120+120120+120120+120[−128,127][−128,127][-128,127] 明らかに、より大きなレジスタをアキュムレータとして使用することもできますが、可能な限り最大のレジスタサイズをすでに使用している興味深いケースを想定してみましょう。 現在の部分合計とは逆の符号を持つ数値を追加するよく知られた手法があります。この手法は、キャッシュに優しくなく、分岐予測や投機的実行をあまり活用しないという犠牲を払って、すべてのステップでオーバーフローを回避します。 おそらく部分合計をオーバーフローする権限を利用し、オーバーフローフラグ、キャッシュ、分岐予測子、および投機的実行とロードを備えた一般的なマシンでより高速な手法はありますか? (これは、オーバーフローの安全な合計のフォローアップです)

1
ラムダ計算の評価
私はこれが簡単な質問であることを知っていますが、誰かが私にその方法を示すことができます (λ Y。λ X 。λ yの。y)(λ X 。λ Y。y)(λy。λバツ。λy。y)(λバツ。λy。y)(\lambda y. \lambda x. \lambda y.y) (\lambda x. \lambda y. y) に減少する λ X 。λ yの。yλバツ。λy。y\lambda x. \lambda y. y。

1
min-heap automataが受け入れる言語の補完の下での閉鎖の証明
これは、のフォローアップの質問です、この1。 エキゾチックなステートマシンに関する以前の質問で、アレックステンブリンクとラファエルは、特殊な種類のステートマシン、つまり最小ヒープオートマトンの計算機能について説明しました。彼らは、そのようなマシン()が受け入れる言語のセットが、文脈自由言語のセットのサブセットでもスーパーセットでもないことを示すことができました。その問題の解決に成功し、その問題に明らかに関心があることを踏まえて、私はいくつかのフォローアップの質問を続けます。HALHALHAL 通常の言語はさまざまな操作の下で閉じられることが知られています(ユニオン、インターセクション、補数、差分、連結、クリーネスター、反転などの基本的な操作に制限される場合があります)。プロパティ(これらは、結合、連結、クリーネスター、および反転の下で閉じられます)。 HALは補完の下で閉鎖されていますか?

4
アルゴリズムについて詳しく学ぶには
私はこのサイトを非常に興味を持って読んでいますが、多くのことが頭に浮かんでいます。これにより、アルゴリズムとCS全般についてもっと学びたいと思っています。私の研究からわかる限り、これを行うには主に2つの方法があります。 厚くて重い本で、ゆっくりと確実に読み進めることができます。 私は「実践して学ぶ」ことができ、すばらしい本を読むことができますが、一冊一冊読むのではなく、興味のある部分に移動して、好きなアルゴリズムの実装と適用に取り組みます。 ? 私の質問は、あなたは上記のどれを使用しましたか、そしてあなたは誰かに同じアプローチを勧めますか?

1
ミニマックスツリーの最小値は何に使用されますか?
敵対的な検索問題のためにミニマックスツリーを検討してください。たとえば、次の図では(アルファベータ剪定): 木をマークするとき [min,max][min,max][\min,\max]値がボトムアップの場合、最初にノード333をトラバースし、B. \ max = 3を割り当てますB.max=3B.max=3B.\max = 3。次に、121212と888をこの順序でトラバースします。これにより、B.max=3B.max=3B.max = 3ます。 しかし、なぜB.min=3B.min=3B.\min = 3でしょうか。その値の用途は何ですか?

2
スタック検査の制限
これは、スタック検査の仕組みのフォローアップです。概念をより詳細に探索します スタック検査は、外部からダウンロードされた信頼レベルの異なるコードモジュールが一緒に実行されている可能性がある場合に、JVMおよびCLR仮想マシンのコンテキストでセキュリティを確保するためのメカニズムです。そのシステムライブラリには、信頼されていないコードからの呼び出しと、信頼されたアプリケーション自体からの呼び出しを区別する方法が必要です。これは、その起源に対応するプリンシパルをコードに関連付けることによって行われます。次に、アクセス許可がスタックに記録され、機密のシステムメソッドへの呼び出しが行われるたびに、スタックがトラバースされ、呼び出しを行うプリンシパルに適切なアクセス許可がスタックに存在するかどうかが確認されます。 スタック検査の制限は何ですか?それを置き換えるためにどのようなメカニズムが提案されていますか?90年代後半に導入されてから、モデルに大きな変更が加えられましたか?

4
研究主張の正確さを評価するために、統計はどのようにコンピューターサイエンスに適用されていますか?
私の短い学術生活の中で、私たちの地域で発表された多くの論文は統計に関してそれほど厳密ではないことがあります。これは単なる仮定ではありません。教授が同じことを言うのを聞いたことがあります。 たとえば、CSの分野では、方法論Xが効果的であることが観察され、ANOVAとANCOVAによって証明されたと主張する論文が発表されていますが、必要な制約が観察されたと評価している他の研究者への言及はありません。「複雑な関数と名前」が表示されるとすぐにそれはやや感じますが、それは、研究者が信頼できる方法とアプローチを使用していることを示しています。 、たとえば、コミュニティが評価できるように、その特定の分布またはアプローチについて。 場合によっては、このような小さいサンプルサイズで仮説を正当化するための言い訳があります。 したがって、ここでの私の質問は、統計学についてもっと学びたいという志を持つCS分野の学生として提起されています。コンピュータ科学者はどのように統計学に取り組みますか? この質問は、私がすでに説明したことを尋ねているように見えるかもしれませんが、それは私の意見です。私は間違っているかもしれないし、実践者のグループに焦点を当てているかもしれないが、CS研究者の他のグループは統計の厳密さに関してより良い実践に従う別のことをしているかもしれない。 具体的には、私が欲しいのは、「与えられた事実(論文の例、本、またはこれに関する別のディスカッション記事で結構です)のために、私たちの領域は統計に含まれているかどうかです。」です。@パトリックの答えはこれに近いです。

1
注文を照合する最も効率的な方法
2つの2Dアレイを考えます B私はjB私jB_{ij} (購入配列)および S私はjS私jS_{ij} (sell array)それぞれ 私トンの時間私thi^{th} elementは浮動小数点値の配列に関連付けられ、各浮動小数点値は整数の配列に関連付けられます。 例えば B = [ 0001 => [ 32.5 => {10, 15, 20}, 45.2 => {48, 16, 19}, ..., k1 ], 0002 => [ 35.6 => {17, 35, 89}, 68.7 => {18, 43, 74}, ..., k2 ] ] 同様に、sell配列についても同様です。 これは、株式/商品取引所の注文関連付けシステムに似ています。 BuyOrderBook = [ …

1
スパイクニューラルネットワークと初期世代のANNの本質的な違い
私はさまざまな論文、主にマース(1997)からスパイキングニューラルネットワークをオンラインで研究しています。レートコードと見なされている以前のANNとは対照的に、SNNのパルスコードが何であるかを完全に理解しているわけではありません。私は神経科学のバックグラウンドを持っているので、用語と比率を理解しています。実際の実装について質問しています。 各ニューロンがSNNの現在の状態を更新するとき、それはすべてのシナプス前ニューロンの履歴全体を扱い、最後のステップだけではないという事実の実際的な違いはありますか?それは、前世代のANNに欠けている時間的特性を与えるものですか?


1
サブセット合計、疑似多項式時間動的プログラミングソリューション?
しばらく前にP対NPの問題を発見し、最近サブセットサム問題に取り組みました。サブセット和問題に関するWikipediaの記事と、サブセット和アルゴリズムの質問を読みました 私は問題を見ていくつかの解決策を見つけましたが、今のところそれらはNPのようですが、NP時間で十分に高速なアルゴリズムを作成できると思います。 私の問題は理論的には私が上手ではないので、クック・レビンの定理や非決定論的チューリングマシンについて話すことはあまり役に立ちません。 ウィキペディアにある疑似多項式の時間動的プログラミングのサブセットの合計について説明します。 私はそれを読みましたが、なぜPではなくNPであるかという一般的な概念は理解しています(それを使用した操作ではなく入力のサイズに関連しています)が、アルゴリズムは理解していません。 誰かがいくつかの数字とそれがどのように機能するかを例に挙げていただければ幸いです。それは次のようになるので、それは私に多くの助けになるでしょう: 将来のアルゴリズムを改善するためのアイデアを教えてください アルゴリズムがNPではなく疑似多項式である場合、直感的に理解できるようにしてください。

3
Cスタイルの/ ** /コメントの正規表現の導出
私はCスタイル言語のパーサーに取り組んでおり、そのパーサーにはCスタイルの/ ** /コメントに一致する正規表現が必要です。今、私はこの表現をウェブ上で見つけました: /\*([^\*]*\*+[^\*/])*([^\*]*\*+|[^\*]*\*/ しかし、ご覧のとおり、これはやや乱雑な表現であり、実際に一致させたいかどうかが正確に一致するかどうかはわかりません。 それらが本当に正しいことを手動で簡単に確認でき、その後上記の正規表現に変換可能(「コンパイル可能」)な正規表現を(厳密に)定義する別の方法はありますか?

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