コンピュータサイエンス

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

3
クロスコンパイラのTダイアグラム
Red Dragon Book CompilersのBootstrappingを研究していて、クロスコンパイラーのTダイアグラムがかなり混乱していることがわかりました。「コンパイラ1からコンパイラ2を実行する」が何を意味するのか理解できません。誰かがいくつかのより良い説明、類推、または実際のコンパイラに関連する例を提供できますか? 最初にいくつかの表記。 私は言語のコンパイラの平均 言語で書かれた出力言語/マシンコード生成。これは墓石またはT-diagramsです。L SN=LSN=LSN= LLLSSSNNN コンパイラーのコンパイル マシンNのコードを生成する実装言語Sの新しい言語Lのクロスコンパイラーがあるとします。 L SN=LSN=LSN= マシンMで実行されている既存のSコンパイラもマシンMのコードを実装しているとします。 SMM=SMM=SMM= LMNを生成するためにSMMを介してLSNを実行する コンパイラの構築 L MN= L SN+ SMMLMN=LSN+SMMLMN = LSN + SMM

1
一方向プロパティを満たさないハッシュ関数への攻撃
私はコンピュータセキュリティコースを改訂しており、過去の質問の1つに悩まされています。はい、これ: アリス(AAA)は、ボブ(B)に共有シークレットS a bを使用してショートメッセージを送信し、メッセージが彼女からのものであることを認証したいと考えています。彼女は2つの部分を含む単一のメッセージを送信することを提案します: A → B :MMMBBBSabSabS_{ab}Hはハッシュ関数であり ∥意味連結。A→B:M,h(M∥Sab)A→B:M,h(M∥Sab) A \to B: \quad M, h(M \mathbin\parallel S_{ab})hhh∥∥\parallel ボブがメッセージがアリスから来たことを確認するために何をしているのか、なぜ(特性を除いて)ボブがこれを信じるのかを注意深く説明してください。hhh が一方向のプロパティを満たさず、事前イメージを生成できると仮定します。攻撃者ができることとその方法を説明します。hhh プリイメージの生成に比較的時間がかかる場合は、を変更せずにプロトコルを改善するための簡単な対策を提案します。hhh 私は最初のものを知っていると思います。ボブは受信したメッセージのハッシュを共有キーと一緒に取得し、そのハッシュをアリスから受信したハッシュと比較する必要があります。両者が一致する場合は、アリスがメッセージを送信したことを証明する必要があります。 2つ目の質問についてはわかりません。2番目の問題の答えは、攻撃者がハッシュを与えられた元のメッセージを簡単に取得できるということですか?それがどのように行われるかはわかりません。

2
ブランチとバウンドの説明
ブランチとバインドされたアルゴリズムに関するテストがあります。このアルゴリズムがどのように機能するかを理論的に理解していますが、このアルゴリズムを実際に実装する方法を示す例は見つかりませんでした。 このような例をいくつか見つけました が、それでも混乱しています。巡回セールスマンの問題も探しましたが、理解できませんでした。 私が必要とするのは、いくつかの問題と、これらの問題をブランチとバウンドを使用してどのように解決できるかです。

1
任意の順列を一連の(挿入、移動、削除)操作として表現する
2つの文字列があるとします。それらをおよびBと呼びます。どちらの文字列にも繰り返し文字はありません。AAABBB をBに変換する挿入、移動、削除操作の最短のシーケンスを見つけるにはどうすればよいですか?AAABBB insert(char, offset)文字列charの指定さoffsetれた位置に挿入します move(from_offset, to_offset)現在オフセットfrom_offsetにある文字を新しい位置に移動して、オフセットを設定しますto_offset delete(offset) の文字を削除します offset アプリケーション例:データベースクエリを実行し、結果をWebサイトに表示します。その後、データベースクエリを再実行し、結果が変更されたことを発見しました。最小数のDOM操作を使用して、現在データベースにあるものと一致するようにページの内容を変更したいとします。最短の操作シーケンスが必要な理由は2つあります。まず、効率。変更されるレコードが数個しかない場合は、O(n )ではなくを実行する必要があります。O(1)O(1)\mathcal{O}(1)O(n)O(n)\mathcal{O}(n)DOM操作。高価なため。第二に、正しさ。アイテムをある位置から別の位置に移動した場合、関連付けられたDOMノードを破棄して再作成せずに、1回の操作で移動する必要があります。そうしないと、フォーカス状態、<input>要素のコンテンツなどが失われます。

