コンピュータサイエンス

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

3
ポリモーフィックリストからポリモーフィックリストへのML関数
私はML(OCaml)でプログラミングを学んでいます。以前に、タイプのML関数'a -> 'bについて質問しました。今、私はタイプの関数で少し実験しています'a list -> 'b list。明らかな簡単な例がいくつかあります。 let rec loop l = loop l let return_empty l = [] let rec loop_if_not_empty = function [] -> [] | l -> loop_if_not_empty l (ライブラリ関数を使用せずに)空のリストまたはループを返す以外のことを行う関数を作成する方法がわかりません。これはできますか?空でないリストを返す方法はありますか? 編集:はい、私がtypeの関数を持っている場合は、'a -> 'b別の関数またはtypeの関数を作成できますが'a list -> 'b list、ここで私が疑問に思っているのは、最初の関数を作成する方法です。

2
メタアルゴリズムとは何ですか?
私は現在、乗法的重み更新メタアルゴリズムに関する調査論文を読んでいます。それらが「メタアルゴリズム」によって何を意味するのか私にはよくわかりません。それは単に、さまざまな目的に使用できる一般的なアルゴリズムですか? この用語の正確な定義は見つかりませんでしたが、機械学習におけるブースティングなどのメタアルゴリズムの例を見つけました。

1
インクリメンタルな強連結コンポーネント
変化する有向グラフについて、強く接続されたコンポーネントに関する情報を維持したいと思います。グラフ操作はインクリメンタルです。頂点の追加とエッジの追加のみです。これらの操作で最もよく知られている償却済みの複雑さを実現するデータ構造はどれですか。 グラフが無向の場合、答えはunion-find構造になります。また、無向グラフは有向グラフの特殊なケースと見なすことができるので、(少しでも)超定数の下限が引き継がれます。 線形の上限の場合、強連結成分は、データをまったくリサイクルせずに、エッジを追加するたびに最初から計算できます。もっと上手にできる方法があるのか​​な。 これが必要な状況では、どういうわけか、重要なSCCはルールではなく例外であることを期待しています。そして、サイクルの不在の中で、私は合計で線形時間を達成することができます(つまり、操作ごとの一定時間の償却)[編集:]どういう意味かを明確にしましょう。もちろん、不在のサイクルでは、SCCを追跡する必要はまったくありません。償却された一定の時間は、SCCを心配する以外に、私の設定で行うことです。 したがって、一般的には、上記の上限よりは良くないが、グラフがDAGのままである限り、操作ごとに一定の償却時間を使用するデータ構造にも関心があります。

3
同じ構成を2回繰り返すチューリングマシンを無限ループにする必要があるのはなぜですか?
私は次の声明を見ましたが、その背後にある理由がよくわかりません。 チューリングマシンが同じ構成を2回繰り返す場合、それは無限ループでなければなりません。 はの状態になり、テープが左側000と右側111 にあると考えました。、が右に移動してから左に移動し、同じ状態のままであるとします。同じ構成ではないですか?TMTMTMq1q1q_1

1
Coqは合成ですか、それとも分析ですか?
CMUのHoTTコースの講義1で、ここにあります:https ://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=0945cc7f-48b7-4803-81af-e7193a3f461d ハーパーは33:52に、合成理論と分析理論を並行して比較し、PL理論に到達したとき、Coqは分析的であり、Coqは文法で言語を証明するだけでパーサー自体は証明しないと述べた。 私はどういうわけか反対することを強く望んでいますが、なぜそれをしたいのか明確な考えがありません。Coqは非常に総合的であり、依存型理論に基づく他の証明アシスタントもそうだと思います。これらの言語はすべてプログラムをビルドするだけなので、また、たとえば型クラスを使用してCoqで公理代数を表現し、必要に応じて具体化することもできます。このパターンは特にAgdaに当てはまります。 だから私の質問は、ハーパーは正しいのですか?彼が正しい場合、私の見解のどの部分が私の誤解を引き起こしますか?

