コンピュータサイエンス

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


1
文脈依存ではない再帰言語の例はありますか?
私は、成功しないと文脈依存ではない再帰言語(決定可能)のプロトタイプ言語を探していました。たとえば、は通常の言語の原型であり、は文脈自由言語で、は文脈依存言語です。私は通常、ユニバーサルチューリングマシン(UTM)で受け入れられる言語を、再帰的に列挙可能の原型と見なしています。ただし、再帰言語についてはありません。以前はは再帰的でしたが、数値が素数であることの検証は、境界のあるチューリングマシンで実行できます。私はも持っていましたが、これも境界付きチューリングマシンで確認できることを再度確認しました。a∗a∗a^*anbnanbna^nb^nanbncnanbncna^nb^nc^n{1p|p is prime}{1p|p is prime}\{1^p | p \text { is prime}\}{12n}{12n}\{1^{2^{n}}\} 一方、私が見つけた他のオプションは、計算の出力がマシンのどこかに保存されることを要求するチューリングマシンの計算ですが、出力はそれらの言語のすべてを通常またはコンテキストにする承認された言語の一部ではありません今のところ無料。たとえば、1で表されスペースで区切られた2つの数値を合計し、結果を後置するマシン。この場合、受け入れられる言語は実際には通常のです!コンテキストフリーなるかどうか検証のように実行しようとすると、再帰的ではありません。1∗B1∗1∗B1∗1^*B1^*1nB1mB1n+m1nB1mB1n+m1^nB1^mB1^{n+m} それで、本質的に規則的かもしれない再帰言語について話すことは可能ですが、それは計算を行い、結果を一種の再帰言語として出力に入れることが条件付けられているのですか?これらは、境界のあるチューリングマシンでは実行できません。

1
共進化の「無料ランチ」は本当に無料のランチですか?
彼らの論文「Coevolutionary Free Lunches」で、David WolpertとWilliam Macreadyは、以前の論文で証明したNo Free Lunchの定理に対する一連の例外について説明しています。例外は、対戦相手による最適なプレー、または少なくとも優れたプレーを前提として、プレーヤーが予想される検索コストを最小化しようとする2プレーヤーゲームに関係します。 この場合、無料のランチは「許可」されます。これは、以前のラウンドのラウンドでどのフィットネス(つまり、目的)関数が「除外」されているかに応じて、変更を最小限に抑えるコスト関数を正確に選択したためです。つまり、対戦相手がすでにゲームについて何かを知っていて、プレーヤーの期待リターンを最小にする応答を選択すると、プレーヤーは特定のフィットネス関数を評価せずに排除できます。これがどのように機能するかを説明するために、W&Mは次のグラフを提供します。 ここに、 ⟨ グラム⟩⟨g⟩\langle g \rangle 対戦相手の動きに注意を払わない検索アルゴリズムを表します。 ⟨ グラム⟩1⟨g⟩1\langle g \rangle_{1}各移動に対する可能なすべての対戦相手の応答を考慮する検索アルゴリズムを表します。そして⟨ グラム⟩2⟨g⟩2\langle g \rangle_{2} は、各移動に対して1つの可能な対戦相手の応答のみをサンプリングする検索アルゴリズムを表します。 これは、提供される無料ランチの特徴を示しています。対戦相手から提供された情報を考慮に入れるアルゴリズムは、そうしないアルゴリズムよりも優れており、対戦相手からできるだけ多くの情報を収集するアルゴリズムは、一部のみを収集するアルゴリズムよりも優れています。W&Mは、後の対戦相手の諜報についての議論でこの点を拡大しています。彼らは、対戦相手が全知ではないが部分的な知識を持っている場合でも、プレイヤーはその部分的な知識を活用できることを示しています。完全な無知の場合、これはうまくいきません。なぜなら、敵は常にランダムな動きで応答するからです。その場合、利益はないようです: 薬剤の予想される性能は、拮抗薬の可能な応答の平均です。 これは次のようだと思います ⟨ グラム⟩⟨g⟩\langle g \rangle上記。しかし、対戦相手にある程度の知識がある場合、アルゴリズムのパフォーマンスは対戦相手のインテリジェンスによって単調に増加するように見えます。 これらすべてについて私を混乱させるのは、議論が次の些細な見方の主張に要約されるように見えることです:すべての問題ドメインにわたって、知識のある敵から学ぶのに煩わしいアルゴリズムは、そうでないアルゴリズムよりも優れています。つまり、無料のランチを断らない限り、それを手にすることができます。 対戦相手が買っているので、事実上、昼食は無料です。 それが本当なら、たとえば、プレイヤーがオラクルと協力ゲームをし、協力を拒否するゲームはすべての問題でより悪いパフォーマンスをするゲームの全範囲を想像できませんか?同じ意味で無料のランチですね。しかし、オラクルの知識がどこから来たのかについては説明していません。 これは、他のプレイヤーの知識のソースをモデル化する必要がある場合、無料ランチゾーンに戻ることを意味しますか?あるいは、「無料の昼食」という言葉が暗示するように、両方のプレーヤーが完全に無知で始めた場合でも、この種の競争的なプレーがより良い結果をもたらすという主張は本当にありますか?

