コンピュータサイエンス

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

1
組み合わせ論理用語は常に大きいですか?
そのため、ラムダ微積分項をSKコンビネーターを使用して組み合わせロジックに変換するアルゴリズムがあります。サイズが爆発するものを生成します。この爆発的な規模についてもっと知りたいのですが。しかし、私はより良いアルゴリズムを考えることができないようです。関数型言語が実際にコンビネーターにコンパイルされることを聞いたので、より良いアルゴリズムが存在する必要があるようです。私はそのトピックに関するデビッドターナーの論文を調べました、そして彼は基本的にいくつかの最適化を適用するように言って、それらが「かなりの改善」を引き起こすと言います。 「かなりの改善」とは、サイズが多項式の増加のみに低下することを意味しますか?ラムダ項を多項式(またはそれ以下)のみの増加で組み合わせ論理に変換する既知の方法はありますか?そのようなアルゴリズムが存在する場合、それは実用的ですか?

1
競合駆動型条項学習のバックトラッキングの説明
ここのウィキペディアのページでは、CDCLアルゴリズムがかなりよく説明されています(写真はプリンストンのSharad Malikが作成したスライドから撮られたようです)。しかし、どのようにバックトラックするかを説明するとき、それは「適切なポイントへ」と言うだけです。MiniSATもCDCLアルゴリズムのバリアントを使用しているので、このペーパーを読みました。彼らが言っているように見えるのは、学習された節が単位節になるまで後戻りする必要があるということです。それは確かに明確化ですが、私には意味がありません。最後の割り当ては間違いなく、学習した矛盾句の一部になります(おそらくここで間違っているのでしょうか)。そのため、1つのステップをバックトラックすると、すぐに学習した句のユニットが作成され、最後に割り当てられた値が反転します。アルゴリズムは、十分に遠くまでバックトラックすることなく、DPLLとまったく同じように処理されます。さらに、ウィキペディアのページはこのルールに従っていません。望ましいように見えるので、はるかに後戻りします。 どれだけバックトラックすることになっていますか?

2
未満の距離空間の点集合の中心点を見つけますか?
メトリック空間で定義されたポイントのセットがあるので、ポイント間の「距離」を測定できますが、それ以外は測定できません。このセット内で最も中心的なポイントを見つけたいと思います。これを、他のすべてのポイントまでの距離の合計が最小になるポイントとして定義します。メトリックの計算は遅いため、可能な限り回避する必要があります。nんn このポイントを見つける明白な方法は、メトリック距離計算を使用します。これは、(a)各ポイントについて、他のすべてのポイントまでの距離の合計を計算し、(b)最小ポイントを取るためです。n2ん2n^2 未満の距離比較でこれを行う方法はありますか?(おそらく、三角形の不等式を何らかの方法で利用していますが、これは私の測定基準に当てはまるはずです。)O(n2)O(ん2)O(n^2) 正確な方法が存在しない場合は、適切な近似で十分です。

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

4
なぜバイナリサーチはバイナリサーチと呼ばれるのですか?
いくつかの考えられる説明を聞いたので、信頼できる参照をお願いします。 更新05.19:私の学生の1人が彼の論文で名前が以下の説明(1)から来ていると書いたので、私は質問に興味があります。今までは説明(2)から来ると思った/聞いた。私は彼の論文で間違ったことを許すことと、それが正しいかもしれないならそれを削除するように彼に言ったことの両方に気分が悪いでしょう。 (1)区間内の整数の検索を考えます。質問を使用して、ステップ番号の桁の2進数を尋ねることでそれを見つけることができます。N I I T H[ 0 、2n − 1][0,2n−1][0,2^{n-1}]んnn私ii私トンの時間ithi^{th} (2)要素のサーチスペースがある場合、スペースの残りの部分を2つに繰り返し分割する質問によって未知の要素を見つけることができます。2ん2n2^n そして、はい、私は(2)が(1)と同じアルゴリズムを与えることができることを知っていますが、それはここでのポイントではありません。(2)は、より一般的な問題にも適用できます。

2
二分法モデルのO(n)で整数の並べ替えは可能ですか?
私の知る限り、次の問題を解決する最悪の場合のアルゴリズムは存在しません。O(n)O(n)O(n) 有限の整数で構成される長さシーケンスを前提として、すべての要素が後続要素以下である順列を見つけます。nnn しかし、計算の二分法モデルには、それが存在しないという証拠がありますか? 整数の範囲を制限しないことに注意してください。比較ソートのソリューションも制限しません。