1
可変2D配列のプレフィックス合計
M[n][n]整数の2D配列があるとしましょう(実際、バイナリは問題ありませんが、問題ではないかと思います)。次の形式のクエリの繰り返しに興味があります。座標ペア与えられた場合、は何 もちろん、これらの値はすべて合計時間で計算でき、その後、クエリはます。ただし、私の配列は変更可能であり、値を変更するたびに、明らかな解決策として更新が必要です。k,lk,lk,lΣi = 0k − 1Σj = 0l − 1M[ i ] [ j ] ?∑i=0k−1∑j=0l−1M[i][j]? \sum_{i = 0}^{k-1} \sum_{j = 0}^{l-1} M[i][j]? O(ん2)O(n2)\mathcal O(n^2)O(1)O(1)\mathcal O(1)O(ん2)O(n2)\mathcal O(n^2) 上に四分木を作成できますM。前処理にかかる、これは私たちが行うことができ、クエリで、およびアップデートで。O(ん2ログ(n ))O(n2log⁡(n))\mathcal O(n^2\log(n))O(nログ(n ))O(nlog⁡(n))\mathcal O(n\log(n))O(log(n))O(log⁡(n))\mathcal O(\log(n)) 私の質問は: 更新をあまり犠牲にすることなく、クエリを大幅に改善できますか? 特に、更新操作とクエリ操作の両方を準線形にしたり、特に両方をしたりすることに興味があります。O(んε)O(nϵ)\mathcal O(n^\epsilon) 編集:詳細については、この制限なしでも問題は興味深いと思いますが、大まかにクエリを実行し、更新することを期待しています。理想的な目標は、実行時間全体を約です。したがって、クエリがをするのに、更新がをする状況も興味深いでしょう。O(ん3)O(n3)\mathcal O(n^3)O(ん2)O(n2)\mathcal O(n^2)O(ん3 + ϵ)O(n3+ϵ)\mathcal O(n^{3+\epsilon})O(nログ(n ))O(nlog⁡(n))\mathcal O(n \log(n))O(ログ(n ))O(log⁡(n))\mathcal O(\log(n))

2
{a ^ n(a + b)^ n | n> 0}確定的CFL?
L = {aん(a + b)ん| n>0}L={aん(a+b)ん|ん>0}L = \{ a^n (a+b)^n | n>0\} 私が読んでいる本はそうですが、第2部がどこから始まるのかわからず、それも同様に始まる可能性があることを考えると、DPDAを使用してこれをどのように受け入れることができますか?最初の部分()を読んだ後のように、それが最初の部分の終わりであること、または2番目の部分が始まることを考慮しないことをどのように確認できaんaんa^nA ?a?a? これは確定的ですか?

2
System Tでの高次プリミティブ再帰のためのアッカーマン階層
ゲーデルは、彼のSystem Tプリミティブ再帰でより高い型を定義しています。私はGirardからのメモを見つけました。彼は、単純に型指定されたラムダ計算に加えてSystem Tの実装を説明しています。50ページで、リカーサーでより多くの型を使用すると、システムでより表現力が高まると述べています。 これがどのように発生するのか正確にはわかりません。より高次のプリミティブ再帰を伴う一種のアッカーマン階層を考案することは可能ですか?つまり、各関数はSystem Tで表現可能ですが対角線は表現できない、より速く成長する関数の階層ですか?私はそう思うが、その構造は私には明らかではないようであり、どのようにそれを構築するか、または文献へのポインタを受け取るかについて興味がある。 私は何か具体的なものを求めています。Tにない関数の存在を証明する一般的な対角引数は知っていますが、実際に「型階層にステップアップ」する方法を確認したいと思います。

1
log(n)が空間構成可能な関数である理由
ウィキペディアの「構築可能な機能」によると、 複雑性理論、時間構成可能関数は、関数であるFから自然数という特性を有する自然数のF(nは)から構成することができるNによってチューリングマシンオーダーの時間でF(N)。 しかし、は自然数にマップするのではなく、実数にマップします。log(n)log⁡(n)\log\left(n\right) それにもかかわらず、なぜはスペース構築可能な関数なのですか?log(n)log⁡(n)\log\left(n\right)



