コンピュータサイエンス

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

2
BNFが言語を記述するための不十分な手法と見なされるのはなぜですか?
私は先日、C。Stracheyによる論文「プログラミング言語の基本概念」を読んでいました。その中で、私には非常に奇妙なものを読んでいました。直接引用する(奇妙な部分を強調表示した): 今日存在するような、特定のクラスの文法(BNFまたはコンテキストフリーとして知られている)を記述する一般に知られている方法がある状況に直面すると、これらの数学者の最初の本能はBNFの限界を調査することです —面倒で人工的な構造を犠牲にしても、BNFで表現できますか?これはいくつかの数学的な関心の問題かもしれませんが(意味が何であれ)、BNFよりも構文を記述するより良い方法を発見することが重要であるプログラミング言語との関連性はほとんどありません(これはすでにALGOLには不便で不十分です)。それは、私たちがすでに不十分な技術であるとわかっていることの可能な限界を調べることです。 著者がBNFを言語を記述するための不十分な手法であると考える特定の理由はありますか?単一のBNF文法では構文しか記述できず、セマンティクスは記述できないためでしょうか(ただし、属性文法に変換することで、操作セマンティクスを記述するように拡張できます)。

2
平面制約問題を解くためのアルゴリズム(「Pokemon Goモンスターの発見」)
[注:この問題はPokemon Goに触発されました。最初に問題を数学的な用語で説明し、次にポケモンゴーとの関連を説明します。私の目標は、ゲームでごまかすことではありません。私がカンニングしたいのであれば、より良い情報をより簡単に入手できます。] あると仮定NNN点(「未知点」)が平面で、それらを呼び出すn1,…,nNn1,…,nNn_1,\dots,n_N、未知の座標。さらに、既知の場所で測定が行われています。m 1、… 、m MMMMm1,…,mMm1,…,mMm_1,\dots,m_M ましょう測定点から(一般に未知)のユークリッド距離で未知点に。m i n jdist(mi,nj)dist(mi,nj)\text{dist}(m_i, n_j)mimim_injnjn_j 各測定について、次の情報があります。mimim_i 各未知点の正確な座標ためいくつかの既知の定数のためのD 分。そして dist (m i、n j)&lt; d minnjnjn_jdist(mi,nj)&lt;dmindist(mi,nj)&lt;dmin\text{dist}(m_i, n_j)d_\text{min}dist(mi,nj)dist(mi,nj)\text{dist}(m_i, n_j) 未知の点、または与えられた未知の点が可能な平面の領域を計算するための効率的なアルゴリズムはありますか?アルゴリズムには、測定点の座標(X i、Y i)、上記の測定情報、および未知の点の数Nが与えられます。目標は、未知の各ポイントn 1、… 、n Nの可能な場所の領域をできるだけ絞り込むことです。njnjn_j(Xi,Yi)(Xi,Yi)(X_i,Y_i)NNNn1,…,nNn1,…,nNn_1,\dots,n_N ポケモン接続: 拡張現実ゲーム、ポケモンゴーの目標は、自然の中でポケモンを見つけることです。時々、ゲームはポケモンをプレーヤーの位置の「可視範囲」()で表示します。さらに、近くにある(d i s t &lt; d m a x)ポケモンのリストを距離でソートして表示する「ポケモンファインダー」があります。(おおよその距離を1、2、または3つの足跡として表示することも想定されていますが、明らかにバグがあり、常に3つの足跡が表示されます。)dmindmind_{min}dist&lt;dmaxdist&lt;dmaxdist<d_{max}

3
fib(n + 2)の上限
これは数学的に解く必要はないと言われていましたが、数学は私がやったことを超えているので、私は困惑している宿題の問題を抱えています。ちょうど上限を提供し、それを正当化します。 してみましょう fのf(n)=|{w∈{a,b}n:aa∉w}|.f(n)=|{w∈{a,b}n:aa∉w}|.f(n) = |\{w ∈ \{a, b\}^n : aa \notin w \}|. 漸近上限をます。fffn→∞n→∞n\to\infty これまでのところ: n123456strings23581321compared to 2n2n−02n−12n−32n−82n−182n−43nstringscompared to 2n122n−0232n−1352n−3482n−85132n−186212n−43 \begin{array}{c|c|c} n & \text{strings} & \text{compared to } 2^n \\\hline 1 & 2 & 2^n - 0 \\ 2 & 3 & 2^n - 1 \\ 3 & 5 & …