2
単語長が2つのrespの合計である単項言語の規則性。3つの四角
単項言語について考えますLkLkL_k。ここで、LkLkL_kは、長さがkkk平方の合計であるすべての単語で構成されます。形式的に: これは、ことを示すことは容易である L 1 = { N 2 | N ∈ N 0 }( -補題をポンピングとEG)定期的ではありません。 さらに、我々は、それぞれ自然数のためのことを意味4乗の和であることを知っている K ≥ 4のすべての言語 LのKをので、正規である LのK = L (*)。Lk={an∣n=∑i=1kni2,ni∈N0(1≤i≤k)}Lk={an∣n=∑i=1kni2,ni∈N0(1≤i≤k)}L_k=\{a^n\mid n=\sum_{i=1}^k {n_i}^2,\;\;n_i\in\mathbb{N_0}\;(1\le i\le k)\} L1={an2∣n∈N0}L1={an2∣n∈N0}L_1=\{a^{n^2}\mid n\in\mathbb{N_0}\}k≥4k≥4k\ge 4LkLkL_kLk=L(a∗)Lk=L(a∗)L_k=L(a^*) ここで、およびk = 3の場合に興味があります。k=2k=2k=2k=3k=3k=3 、 L 3 = { N 1 2 + N 2 2 + N 3 2 …

1
有限テープのチューリングマシンと有限状態オートマトンの関係は何ですか?
有限のテープを備えたチューリングマシンの場合、対応する有限状態オートマトンが常に存在することを学部生のクラスから思い出しているようですが、これはインターネット上のどこでも確認できませんでした。これは実際のケースですか、それとも私は覚えていませんか?

2
マルコフ連鎖とは何ですか?
私は現在、マルコフチェーンの集中についていくつかの論文を読んでおり、マルコフチェーンと単純な有向加重グラフの違いを確認できません。 たとえば、記事「マルコフチェーンにおける最適な状態空間の集中」では、CTMC(連続時間マルコフチェーン)の次の定義を提供しています。 状態空間が有限CTMC を 遷移率行列 。(S,Q)(S,Q)(\mathcal{S}, Q)S={x1,x2,…,xn}S={x1,x2,…,xn}\mathcal{S} = \{x_1, x_2, \ldots, x_n\}Q:S×S→R+Q:S×S→R+Q: \mathcal{S} \times \mathcal{S} \to \mathbb{R}^+ 彼らはマルコフプロパティにまったく言及しておらず、実際、エッジの重みが確率を表す場合、確率はチェーンの現在の状態のみに依存し、パスを導くパスに依存しないため、マルコフプロパティは自明であると信じていますそれに。 他の記事では、一括性のリレーショナルプロパティについてマルコフチェーンが同様に定義されています。 マルコフ連鎖は、トリプレットとして表されます。 ここで、は有限状態セットであり、は、ある状態から別の状態に移行する確率を示す遷移確率行列であり、はシステムが特定の状態で開始する可能性を表す初期確率分布。MMM(S,P,π)(S,P,π)(S, P, \pi)SSSMMMPPPππ\pi 繰り返しになりますが、過去、未来、独立についての言及はありません。 3番目の論文Simple O(m logn)Time Markov Chain Lumpingがあります。そこでは、エッジの重みが確率であるとは述べられていないだけでなく、次のようにさえ述べています。 多くのアプリケーションでは、値は負ではありません。ただし、が意図的にとして選択され、通常は負になるアプリケーションも存在するため、この仮定は行いません。W(s,s′)W(s,s′)W(s, s')W(s,s)W(s,s)W(s, s)−W(s,S∖{s})−W(s,S∖{s})-W(s, S \setminus \{s\}) さらに、一括は、マルコフプロパティを維持しながら状態の数を減らす方法である必要があると述べられています(「同等の」状態をより大きな状態に集約することによって)。しかし、私にとっては、それは単に確率を合計しているように見え、集約された状態への/からの遷移の結果の可能性が範囲内であることを保証するものでもありません。一括処理は実際に何を保存しますか?[0,1][0,1][0,1] したがって、私が見る可能性は2つあります。 マルコフ連鎖が何であるか理解できなかった、または それらの論文でのマルコフ連鎖という用語の使用は偽物です 誰かが状況を明確にできますか? その用語を使用しているさまざまなコミュニティが実際にあるように見え、それらは大きく異なることを意味しています。これら3つの記事から、マルコフプロパティは取るに足らないか役に立たないかのように見えますが、別の種類の論文を見ると、基本的なように見えます。

1
正規表現が正規表現ではないのはいつですか?
私は正式な言語の大学のコースで勉強しているので、正規表現を使用して素数を見つける方法を説明するこれらの魅力的な投稿(One Two)に出会いました。言ったように、正規表現ではなく、正規表現。正規表現は有限状態オートマトンによって計算された文字列に一致でき、素数を見つけることはFSAでは実行できないため、ブログの投稿に示されている正規表現は、文字列に一致するようにバックトラックするため、完全に正規表現ではありません。 私は正規表現を実際に使用したことがないので、今、私の質問: 「真の」正規表現から見ただけで、すぐに正規表現を認識するにはどうすればよいですか? 定義:正規表現では、正式な言語で定義されている概念を指します。正規表現とは、現代のプログラミング言語でサポートされている概念を意味します。regexp構文には、多くの場合、後方参照などの追加機能が含まれています。プログラミング言語で見られる正規表現は、正式な言語スタイルの正規表現よりも厳密に強力です。

1
静的型チェックが保守的すぎるのは不自然な例では何ですか?
でプログラミング言語で概念、ジョン・ミッチェルは、静的な型チェックが原因で停止問題の(過度に厳格な)は、必ずしも保守的であることを書き込みます。彼は例として以下を与えます: if (complicated-expression-that-could-run-forever) then (expression-with-type-error) else (expression-with-type-error) 誰かが実際に問題となる不自然な答えを提供できますか? 私はJavaが次のような場合に動的にチェックされるキャストを許可することを理解しています: if (foo instanceof Person) { Person p = (Person) foo; : } しかし、私は、言語間の問題よりも、Java言語/コンパイラーの欠陥の必要性を考えています。

2
完全に処理されない計算モデルの「計算可能」の明確な定義はありますか?
これは、ここでの別の質問のフォローアップであり、あまりにも哲学的ではないことを願っています。ラファエルが私の前の質問のコメントで指摘したように、私は本当に「計算可能」の定義を取得していませんが、私が読んだいくつかの論文によると、定義は、チューリングよりも弱い計算のモデルになると本当に明確ではありません入力と出力のエンコーディングのためにマシン。 計算可能チューリングの一般的な定義は次のとおりです。 定義1:関数は、自然数の適切なエンコードを文字列として使用してfを計算するチューリングマシンMがある場合に、チューリング計算可能と呼ばれます。f:Nk→Nf:Nk→Nf : \mathbb{N}^k \to \mathbb{N}MMMfff 定義は、適切なエンコーディングとは正確に何であるかで異なりますが、ほとんどの場合、バイナリエンコーディング、単項エンコーディング、または10進数エンコーディングを、1つの固定された適切なエンコーディングと呼びます。チューリング計算可能性の定義には、1つのエンコーディングを修正する必要があることを示すこともできます。しかし、自然数のバイナリエンコーディングを特別にして、適切なエンコーディングとして公理化できるようにするにはどうすればよいでしょうか。たぶん、それが偶然に計算可能性が何を意味するかという直感的な概念に適合しているからでしょう。 次に、チューリングマシンよりも弱い計算モデルを検討するとどうなるでしょうか。たとえば、のは、設定され考えてみましょうアルファベットで「不自由」チューリングマシンのを{ 0 、McMcM_cだけ右に移動することができる、との定義不自由が計算チューリングチューリング計算可能のものと一致しています。{0,1}{0,1}\{0,1\} 定義2:関数呼び出される計算チューリング不自由またはで計算MのC不自由チューリングマシンがときに限り、Mはf:Nk→Nf:Nk→Nf : \mathbb{N}^k \to \mathbb{N}McMcM_cMMMた計算する列として自然数の適切なエンコーディングを使用しては。fff 我々は次に、機能、「バイナリエンコーディング」と「適切なエンコーディングを」定義する場合でないで計算のM C。「適切なエンコーディング」を「単項エンコーディング」として公理化すると、fはM cで計算可能になります。誰もが無限に多くの直感的なエンコーディングの1つを思いのままに修正できるという事実を考えると、これは厄介なようです。計算モデルがfを計算できるかどうかは明確でなければなりませんf:N→N,n↦n+1f:N→N,n↦n+1f : \mathbb{N} \to \mathbb{N}, n \mapsto n+1McMcM_cfff McMcM_cfff 特定のエンコーディングを参照せずに-少なくとも「ループプログラムはチューリングマシンよりも弱い」と述べたときに、どのエンコーディングが使用されているかについて誰かが言及したことはありません。 この紹介の後、私はようやく私の質問を述べることができます:計算の直観的な概念と一致しない計算の任意のモデルの「適切なエンコーディング」と「計算可能性」をどのように定義しますか?これは、計算可能性を調整する枠組みの中で可能ですか? 編集:私は紹介を短くしました、それは質問に追加しませんでした。

4
5つの小さい整数のうち最大の2つをできるだけ早く見つける
小さな組み込みシステムの画像データに5クロスメディアンフィルターのバリエーションを使用します。 x x x x x アルゴリズムは本当にシンプルです。5つの符号なし整数値を読み取り、最高の2を取得し、それらについていくつかの計算を行い、符号なし整数の結果を書き戻します。 5つの整数入力値がすべて0〜20の範囲にあるのはすばらしいことです。計算された整数値も0〜20の範囲です。 プロファイリングを通じて、最大の2つの数値を取得することがボトルネックであることを理解したので、この部分を高速化したいと思います。この選択を実行する最も速い方法は何ですか? 現在のアルゴリズムは、5つの数値とHWがサポートするCLZ関数によって指定された位置に1を持つ32ビットマスクを使用します。 CPUは専有のCPUであり、社外では利用できません。私のコンパイラはGCCですが、このCPU用にカスタマイズされています。 ルックアップテーブルを使用できるかどうかを確認しようとしましたが、使用できるキーを生成できませんでした。 入力には組み合わせがありますが、順序は重要ではありません。つまり、と同じです。21521521^5[5,0,0,0,5][5,5,0,0,0] 以下のハッシュ関数が衝突することなく完全なハッシュを生成することが起こります! def hash(x): h = 0 for i in x: h = 33*h+i return h しかし、ハッシュは巨大であり、それを使用するのに十分なメモリがありません。 私が使用できるより良いアルゴリズムはありますか?ルックアップテーブルを使用してキーを生成することで問題を解決できますか?

2
高校の科学教師にSATを説明する
私はコンピュータサイエンスに興味のある高校2年生です。#SATのクールなアルゴリズムを開発し、それを使ってscience fairプロジェクトを実装および実行しています。私の学校で最高の理科教師であり、AP Comp Sci教師でもある私のアドバイザーは、彼女が私のプロジェクトについて何も知らないこと、そして#SATがなぜであるのか簡単に説明できるようにする必要があると私に言った5分未満で重要です。私は彼女のSATが#SATに減少することを伝え、SATが重要である理由を説明しようとした:私は彼女にNP問題のいくつかの例を与え、NPの問題がどのようにSATに減少するかを説明し、バイナリ検索で特定の最適化問題をSATに減らす方法を説明した、タンパク質を折りたたみ、強力なAIモデルを作成できます。残念ながら、彼女は私をまったく理解していませんでした。いくつかのポイントを教えていただけますか? PS私の顧問は、SATに還元されない便利な問題が#SATに還元されることを尋ねました(#Pのいくつかの問題が対応するNPバージョンよりも難しいと仮定)。私が思いつくことができたのは、特定のデータセットのモデルが特定のモデルよりも優れていることを見つけることだけでした(モデルの各パラメーターが特定のビット数よりも小さいと仮定)。ウェブ上で他のものを探しましたが、理解できることは何も見つかりませんでした。他に良いアプリケーションはありますか?

4
要素の一意性は決定論的な線形時間で解決できますか?
次の問題を検討してください。 入力:整数のX,YX,YX,Yをリストします 目標:両方のリストに整数が存在するかどうかを判断しxxxます。 両方のリストのサイズがます。この問題の確定的な線形時間アルゴリズムはありますか?言い換えれば、ランダム性を使用せずに、この問題を時間で決定論的に解決できますか?X,YX,YX,YnnnO(n)O(n)O(n) 残念ながら、リストの要素がすべて小さいとは限りません。 ランダム化されたアルゴリズムを使用して予想時間でそれを解決する方法を見ることができます:2つのユニバーサルハッシュ関数ランダムに選択し、の要素をハッシュテーブルに格納し(ハッシュ関数としてを使用)、次にルックアップします各要素を調べて、それがハッシュテーブルにあるかどうかを確認します。予想される実行時間はO (n )になります。しかし、O (n )の実行時間で決定論的アルゴリズムを見つける方法がわかりません。これをランダム化解除して単一の特定のハッシュ関数を修正しようとすると、最悪の場合の入力が存在し、このプロシージャがΘ (nO(n)O(n)O(n)hhhXXXhhhYYYO(n)O(n)O(n)O(n)O(n)O(n)Θ(n2)Θ(n2)\Theta(n^2)時間。私が見つけることができる最良の決定論的アルゴリズムは、値をソートすることですが、それは線形時間ではありません。線形実行時間を達成できますか? また、すべてのリスト要素が範囲整数であると仮定すれば、線形時間でそれを解決する方法を見ることができます[1,n][1,n][1,n](基本的に、ソートのカウントを行います)-しかし、一般的に何が起こるかに興味がありますそれが想定できない場合。 答えが計算モデルに依存している場合、RAMモデルは思い浮かびますが、合理的な計算モデルの結果に興味があります。私はを知ってるの要素の一意性のための決定木アルゴリズムの下限がある場合でも、時には我々は線形時間アルゴリズムを見つけることができるように、これは決定的ではありませんΩ (nはログN )にバインド決定木モデル。Ω(nlogn)Ω(nlog⁡n)\Omega(n \log n) Ω(nlogn)Ω(nlog⁡n)\Omega(n \log n)

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