コンピュータサイエンス

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

6
infimaで部分的に順序付けられた優先度の優先度キュー
複合型であり、部分的にのみ順序付けられている優先順位を持つオブジェクトがいくつかあります。この優先度の順にオブジェクトを選択する必要があります(つまり、毎回最小限のアイテムを生成します)。しかし、注文を勝手に完了するのではなく、キューが安定している場合は、最小要素が複数ある場合に最も古い要素を最初に返す必要があるという意味でキューの方が好ましいと思います。 半順序で機能するヒープデータ構造はありますか?または、それを使用するための通常の優先度キューの変更?私が必要とするアルゴリズムの一般的な選択は、単純なバイナリまたは4進数のヒープですが、それは半順序では機能しません。 優先度の値は次をサポートします。 操作usingを使用した順序付け≼≼\preccurlyeq。それがいる可能性がありますので、それは、半順序だ≼ bが偽とあるB ≼もfalseです。私は書く⋚ ̸ Bその場合に。a≼ba≼ba \preccurlyeq bb≼ab≼ab \preccurlyeq aa⋚̸ba⋚̸ba \not\lesseqgtr b inf(xi)inf(xi)\inf(x_i)yyyy≼xiy≼xiy \preccurlyeq x_innnO(n)O(n)O(n) 半順序の線形拡張を定義できます。アルゴリズムがそのように機能するため、優先キューに使用するのは簡単な方法です。ただし、順序はパフォーマンスに影響し、挿入の順序は最悪の場合を回避するのに最適であるように見えます。 さらに、これで使用したいアルゴリズムは、キュー内のすべての優先順位の下限を知る必要があります。 優先順位には実際の意味がありますが、変更される可能性があるため、他のプロパティに依存することは現実的ではありません。 注:バイナリヒープは半順序では機能しません。aaa、bbb、およびcのバイナリヒープを想定しますccc。ここでa≼ca≼ca \preccurlyeq cおよびa⋚̸ba⋚̸ba \not\lesseqgtr bおよびa⋚̸ca⋚̸ca \not\lesseqgtr cです。それらはこの順序で配置されているため、 a (0) / \ b (1) c (2) ここでdが挿入されます。次の空き位置は3で、bの左の子なbbbので、次のようになります a (0) / \ b (1) c (2) / d (3) 場合は(暗示た推移から、しかし、については何も言うことはありませんと)と、そしてと交換されませんそれはあまりありませんので、。しかし、実際には未満です、それと比較されていないため、現在、主要なヒープ不変式は保持されていません。topは最小限ではありません。d≼ad≼ad \preccurlyeq ad≼cd≼cd …

1
チューリングマシンのユニバーサルシミュレーション
してみましょう一定時間が構築可能関数です。fff 二テープTMが存在することのTM(Hennieとスターンズ、1966)状態の古典的なユニバーサルシミュレーション結果与えられたようにうんUU TM、および⟨ M⟩⟨M⟩\langle M \rangle 入力文字列、バツxx 以下のためのランのステップとリターン上の答え。また、は任意の関数とことができます。M X G ω (F (N )LG F (N ))g(| x |)g(|x|)g(|x|)MMMバツxxgggω(f(n)lgf(n))ω(f(n)lg⁡f(n))\omega(f(n)\lg f(n)) 私の質問は: シングルテープTMで最もよく知られているシミュレーション結果は何ですか?上記の結果も保持されますか? [HS66]に改善はありますか?ステップの2テープTMでTMをより高速にシミュレートできますか?私たちは取ることができますであることをの代わりに?g (n )ω (f (n ))ω (f (n )lg f (n ))f(n)f(n)f(n)g(n)g(n)g(n)ω(f(n))ω(f(n))\omega(f(n))ω(f(n)lgf(n))ω(f(n)lg⁡f(n))\omega(f(n)\lg f(n))

2
正規表現はですか?
Type 3 Grammarがある場合、プッシュダウンオートマトンで(スタックで操作を行わずに)表現できるため、コンテキストフリー言語を使用して正規表現を表現できます。しかし、解析テーブルを構築せずに、タイプ3の文法が、LL(1)、SLR(1)などであるかどうかを知ることはできますか?LR(1)LR(1)LR(1)LL(1)LL(1)LL(1)SLR(1)SLR(1)SLR(1)