1
浮動小数点数を比較する方法の違い
2つの浮動小数点数が同一であるかどうかを判断する多くのアプローチがあるようです。ここに私が見つけたいくつかの例があります: fabs(x - y) < n * FLT_EPSILON * fabs(x) または fabs(x - y) < n * FLT_EPSILON * fabs(y) fabs(x - y) < n * FLT_EPSILON * fabs(x + y) fabs(x - y) < n * FLT_EPSILON * fabs(x + y) || fabs(x - y) < FLT_MIN) fabs(x - …

3
プログラムがtrueまたはfalseを返すかどうかを判断できない
入力チューリングマシンを取得し、計算が停止した後、最終セルがかかを判断する問題を考えます。それが何か他のものを書き込んだり、停止したりしない場合、あなたはどんな答えでも与えることが許されます(しかし、あなたは停止し、すべての入力に対していくつかの答えを与える必要があります)。000111 この問題は決定不可能ですか?私の直感は、それはそうあるべきだと言いますが、停止問題の軽減を見つけることができません。停止することもしないこともあるチューリングマシンを考えると、停止した場合はで終了するようにマシンを設定できますが、非停止の場合は何も終了できないため、オラクルはだけ言うことができますこの場合、実際にマシンが停止するかどうかを知る必要はありません。000000 他の方向への減少は単純であることに注意してください。停止問題を解決できる場合は、またはで終了するTMを指定して、書き込みステップを無限ループに置き換えて、新しいTMを作成します。新しいTMが停止した場合は、「書き込む」と言い、停止しない場合は「書き込む」と言います。この答えは、TMが実際にまたはで停止する限り正しいことが保証されているため、元の問題を解決できます。000111111000111000111

3
Erathosthenesのふるいを使用した除数の総和関数
私が出会った次のような問題オンライン問題バンクから:にそこにあるの和を計算するように要求照会それぞれが の約数の和である。それが与えられている。 105 105 ~10^5~Σk = LRσ(k )∑k=LRσ(k)\sum_{k = L}^{R} \sigma(k)σ(k )σ(k)\sigma(k)kkk1 ≤ L ≤ R ≤ 5 ⋅1061≤L≤R≤5⋅1061 \leq L \leq R \leq 5\cdot 10^6 私の解決策(以下で説明)はErathosthenesのふるいに基づいています。私はそれをC ++で実装しましたが、平均で約秒で動作し、遅すぎます。この問題は少なくとも2倍速く解決できることはわかっていますが、その方法はわかりません。0.90.90.9 だからここに私の解決策があります(配列は0ベースです): M = 5 * 1e6 M = array of zeroes of size M + 1 A[1] = 1 for (k = …

1
静止整合性が構成的であるが、順次整合性が構成されていない理由
これら2つのメモリ整合性モデルの比較に問題があります。 基本的には、シーケンシャルな一貫性のために、次のような実際のコードを考えます。 int x, y; void ThreadA() { x = 20; //Write int a = y; //Read } void ThreadB() { y = 20; int b = x; } シーケンシャル一貫性の環境ではそれは不可能だためaか、bのどちらかである20ではないとa = 20、b = 20かa = 20 && b = 20。 しかし、静止時の一貫性はこの例にどのように適合し、なぜ構成的であるのでしょうか。

1
加算、減算、乗算のみを使用して*より大きい*関数を実装することは可能ですか?
すべての値は有限フィールドです。これ以上の機能を書きたいZtZtZ_t GT(x,y)={1,0,if x>y,otherwise.GT(x,y)={1,if x>y,0,otherwise.GT(x,y) = \begin{cases} 1, & \text{if } x > y, \\ 0, & \text{otherwise}. \end{cases} 加算、乗算、減算のみを使用し、除算は使用しないでください。 等式関数 EQU(x,y)={1,0,if x==y,otherwise.EQU(x,y)={1,if x==y,0,otherwise.EQU(x,y) = \begin{cases} 1, & \text{if } x == y, \\ 0, & \text{otherwise}. \end{cases} このように計算できます EQU(x,y)=1−(x−y)pEQU(x,y)=1−(x−y)pEQU(x,y) = 1 - (x-y)^p、ここで、pはオイラーの傾斜関数 です。これは、が素数であるためです。p=phi(t)=t−1p=phi(t)=t−1p=phi(t)=t-1ttt 大なり関数は同様の方法で記述できますか? より大きい関数は、準同型暗号化アプリケーションが暗号化された整数のベクトルから最大整数値を見つけるために使用されます。

2
素なセグメントの可視性の問題に対するアルゴリズム
我々は考える互いに素なセグメントと点任意のセグメントではありません。アルゴリズムを見つけて、どのセグメントがから見えるかを確認したい。セグメントから見えるがから見える点がある場合。nnnPPPO(nlogn)O(nlog⁡n)O(n \log n)PPPPPPPPP 私のアイデアは、 1つのエンドポイントがあるスイープハーフラインを使用し、ポイントを時計回りに次数で並べ替え、最も近い可視セグメント(見つけ方はわかりません)のエンドポイントから開始し、回転します一度に1つの可視セグメントと一部の可能な非可視セグメントを検出します。今のところしか考えられません。誰でもアルゴリズムを提案できますか?PPPO(n2)O(n2)O(n^2)O(nlogn)O(nlog⁡n)O(n \log n)

2
遺伝的アルゴリズムのために、局所最適状態で動けなくなるのを防ぐ方法
文法の進化を利用して遺伝的アルゴリズムをプログラミングしています。私の問題は、局所的な最適値(早期収束)に到達し、それが発生したときに何をすべきかわからないことです。突然変異率を上げることを考えています(5%がデフォルト値です)が、いつ必要かを判断する方法がわかりません。 私がすべての世代で持っているデータは、最初の列がその適合性である二次元配列です adn[i][0] ← fitness row → is the values of the Grammar column ↓ Each indiviual result 説明が必要な場合は、お問い合わせください。変更させていただきます。これは私の母国語ではなく、間違いやご不便をおかけして申し訳ありません。 リクエストに答えると、私の操作は次のとおりであり、この順序で正確に: ランダムな母集団(乱数を含む行列)を生成します 希望する結果を含む行列を生成します。これを行うために、私はさらに+ -5%のバリエーションを持ついくつかの関数を実装しました。例:fun(x)=(2 * cos(x)+ sen(x)-2X)* (0,95+ (0と0,1の間で振動する数値)、xには0からN(Nは行のサイズ)までのすべてのf(x)が含まれ、yにはまったく同じ(より多くの結果)が含まれます アルゴリズムを開始します(世代が変わり始めます すべての世代を作るアクションは次のとおりです。 突然変異:すべての染色体の乱数は任意の遺伝子で突然変異する可能性があります→adn [i] [ランダム] =乱数(これが発生する確率の5%) クロスオーバー:私はすべてのadnを他のadnと交差させます(80%はすべてのペアの突然変異の可能性です)。ペアリングのために、乱数を選び、adn [i]とadn [(i + j)mod NumADNs]に直面します。 翻訳。ワンステップの転写で作成したf(0からN)の値を含む行列を取得し、画像に文法を適用して翻訳します -fitness:取得した値を期待値と比較し、適合度を更新します。 -エリート主義:その後、私は最高の4つのADNを選択し、それをトップにします、それらは選択されます -選択:非エリート主義のadnは完全にランダムなadnに直面し、その適応度が低い(低いほうが良い)が優勢であり、悪い方が生き残る可能性があります

3
理論的な複雑さと実際の効率の違い
この疑似コードがある場合: for i=0 to n/2 do for j=0 to n/2 do ... do anything .... 反復回数は ん2/ 4ん2/4n^2/4。 このプログラムの複雑さは何ですか?それは?O (ん2)O(ん2)O(n^2) その複雑さは、どのような直感的な公式/非公式なものですか? 次に、この他の疑似コードがある場合: for i=0 to n do for j=0 to n do ... do anything .... 再び複雑さは -それは正しいですか?O (ん2)O(ん2)O(n^2) この場合、実際の効率と理論上の複雑さの間に違いはありますか?これらの1つは他よりも高速ですか?

1
アルゴリズムに関する厳密な本
私はアルゴリズムクラスを完全に楽しんだが、厳格さに欠けていると感じた。ほとんどの場合、提示されたアルゴリズムが機能する理由と、提示された時間の複雑さがなぜあるのかを直感的に理解できましたが、そのようなことを証明したいと思います。そのため、多くの一般的なアルゴリズムについて説明し、アルゴリズムの正確さと時間の複雑さを証明することに焦点を当てた本が欲しいです。何か良い推奨事項はありますか?

2
グラフの独立セットのサイズの下限?
私は最近、k-SAT問題のすべてのインスタンスについて、 メートルメートルm 条項と んんn リテラル、少なくとも次のようなリテラルの割り当てがあります m (1 −2− k)メートル(1−2−k)m(1 - 2^{-k}) 条項は満たされています。 どんなグラフでもそのような(自明ではない)下限を表示できるかどうか疑問に思っていました G = (V、E)G=(V、E)G = (V,E) サイズの独立したセットがあります SSS どこ SSS 頂点や辺の数などに関数はありますか? 最適化バージョンでは、独立した最大のサブセットを見つけようとするため、下限が狭いほど良いです。したがって、そのような下限が存在するかどうか疑問に思っていましたが、どれだけタイトにできますか?

4
ニューラルネットワークを使用した巡回セールスマン問題
Hopfield再帰型ニューラルネットワークのようなものを使用して巡回セールスマン問題を解決する上で何か新しい開発があるかどうか私は興味を持った。最近の研究が何か突破口を開いているのを見たような気がしますが、学術論文はどこにもありません。この分野での新しい、斬新な展開を知っている人はいますか?

2
プリミティブな再帰的関数等価
2つの基本的な再帰関数が与えられた場合、それらが同じ関数であるかどうかは決定可能ですか?たとえば、プリミティブな再帰的なソートアルゴリズムAとBを考えてみましょう。ソートのアルゴリズムはたくさんありますが、それらはすべて同じ関係を表しています。AとBの2つのプリミティブな再帰的な実装が与えられた場合、それらは同じ機能を表すことが証明できますか?この質問は無制限の再帰についてではなく、チューリングマシンのプロパティによって制限されないことに注意してください。 停止する2つの関数があり、有限ドメインがある場合、可能なすべての入力を試し、各関数の出力を比較できるため、それらが同じ関数であることが証明できることを知っています。私が混乱しているのは、それらが有限ではないため、自然数と言っているものを扱うときです。 これがプリミティブな再帰関数で決定できない場合、たとえば基本的な再帰関数などの弱いクラスが可能です。これは、有限状態機械や確定的プッシュダウンオートマトンなどの弱いものでも可能であることも知っています。ありがとう。

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