1
途中が1の奇数長の単語に対してDFAを構築することは可能ですか?
L:={w∈{0,1}∗|L:={w∈{0,1}∗|L := \{w \in \{0,1\}^* | の長さは奇数です 1はの中央にありますwww∧∧ \wedge w}w}w\} したがって、アルファベットはです。私の問題は、1と前後の文字の等価性を追跡できないことです。長さが6未満の限定DFA:{0,1}∗{0,1}∗\{0,1\}^*111 どのようにして長さの単語を受け入れるように拡張できますか?出来ますか? 私はそれにサイクルを入れてみましたが、すでに述べたように、後の文字数が前の文字数と同じになるように追跡することはできません。つまり、常に真ん中にある1。111

1
MP3エンコーダーが心理音響モデルを適用する前に高速フーリエ変換を使用するのはなぜですか?
Karlheinz Brandenburgは、次のようなMP3エンコーダーを示しています。 出典:MP3およびAACの説明 FFTを実行する必要がある理由がよくわからないので、FFTにマークを付けました。FFTを実行せずに修正離散コサイン変換(MDCT)を実行した後、心理音響モデルをいわゆるラインに適用できないのはなぜですか? 周波数分解能が十分に正確ではないと言って、ここにいくつかの文献があります。これは、元の信号を(フィルターバンクやMDCTのように)576ラインに分割することは、心理音響モデルが適切に機能するのに十分正確ではないことを意味しますか?FFTはより正確ですか?

1
Church-Turingと物理PDE
Church-Turingの論文について読んだとき、「物理的現実はチューリング計算可能である」という一般的な主張のようです。この主張の根拠は何ですか?これらの線に沿って理論的な結果はありますか? コンテキストについては、私は物理シミュレーションに取り組んでいる研究者なので、自然界で発生するであろう多くの偏微分方程式(PDE)(たとえば、熱方程式、波動方程式など)は数値的方法で近似できることを認識しています有限要素のように、そして多くのPDEに対して、十分な計算(空間と時間のステップサイズを減らすことにより)を与えれば、解は任意の精度で推定できます。 ただし、有限要素法の収束を証明することは、かなり複雑なPDE(石鹸膜の形状を表す平均曲率フローのような「簡単な」PDEであっても)にとって非常に難しいことで有名です。オイラーの円板や非弾性崩壊など、物理システムで実際に多くの「ゼノタイプ」の状況が発生することも知っています。すべての PDE、または少なくとも自然界で発生するすべての PDE のソリューションがチューリング計算可能であると信じる理由はありますか?