2
ニューラルネットワークは常に収束する必要がありますか?
前書き 第一歩 標準的な逆伝播ニューラルネットワークを作成し、それをテストするために、XORをマップすることにしました。 2-2-1ネットワークです(tanhアクティベーション機能付き) X1 M1 O1 X2 M2 B1 B2 テストのために、手動で上部中間ニューロン(M1)をANDゲートに設定し、下部ニューロン(M2)をORゲートに設定します(真の場合は出力1、偽の場合は-1)。 また、接続M1-O1を手動で-.5、M2-O1を1、B2を-.75に設定しました。 したがって、M1 = 1およびM2 = 1の場合、合計は(-0.5 +1 -0.75 = -.25)tanh(0.25)= -0.24 M1 = -1およびM2 = 1の場合、合計は((-0.5)*(-1)+1 -0.75 = .75)tanh(0.75)= 0.63 M1 = -1およびM2 = -1の場合、合計は((-0.5)*(-1)-1 -0.75 = -1.25)tanh(1.25)= -0.8 これは、「最初の反復」では比較的良い結果です。 ステップ2 次に、これらの重みを少し変更し、エラー伝播アルゴリズム(勾配降下法に基づいて)を使用してそれらをトレーニングしました。この段階では、入力ニューロンと中間ニューロンの間の重みをそのままにして、中間(およびバイアス)と出力の間の重みを変更します。 テストでは、重みを.5 .4 .3に設定します(それぞれM1、M2、バイアス) ただし、ここで問題が発生し始めます。 私の質問 学習率を.2に設定し、10000回以上の反復のためにプログラムにトレーニングデータ(ABA …

1
ブルートフォースドローネ三角形分割アルゴリズムの複雑
Mark de Berg等の著書「Computational Geometry:Algorithms and Applications」には、ドロネー三角形分割を計算するための非常に単純なブルートフォースアルゴリズムがあります。このアルゴリズムは、無効なエッジの概念を使用します。有効なドローネ三角形分割では表示されず、他のエッジに置き換える必要があるエッジです。各ステップで、アルゴリズムはこれらの不正なエッジを検出し、不正なエッジがなくなるまで必要な変位(エッジフリップと呼ばれる)を実行します。 アルゴリズムLegalTriangulation(TTT) 入力。いくつかの三角TTT点セットのPPP。 出力。法的三角形分割PPP。 一方、 違法なエッジが含まれているP I 、P jの DOTTTpipjpipjp_ip_j \quadしてみましょうとP I 、P J P lは隣接する2つの三角形ことのp のi のp J。pipjpkpipjpkp_i p_j p_kpipjplpipjplp_i p_j p_lpipjpipjp_ip_j \quadTから削除し、代わりにp k p lを追加します。Tを返します。pipjpipjp_ip_jTTTpkplpkplp_kp_l TTT このアルゴリズムは最悪の場合O(n2)O(n2)O(n^2)時間で実行されると聞きました。ただし、この記述が正しいかどうかは明確ではありません。はいの場合、この上限をどのように証明できますか?

1
ポリゴンが任意の線に関して単調かどうかをテストするにはどうすればよいですか?
定義:Aポリゴン平面では直線に関して単調と呼ばれるLへのすべての行が直交する場合は、Lと交差P最も二回で。PPPLLLLLLPPP 多角形与えられた場合、多角形PがLに関して単調であるような線Lが存在するかどうかを判断することは可能ですか?はいの場合、どのように?PPPLLLPPPLLL 以前、関連する質問(特定のラインに関してポリゴンが単調かどうかを判断する方法を尋ねました)を尋ねましたが、が事前に指定または指定されていない場合に興味があります。LLL

1
n個の離散単調関数の先行交差を決定するためのポリタイムおよびポリスペースアルゴリズム
いくつかの前触れ:私はレクリエーションのコンピューター科学者であり、ソフトウェアエンジニアを雇っています。したがって、このプロンプトが左のフィールドの外に見える場合はご容赦ください。私は、数学的なシミュレーションを使って遊んでいるので、やるべきことは何もないときに問題を開いています。 リーマンの仮説で遊んでいる間、私は素数のギャップを、以前の各素数の倍数によって形成されるすべての相補関数の交点に基づいて回帰関係に縮小できると判断しました(鋭いオブザーバーはこれがエラトステネスのふるい)。これがまったく意味をなさない場合でも、心配しないでください。それはまだ最前線です。n−1n−1n-1 これらの関数がどのように関連しているかを見て、各素数の次のインスタンスをこれらの関数の最初の交点に還元し、無限に繰り返し実行できることに気付きました。ただし、これがpolytimeおよびpolyspaceで扱いやすいかどうかを判断できませんでした。したがって、私が探しているのは、多項式の時間と空間で離散(および該当する場合は単調)関数の最初の交点を決定できるアルゴリズムです。そのようなアルゴリズムが現在存在しない、または存在できる場合、簡潔な証明または参照があれば十分です。nnn 私がこれまでに見つけた最も近いものは、ダイクストラの射影アルゴリズムです(そう、それはエドガー・ダイクストラではなくRL ダイクストラです)。これは整数プログラミングの問題に帰着するため、NP困難です。同様に、適用可能なすべてのポイントの推移的な集合交差を実行する場合(それらは現在制限されていると理解されているため)、現在の弱い制限のために、繰り返しのために指数空間に制限する必要があります任意の実数素数(したがって、各素数空間)。ln(m)ln⁡(m)\ln(m)mmmenene^nnnn 世界的には、問題の軽減についての私の理解が間違っているのではないかと思っています。リーマンの仮説(またはこの分野の深遠で未解決の問題)をすぐに解決するつもりはありません。むしろ、私は問題をいじることによってそれについてもっと学びたいと思っています、そして、私は私の研究でひっかかりました。

2
クラスタリング問題の最適な欲張り
一連の2次元ポイントが与えられますおよび整数K。最大の円の半径ができるだけ小さくなるように、すべてのnポイントを囲むk個の円のコレクションを見つける必要があります。換言すれば、我々は、設定された見つけなければならないC = { C 1、C 2、... 、CのK }のk個のそのようなコスト関数その中心点コスト(C )= maxのI 分jは Dを(|P|=n|P|=n|P| = nkkkkkknnnC={c1,c2,…,ck}C={c1,c2,…,ck}C = \{ c_1,c_2,\ldots,c_k\}kkkは最小化されます。ここで、 Dは入力点 p iと中心点 c jの間のユークリッド距離を示します。各ポイントは、頂点を k個の異なるクラスターにグループ化する最も近いクラスター中心に割り当てられます。cost(C)=maximinjD(pi,cj)cost(C)=maximinjD(pi,cj)\text{cost}(C) = \max_i \min_j D(p_i, c_j)DDDpipip_icjcjc_jkkk この問題は(離散)クラスタリング問題として知られ、NPハードです。NP完全な集合集合問題からの縮約により、ρ &lt; 2の問題に対するρ近似アルゴリズムが存在する場合、P = NPであることが示されます。kkkNPNP\text{NP}NPNP\text{NP}ρρ\rhoρ&lt;2ρ&lt;2\rho < 2P=NPP=NP\text{P} = \text{NP} 最適な近似アルゴリズムは非常にシンプルで直感的です。一つの第一のピック点P ∈ P任意セットを入れ、それをCクラスタ中心の。次に、他のすべてのクラスターセンターから可能な限り離れた次のクラスターセンターを選択します。だから| C | &lt; K、我々が繰り返しポイントを見つけるJ ∈ P距離いるD (J 、Cは)最大化に追加されるCを。一度| C | …

2
スコット連続関数:代替定義
私はこのプロパティに本当に苦労しています: ましょであり、コヒーレンススペースと単調関数です。は、が有向集合であるようなすべての場合にのみ連続です。X,YX,YX,Yf:Cl(X)→Cl(Y)f:Cl(X)→Cl(Y)f: Cl(X) \rightarrow Cl(Y)ffff(⋃x∈Dx)=⋃x∈Df(x)f(⋃x∈Dx)=⋃x∈Df(x)f(\bigcup_{x\in D} x)=\bigcup_{x \in D}f(x)D⊆Cl(X)D⊆Cl(X)D \subseteq Cl(X)DDD したがって、有向集合は次のように定義されます POSET は、などの有向集合でやです。はクリークを表します:コヒーレント。D⊆D⊆D \subseteq ∀x,x′∈D∀x,x′∈D \forall x, x' \in D ∃z∈D∃z∈D \exists z \in D x⊆zx⊆z x \subseteq zx′⊆zx′⊆zx' \subseteq z Cl(X)Cl(X)Cl(X) {x⊆|X|∣a,b∈x⇒a{x⊆|X|∣a,b∈x⇒a\{x \subseteq |X| \mid a,b \in x \Rightarrow ab}b}b \} 多くの本は、スコット連続関数の定義としてそれを与えていますが、残念ながら私の先生ではありません。彼はこの連続的な定義を与えました: f:Cl(X)→Cl(Y)f:Cl(X)→Cl(Y)f : Cl(X) \rightarrow Cl(Y)は、単調かつ場合、連続です。。 ここで、モノトーンは次のように定義されます …

2
タスク完了時間の変動はメイクスパンにどのように影響しますか?
私たちは、タスクの大規模なコレクションを持っていることをみましょうと言うτ1,τ2,...,τnτ1,τ2,...,τn\tau_1, \tau_2, ..., \tau_nおよびプロセッサ(性能の点で)同一のコレクションはρ1,ρ2,...,ρmρ1,ρ2,...,ρm\rho_1, \rho_2, ..., \rho_m並列に完全に動作します。興味のあるシナリオでは、我々は仮定してもよいm≤nm≤nm \leq n。各τiτi\tau_iそれがプロセッサに割り当てられると完了するまでに時間/サイクルのいくつかの量をとりρjρj\rho_j、そして一度割り当てられると、完了するまで再割り当てすることはできません(プロセッサは常に割り当てられたタスクを常に完了します)。各仮定しよう時間を要する/サイクルはX 私は、ない、事前に知られているいくつかの離散確率分布から取られました。:この質問のために、私たちも、単純な分布と仮定することができますP (X I = 1 )=は、P (X I = 5 )= 1 / 2、およびすべてのX iのあるペアごとに独立を。したがって、μ iの = 3とστiτi\tau_iXiXiX_iP(Xi=1)=P(Xi=5)=1/2P(Xi=1)=P(Xi=5)=1/2P(X_i = 1) = P(X_i = 5) = 1/2XiXiX_iμi=3μi=3\mu_i = 3σ2=4σ2=4\sigma^2 = 4。 静的に、時間/サイクル0で、すべてのタスクがすべてのプロセッサに可能な限り均等に、一様にランダムに割り当てられるとします。ので、各プロセッサρjρj\rho_j割り当てられているn/mn/mn/m(私達はちょうど同様に想定することができるタスクをm|nm|nm | nの質問の目的のために)。メイクスパンを、割り当てられた作業を完了するための最後のプロセッサρ∗ρ∗\rho^*が割り当てられた作業を終了する時間/サイクルと呼びます。最初の質問: mmm、nnn、XiXiX_iの関数として、makespan MMM何ですか?具体的には、E[M]E[M]E[M]何ですか?Var[M]Var[M]Var[M]? 2番目の質問: 仮定、およびすべてのX iはそう、ペアごとに独立しているμ iが = 3及びσ …

1
漸近的な下限は暗号に関連していますか?
指数関数的な硬さなどの漸近的な下限は、一般に問題が「本質的に難しい」ことを意味すると考えられています。「本質的に」解読が困難な暗号化は安全であると考えられています。 ただし、漸近的な下限は、問題のインスタンスの巨大ではあるが有限のクラスが簡単である可能性を排除しません(たとえば、サイズが未満のすべてのインスタンス)。10100010100010^{1000} 漸近的な下限に基づいた暗号化は、特定のレベルのセキュリティを付与すると考える理由はありますか?セキュリティの専門家はそのような可能性を考慮していますか、それとも単に無視されていますか? 例としては、多数の素因数への分解に基づいたトラップドア関数の使用があります。これはある時点では本質的に難しいと考えられていました(指数関数が推測であったと思います)が、今では多くの人が多項式アルゴリズムがあるかもしれないと考えています(素数性テストのように)。指数関数的な下限の欠如について誰もあまり気にしていないようです。 私は、NP困難であると考えられる他のトラップドア機能が提案されたと考えています(関連する質問を参照)。私の質問はより基本的です:漸近的な下限が何であるかは重要ですか?そうでない場合、暗号化コードの実際的なセキュリティは、漸近的な複雑さの結果に関連していますか?


2
AO *アルゴリズムを実装する方法は?
検索アルゴリズムを実装するときに、異なるデータ構造が使用されることに気付きました。たとえば、キュ​​ーを使用して幅優先検索を実装し、スタックを使用して深さ優先検索を実装し、最小ヒープを使用してA *アルゴリズムを実装します。これらの場合、検索ツリーを明示的に構築する必要はありません。 しかし、AO *アルゴリズムの検索プロセスをシミュレートする単純なデータ構造を見つけることはできません。検索ツリーを明示的に構築することがAO *アルゴリズムを実装する唯一の方法であるかどうかを知りたいですか?誰でも私に効率的な実装を提供できますか?

2
なぜ一部の推論エンジンには人間の支援が必要なのに、他の推論エンジンには必要ないのですか
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 自動化された定理証明者、つまりACL2とSMTソルバーが人間の支援を必要としない一方で、証明アシスタント、つまりイザベルとCoqは必要ないのはなぜですか? ここでシリーズの次の質問を見つけます。

3
アルゴリズム情報理論における「情報」と「有用な情報」の違い
ウィキペディアによると: 非公式には、アルゴリズム情報理論の観点から、文字列の情報内容は、その文字列の最短の自己完結型表現の長さに相当します。 「有用な情報」の類似した非公式の厳密な定義は何ですか?「有用な情報」がより自然な、またはより基本的な概念として扱われないのはなぜですか。単純に、純粋にランダムな文字列には定義上ゼロの情報が含まれている必要があるため、標準の定義では最大の情報があると考えられるという事実を回避しようとしています。

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