3
二分探索木の「ランク」とは何ですか、またどのように役立ちますか?
ランク付けされた二分探索木とは何か、なぜランク付けが重要なのかについて、ちょっと心に納得できません。誰かが私のためにいくつかのことを明確にしてくれることを期待しています。 調べた内容: 私が読んだことから、ランク付けされた二分探索木は、各ノードに変数「ランク」が付加されているツリーです。 ここでの質問では、誰かが二分探索木のノードのランクを決定するために次のことができると述べています: ランクをゼロから始めます。バイナリ検索がルートから下に進んでいくときに、検索がスキップするすべての左側のサブツリーのサイズを合計します。また、検索されたアイテムよりも小さいパスに沿ったノードも含めます。これらは、検索パス上の正しい子の親にすぎません。 質問: ランクは、ツリー内の特定のノードに到達するために必要なノードの数(ルートの場合は1つ)を反映する単なる数値のようです。そうですか?それだけではノードのランクがノードの深さと同じになるだけのように思われるので、それは私には正しくないと思われました。 また、「重量」と「ランク」の違いは何ですか?特定のバイナリ検索ツリーのノードに重みが付けられている場合、それはユーザー/開発者によってランダムな値が割り当てられているだけですか? 最後に、ランクを付ける意味は何ですか?私の最初の考えは、優先順位を示すために使用できるということです。しかし、その場合、開発者はなぜウェイトを使用しないのですか? その他:ここ のサイトも確認しました。ランクの計算方法を説明していますが、まだ概念が理解できていません。 助けてくれてありがとう。

1
Hoare-FloydロジックとScott–Stracheyセマンティクスの間の主要なブレークスルーは何でしたか?
ミルナーのマイクゴードンによる「厳密な証明を支援するための機械の使用」についての解説を読んでいます。このペーパーでは、Dana ScottとStracheyによる表示セマンティクスのアイデアからLCFがどのように生まれたかを説明します。 FCFを開発するにはFloyd-Hoareロジックでは不十分であるように見えますが、なぜこれが当てはまるのかはわかりません。最後に、Hoareロジックでは、いくつかの前提条件を満たし、関係を介していくつかの事後条件適合するプログラム状態を扱い、Iはこの式を提供できます。ウィキペディアは、意味論的意味論は次のように述べています:PPPrrrQQQ は、言語からの式の意味を説明する数学的オブジェクト(表記と呼ばれる)を作成することにより、プログラミング言語の意味を形式化するアプローチです。 Hoareロジックでは、再帰を扱った覚えがありませんでしたが、このアプローチでインスタンス再帰がいくつかの関係の固定点としてどのようにモデル化されるかに関するいくつかの直観に精通しています。それでも、両方のアプローチは、数学的関係を使用して入力と出力の間の関係を記述しようとするようです。 質問 それでは、Hoareロジックと表記セマンティクスの違いは何ですか?表示セマンティクスはプログラムのいくつかの複雑さをよりよく管理しますか?その場合は、例を挙げて説明してください。 たぶん、次のミルナーの表記意味論に関する引用は、あなたの答えを導くのに興味深いです: このロジックでプログラミング言語の構文を書き留め、ロジックでセマンティクスを記述することができました。

1
多項式パワーの単項言語は文脈依存ですか?
たぶん Σ={a}Σ={a}\Sigma = \{a\}。 証明または反証:すべての多項式 p(n)p(n)p(n) 係数あり NN\mathbb{N}、 L={ap(n)|n∈N}L={ap(n)|n∈N}L = \{a^{p(n)} \; | \; n \in \mathbb{N}\} 状況依存言語です。 文脈依存言語のようです。LBAや文脈依存の文法を作るのは、この言語では簡単ではないと思います。これを、たとえば補数のようなCSLのクロージャプロパティで証明できますか?たとえば、誰かが私を証明するのを手伝ってくれる?L1={an7+n5+n3+n2+1|n∈N}L1={an7+n5+n3+n2+1|n∈N}L_1 = \{a^{n^7+n^5+n^3+n^2+1} | n\in \mathbb{N}\}状況依存です。たぶん、私はこれから私の最初の質問を証明するためのアイデアを得ることができます。

3
エッジ支配セットのNP完全性の簡単な証明
グラフでは、エッジ支配セットはエッジのサブセットDであり、グラフのいずれかのエッジがDにあるか、Dのエッジと端点を共有しています。最小エッジ支配セットの問題は、エッジ支配セットを見つけることです。最小カーディナリティの。この問題の決定版はNP完全であることが知られていますが、この事実の比較的単純な証明が知られているかどうかを確認したいと思います。 私が文献で見つけた唯一の証拠は、この問題に最初に取り組んだGavrilとYannakakisによる論文です。ただし、上記の証明は、頂点カバーが平面3次グラフではNP完全であること、および次数dの2部グラフをdエッジ色にすることができることを利用しています。私は、アルゴリズムコースを受講した大学生に一般的に知られている事実のみを利用する、より単純な証明を望みます。

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