1
タイプの概念の起源
私がタイプ理論より先に進んでいる最先端技術について、これらの質問はすべてタイプの歴史に関連しています。 タイプのアイデアはどこから来たのですか?(ラッセルとホワイトヘッドが今日ラッセルのパラドックスとして知っている矛盾を回避する方法を提案するとき、すべてが始まるようです、私は正しいですか?) タイプの概念を検討する前に、似たようなものはありましたか?(たぶんセットの改良版ですが、ラッセルの明確な参照は見つかりません)。 最初に正式な条件にしたのは誰ですか?(ラッセルはこの1908年の論文を書いたのか、それとも?

3
割り切れないペアごとの最大サブセット
数値のセットがあり、その要素の任意の2つの要素の合計が整数割り切れないように最大サブセットを計算したいと考えています。この問題を解決しようとしましたが、効率的な応答ではない2次の解を見つけました。。ここで、は要素の数、は定数です。二次解より良いですか?K &lt; 100 、N &lt; 10000 N KKKK K&lt;100,N&lt;10000K&lt;100,N&lt;10000K < 100, N < 10000NNNKKK

4
コンパイラーを作成してプログラミング言語を作成しますか?
たとえば、自分でプログラミング言語を作成したいと考えました。見た目と動作をどのように決定するかをすべて決定したと仮定すると、そのためのコンパイラーを作成するだけでよいですか? たとえば、高レベルのJavaコードはテキスト以外の何かであり、このテキストは、コンパイラがそれを受け入れて別の何かに変換するための正しい形式になっていますか? 私の質問は、プログラミング言語の作成はコンパイラを介して行われるのですか?ハイレベルで結構です。

1
証明!完全に時間構成可能です
私達はちょうど先週、クラスで私たちの「タイム・施工」レッスンを終え、我々は、例えばのために、ことが示されたのためというマシンをチューリング(マルチテープ決定論)が存在する、すなわち、完全にタイム構築可能です与えられました、正確にステップ後に停止し、その証明できるかどうかを尋ねるだけ完全に時間構成可能です(そして次に進みます)。んk、 2んんk、2んn^k, 2^nんんnf(n )f(ん)f(n)n !ん!n! 証明がどのように行われるかはわかりませんが、はを使用して(完全に)時間構成可能であることを示したため、ある程度時間構成可能性、または階乗を含むアイデンティティを使用する必要があると考えています。んkんkn^kんkんkn^kんk= n + ∑i = k − 1i = 1(n − 1 )n私んk=ん+Σ私=1私=k−1(ん−1)ん私n^k = n + \sum_{i=1}^{i=k-1}(n - 1)n^i ヒントも本当にありがたいです。前もって感謝します。

3
一次論理と一次理論の関係は何ですか?
FOTはFOLのサブセットであると思いましたが、FOLは完全であり(すべての数式が有効または無効)、一部のFOT(線形整数演算など)は完全ではないため、そうではないようです。 では、FOLはどのFOTよりも表現力が高いのでしょうか?または比類のないですか? また、「LIAで有効であるがLIAの公理を使用して証明できないステートメントがある」というステートメントは奇妙です。妥当性を証明できない場合、ステートメントはどのように有効ですか?発言の有効性を証明できない場合、それが有効であると主張することはできないといつも思っていました。

1
「マップ挿入ソート」が「マップマージソート」と等しくないのはなぜですか?
中型理論ポッドキャストEP。3、Dan Licataは、すべての入力について、insertionsortとmergesortが同じ結果を与えるという事実は、3番目の関数への引数として高次関数として使用された場合、結果が等しいことを意味しない、つまりmap insertionsort、等しい必要がないと主張しmap mergesortます。 彼はこれを「関数、挿入ソートとマージソートが等しいので、あなたは知らないので」と説明していますが、それでもまだわかりません。 これはなぜですか?反例は素晴らしいでしょう!

1
メディアントを使用したブラケット検索の複雑さは何ですか?
Rekoデコンパイラー用に作成したアルゴリズムの複雑さを推定しようとしています。ここで、コンパイラーが定数による整数除算に行った変換を「取り消す」ようにしています。コンパイラーは除算を整数の乗算とシフトに変換しました:、ここではコンピューターのマシンワードのビット数です。結果の定数乗算は、ほとんどの現代的なアーキテクチャでの除算よりもはるかに高速ですが、元のコードに似ていません。(X * ⌊ 2 β / N ⌋ )&gt; &gt; β βx/nx/nx / n(x∗⌊2β/n⌋)&gt;&gt;β(x∗⌊2β/n⌋)&gt;&gt;β(x * \lfloor 2^\beta / n \rfloor) >> \betaββ\beta 説明するには:Cステートメント y = x / 10; Microsoft Visual C ++コンパイラによって、次のアセンブリ言語にコンパイルされます mov edx,1999999Ah ; load 1/10 * 2^32 imul eax ; edx:eax = dividend / 10 * 2 ^32 …

1
挿入と削除が一方的である場合の効率的な検索のためのデータ構造
の要素を格納するためのデータ構造が必要 です。各要素は異なる時間関連付けられてい 。 は変動し、理論的な上限がありますが、これは通常使用されるものよりも桁違いに大きくなります。んんnt私t私t_iんんn 私のアプリケーションを通して、私はそれを保証することができます: 挿入された要素は、既存のすべての要素より常に新しいものです。つまり、時間関連付けられた要素が挿入された場合、ます。要素は1つずつ挿入されます。tˇtˇ\check{t}tˇ&gt; t私∀ I∈ 1 、... 、n個tˇ&gt;t私∀私∈1、…、ん\check{t}>t_i ∀ i ∈ {1,…,n} 最も古い要素のみが削除されます。つまり、要素が削除された場合、ます。削除は主に1つずつ行われますが、誤って格納された要素の割合が1未満である限り、要素の削除が遅れても直接的な害はありません。jjjtj&lt; t私 ∀ I∈{1、...、N}∖{J}tj&lt;t私 ∀私∈{1、…、ん}∖{j}t_j < t_i ~∀ i ∈ \lbrace 1,…,n \rbrace \setminus \lbrace j \rbrace 挿入と削除を除いて、私がする必要がある唯一のことは、、ある時間の2つの隣接する要素を見つけること。言い換えると、t_j &lt;\ tilde {t} &lt;t_kおよび∄l {\ {1、…、n \}:t_j &lt;t_l &lt;t_k となるような2つの要素jと kを見つける必要があります。t〜t〜\tilde{t}分私t私&lt; t〜&lt; 最大私t私分私t私&lt;t〜&lt;最高私t私\min\limits_i t_i < \tilde{t} < …

3
SKIコンビネーター計算(またはラムダ計算)の目的は何ですか?その使用の実際の例は何ですか?
私はそれが何であるかを理解していますが、それがアルゴリズムまたは何かのためにどのように使用されるかはわかりません。多分私は何かが足りない。私はそれをよりよく理解できるように、それがどのように使用されるかの例を私に与えるために誰かを必要としています。

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