4
右と左の連想積が同じ単語
HopcroftとUllmanの本を使用して、非決定論的オートマトンの研究を始めました。私は非常に興味深いと思う問題に行き詰まっています。 次の表に従って乗算することにより、左から右に評価したときに右から左に評価したときに同じ値を持つすべての文字列を受け入れる非決定的有限オートマトンを提供します。 ×abcaacbbaacccba×abcaaacbcabcbca\qquad \displaystyle\begin{array}{c|ccc} \times & a & b & c \\ \hline a & a & a & c \\ b & c & a & b \\ c & b & c &a \end{array} 私たちは、文字列の持っているのであれば、 左から右への製品です(\回B)\回C = A \倍のC = Cと 右から左に製品がある= A \回(B \倍のC) \回b = a(a …

2
Petersonの2プロセス相互排除アルゴリズムは、死にかけているプロセスを説明しますか?
私は中にいると思いピーターソンのアルゴリズムのための相互排除プロセスが最初のクリティカルセクションを入力する場合は、クリティカルセクションに入るのを待って、永遠に死ぬこと、またはキャンセルされ、他のプロセスだろうループました。 この図では、プロセス1が停止した場合、プロセス1の背後にある残りのプロセスは、プロセス1の場所まで実行されますが、その後ループします。 クリティカルセクションに到達したプロセスが、終了する前に最初に停止した場合はどうなりますか?

1
虚数の根を持つ特性多項式を介して反復を解く
アルゴリズム分析では、反復を解決する必要があることがよくあります。マスター定理、置換および反復法に加えて、特性多項式を使用するものがあります。 特徴的な多項式バツ2− 2 x + 2バツ2−2バツ+2x^2 - 2x + 2が虚数の根、つまりバツ1= 1 + iバツ1=1+私x_1 = 1+iおよびを持っていると私が結論付けたとしましょうバツ2= 1 − iバツ2=1−私x_2 =1-i。その後、私は使用できません c1⋅ Xん1+ c2⋅ Xん2c1⋅バツ1ん+c2⋅バツ2ん\qquad c_1\cdot x_1^n + c_2\cdot x_2^n 解を得るためにね この場合、どうすればよいですか?

3
対数対二重対数時間の複雑さ
使用する際に実際のアプリケーションでは、具体的な利点がありますの代わりにO(ログ(N ))のアルゴリズム?O(ログ(ログ( n ))O(ログ⁡(ログ⁡(ん))\mathcal{O}(\log(\log(n))O(ログ(n ))O(ログ⁡(ん))\mathcal{O}(\log(n)) これは、従来の二分探索木実装の代わりに、たとえばvan Emde Boas木を使用する場合です。ただし、たとえば、場合、最良の場合、対数アルゴリズムは対数アルゴリズムよりも(約)5倍優れています。また、一般的に、実装はよりトリッキーで複雑です。n &lt; 106ん&lt;106n < 10^6555 私が個人的にVEBツリーよりもBSTを好むとすれば、どう思いますか? 簡単にそれを示すことができます: ∀ N &lt; 106。ログ んログ(ログ( n ))&lt; 5.26146∀ん&lt;106。 ログ⁡んログ⁡(ログ⁡(ん))&lt;5.26146\qquad \displaystyle \forall n < 10^6.\ \frac{\log n}{\log(\log(n))} < 5.26146

1
セルオートマトンの次元が複雑性クラスに及ぼす影響
例として3d→2d削減を考えてみましょう:2dセルオートマトンによって3dセルオートマトンをシミュレートするコストはどのくらいですか? より具体的な質問がいくつかあります: どのようなアルゴリズムで時間の複雑さがどの程度変化しますか? エンコーディングの基本的なアイデアは何でしょうか。3Dグリッドを2Dグリッドに効率的に(または効率的に…)マッピングするにはどうすればよいですか?(課題は、もともと3dグリッドに隣接しているが、2dグリッドにはもはや隣接していない2つのセル間の通信を達成するようです)。 特に、私は指数複雑度アルゴリズムの複雑さのドリフトに興味があります(これは、次元が何であっても指数関数のままであると思いますが、そうですか?) 注:選択したI / Oメソッドが複雑度に影響を与える複雑度の低いクラスには興味がありません。(おそらく最良の方法は、I / Oメソッドが無次元であると想定することです。タイムステップの量が変化する間に、特定のセルでローカルに行われます。) いくつかのコンテキスト:並列ローカルグラフの書き換えに興味がありますが、これらのグラフは2dグリッドよりも3d(または多分ωd…)グリッドに近いので、2次元のハードウェア実装に何が期待できるか知りたいのですがシリコンチップ。

2
ラウンドロビンスケジューリング:プロセスを複数回リストすることを許可しますか?
ラウンドロビンスケジューラでは、プロセスリストにプロセスを複数回追加すると、優先度を高くすることができます。 これがどれほど実用的なアプローチなのかと思います。プロセスに長いタイムスライスを与える(利点:切り替え時間を短縮する)か、優先度の高いプロセスの個別のリストを維持するなど、他の手法に比べてどのような利点がありますか。特に、プロセスを複数回リストすると、公平性と反応性にどのように影響しますか? (Andrew Tanenbaumのオペレーティングシステムの演習2.16から:Design and Implementation 1st ed。)


2
接頭辞言語の決定可能性
途中で、次の質問の変形がありました: 決定可能のために定義 県(L )=を{ X | ∃ Y STは xは、Y ∈ L } ことを示して県(Lが)必ずしも決定可能ではありません。LLLPref(L)={x∣∃y s.t. xy∈L}Pref(L)={x∣∃y s.t. xy∈L}\text{Pref}(L) = \{ x \mid \exists y \text{ s.t. } xy \in L\}Pref(L)Pref(L)\text{Pref}(L) しかし、を選択した場合、Pref (L )もΣ ∗であり、決定可能であると思います。また、Lは= ∅と同じ結果になります。そして、Lは決定可能でなければならないので、停止問題などを選ぶことはできません。L=Σ∗L=Σ∗L=\Sigma^*Pref(L)Pref(L)\text{Pref}(L)Σ∗Σ∗\Sigma^*L=∅L=∅L=\emptysetLLL どのように私は見つけることができますなど県(Lは)決定可能ではないでしょうか?LLLPref(L)Pref(L)\text{Pref}(L) 上のどの条件作る県(L )決定可能にし、それはそれは決定不能になりますか?LLLPref(L)Pref(L)\text{Pref}(L)

3
数独を完全に指定するための手がかりの最小数?
この論文から、手がかりが16個以下で解決できるパズルは存在しないことがわかりますが、17個の手がかりから解決できるパズルが存在することを示しています。すべての有効な数独パズルを17の手掛かりで指定できますか?そうでない場合、すべての有効なパズルを完全に特定できる手掛かりの最小数はいくつですか?より正式には、17の手がかりからしか一意に解くことができない有効な数独パズル(または、それがパズルのセットになると思います)は存在しますか?もしそうなら、手掛かりの最小数はいくつですか?すべての有効な数独パズルをまたはそれ以下の手掛かりで一意に指定できますか?CCCCCCC

3
有向グラフの一意のパス
私は、有向グラフが頂点に対して一意であるかどうかを判別するクラスのアルゴリズムを設計しています。これにより、任意のu ≠ vに対して、vからuまでのパスが最大で1つ存在します。BFS(幅優先検索)を使用してvから別の頂点uへの最短パスを見つけ、次にBFSを再度実行して、vからuへの代替パスが見つかるかどうかを確認することから始めました。しかし、これは時間がかかりすぎると思います。より短い実行時間でソリューションを見つける方法についてのヒントはありますか?vvvu ≠ vあなた≠vu \ne vvvvあなたあなたu

3
Prolog / ASPは、研究以外の分野でどのくらいの頻度で使用されますか?
私は最近、KRR(知識表現と推論)とASPについて知りましたが、それらについて以前に聞いたことはありません(プロローグについては少し除く)。それらについて少し読んだところ、主な用途の1つはAIのようです。 私の質問は、ASPまたは他の宣言型言語がどれだけ広く使用されているか、それらを頻繁に使用するプログラム(検索エンジンなど)はありますか、それとも主に研究目的ですか?彼らがあまり知られていない理由は何ですか?AI開発がプログラミングのより「高度なレベル」に属しているためでしょうか。
9 prolog 

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