コンピュータサイエンス

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

2
バイナリヒープを証明する有し
私がいることを証明しようとしているバイナリヒープを持つのノードが正確に持って⌈ nはnnn葉は、ヒープは次のように構築されていることを考えます:⌈ n個2⌉⌈n2⌉\left\lceil \frac{n}{2} \right\rceil percolate upを介して新しいノードがそれぞれ挿入されます。これは、次に使用可能な子で新しいノードをそれぞれ作成する必要があることを意味します。これが意味することは、子供たちはレベルダウンで、左から右に満たされているということです。たとえば、次のヒープ: 0 / \ 1 2 う有し、このために構築されました:0、1、2(数値は、彼らが、そのノードに保持されている実際のデータの兆候を与えない、単に指標です。) これには2つの重要な意味があります。 レベルkが完全に満たされていなければ、レベルノードは存在できません。k + 1k+1k+1kkk 子は左から右に構築されるため、レベルノード間に「空のスペース」、または以下のような状況はありません。 k + 1k+1k+1 0 / \ 1 2 / \ \ 3 4 6 (これは私の定義では違法なヒープです。)したがって、このヒープを考える良い方法は、ヒープの配列実装です。 だから、私は誘導がおそらくこれを行うための良い方法になると思っていた...おそらくnのための奇妙なケースでさえ対処しなければならない何か。たとえば、この方法で構築されたヒープでさえ、偶数nには1つの子を持つ内部ノードがあり、奇数nにはそのようなノードがないという事実を使用した帰納法です。アイデア?

2
有限オートマトンの修正版で受け入れられる言語
決定論的有限オートマトン(DFA)は、すべての正規言語のみを受け入れることができる状態マシンモデルです。DFAは、各状態が入力アルファベットのすべての要素に対して何らかの遷移を提供するように定義できます(通常は定義されます)。つまり、遷移関数は(合計)関数でなければなりません。δ:Q×Σ→Qδ:Q×Σ→Q\delta : Q \times \Sigma \rightarrow Q 二重決定論的有限オートマトン(DDFA)と呼ぶものを想像してください。DFAと同様に定義されますが、2つの例外があります。1つ目は、可能な入力シンボルごとに1つの状態から別の状態に移行する代わりに、2つの異なる状態に移行する必要があることです。次に、文字列を受け入れるために、すべての潜在的なパスが次の条件のいずれかを満たす必要があります。 DDFAを通るすべての潜在的なパスは、受け入れ状態になります(これをタイプ1 DDFAと呼びます)。 DDFAを通るすべての潜在的なパスは、同じ受け入れ状態になります(これをタイプ2 DDFAと呼びます)。 今私の質問のために: タイプ1およびタイプ2 DDFAはどの言語を受け入れますか?具体的には、、L(DDFA)= L(DFA)、またはL(DDFA)\ subsetneq L(DFA)の場合ですか?その場合、L(DDFA)\ NEQのL(DFA) 、の簡単な説明があり、L(DDFA)は?L(DFA)⊊L(DDFA)L(DFA)⊊L(DDFA)L(DFA) \subsetneq L(DDFA)L(DDFA)=L(DFA)L(DDFA)=L(DFA)L(DDFA) = L(DFA)L (D D F A )≠ L (D F A )L (D D F A )L(DDFA)⊊L(DFA)L(DDFA)⊊L(DFA)L(DDFA) \subsetneq L(DFA)L(DDFA)≠L(DFA)L(DDFA)≠L(DFA)L(DDFA) \neq L(DFA)L(DDFA)L(DDFA)L(DDFA) あまり複雑でない場合は、証明(または少なくともある程度は肉付きのスケッチ)を歓迎します。

1
最小ヒープオートマトンで受け入れられる言語の反転の下での閉鎖の証明
これは、のフォローアップの質問です、この1。 エキゾチックステートマシンに関する以前の質問で、Alex ten BrinkとRaphaelは、特有の種類のステートマシンであるmin-heapオートマトンの計算能力について述べました。彼らは、そのようなマシン()が受け入れる言語のセットが、コンテキストフリー言語のセットのサブセットでもスーパーセットでもないことを示すことができました。その質問の成功した解決と明らかな関心を考慮して、私はいくつかのフォローアップの質問をすることを続行します。HALHALHAL 通常の言語はさまざまな操作の下で閉じられることが知られています(ユニオン、インターセクション、補数、差、連結、Kleeneスター、反転などの基本操作に制限される場合があります)プロパティ(これらは、結合、連結、Kleeneスター、および反転の下で閉じられます)。 HALは逆転で閉鎖されますか?

2
文法とオートマトンの言語の決定可能性
これは大学でCSのコースで研究に関連した質問であることに注意してください、それは宿題ではなく、見つけることができ、ここで 2011年秋exam2下。 過去の試験で見ている2つの質問を以下に示します。それらは関連しているようです、最初: させて F I N I T EC F G= { &lt;G&gt; ∣ G はContext Free Grammarです 。L(G )| &lt; ∞ }FINITECFG={&lt;G&gt;∣G is a Context Free Grammar with |L(G)|&lt;∞}\qquad \mathrm{FINITE}_{\mathrm{CFG}} = \{ < \! G \! > \mid G \text{ is a Context Free Grammar with } |\mathcal{L}(G)|<\infty …

1
数独パズルの効率的なエンコード
任意の9x9グリッドを指定するには、各正方形の位置と値を指定する必要があります。この単純なエンコーディングでは、81(x、y、value)トリプレットが得られ、x、y、および値ごとに4ビット(1-9 = 9値= 4ビット)が必要で、合計81x4x3 = 972ビットです。各正方形に番号を付けることにより、位置情報を7ビットに減らし、各正方形のビットと合計891ビットをドロップできます。所定の順序を指定することにより、合計324ビットの各値に対して、これを大幅に4ビットに減らすことができます。ただし、数独には数字が欠けている場合があります。これにより、指定する必要のある数字の数を減らすことができますが、位置を示すために追加のビットが必要になる場合があります。(位置、値)の11ビットエンコードを使用して、手がかりを持つパズルを指定できます。nnn11n11n11nビット、例えば最小(17)パズルには187ビットが必要です。私がこれまで考えた中で最良のエンコードは、各スペースに1ビットを使用して、それが満たされているかどうかを示し、そうであれば、次の4ビットが数値をエンコードすることです。これにはビットが必要で、最小パズルの場合は149()です。できれば有効な各数独セットアップのデータベースなしで、より効率的なエンコードがありますか?(パズルから一般的なに対処するためのボーナスポイント)81+4n81+4n81+4nn=17n=17n=17nnnN×NN×NN \times N 多くのパズルは別のパズルを回転させたり、数字の単純な並べ替えをしたりするということを思いつきました。おそらくそれは必要なビットを減らすのに役立つ可能性があります。 ウィキペディアによると、 古典的な9×9数独ソリューショングリッドの数は6,670,903,752,021,072,936,960(OEISのシーケンスA107739)、または約です。6.67×10216.67×10216.67×10^{21} 計算を正しく行った場合()、ルックアップテーブルの情報は73(72.498)ビットになります。ln(6,670,903,752,021,072,936,960)ln(2)ln(6,670,903,752,021,072,936,960)ln(2)\frac{ln{(6,670,903,752,021,072,936,960)}}{ln{(2)}} だが: 回転、反射、順列、再ラベル付けなどの対称性を考慮すると、本質的に異なるソリューションの数は、5,472,730,538 [15](OEISのシーケンスA109741)であることが示されました。 これにより33(32.35)ビットが得られるため、使用する順列を示す巧妙な方法で73ビット全体を下回る可能性があります。

1
書かれたルールのシステムを評価する方法
私は、組織の基本的な論理を決定するために組織の細則を評価するシステムを考え出そうとしていました。 一次述語システムは、ルールを表すために機能すると思います。ルールは、品詞タグ付けやその他のNLPテクニックを使用してテキストから翻訳できます。 全体として一次論理規則を解釈する体系的な方法、または要素間の類似性を見つけるための第2層として機能する何らかのタイプのMLアーキテクチャがありますか。 例えば、 楽しいアクティビティのリスト: ゴルフ コーヒーブレイク ピザ 細則: 金曜日、ゴルフをします 金曜日または土曜日に、私たちは短いコーヒー休憩を取り、それが土曜日の場合、ピザを受け取ります 結論:私たちのグループは週末は楽しい それははるかにフェッチされたように聞こえますが、可能かどうか私は興味があります。また、2次層の結論を導き出すには、おそらく1次論理のほうが適していると思います。

3
言語をホモイコニックにする方法
この記事によると、次のLispコード行は「Hello world」を標準出力に出力します。 (format t "hello, world") ホモイコニック言語であるLispは、次の方法でコードをデータとして扱うことができます。 ここで、次のマクロを作成したと想像してください。 (defmacro backwards (expr) (reverse expr)) backwardsはマクロの名前で、式(リストとして表される)を取り、それを逆にします。もう一度、「Hello、world」で、今回はマクロを使用しています。 (backwards ("hello, world" t format)) Lispコンパイラはそのコード行を見ると、リストの最初のアトム(backwards)を見て、マクロに名前を付けていることに気付きます。未評価のリスト("hello, world" t format)をマクロに渡し、マクロはリストをに再配置します(format t "hello, world")。結果のリストはマクロ式を置き換え、実行時に評価されるものです。Lisp環境は、最初のアトム(format)が関数であることを確認し、評価して残りの引数を渡します。 Lispでは、コードがリスト(s-expressions?)として実装されているため、このタスクを達成するのは簡単です(間違っている場合は修正してください)。 次に、このOCaml(ホモイコニック言語ではない)スニペットを見てください。 let print () = let message = "Hello world" in print_endline message ;; OCamlにホモイコニシティを追加するとします。OCamlはLispと比べてはるかに複雑な構文を使用します。どうしますか?同種性を実現するために、言語は特に簡単な構文を持っている必要がありますか? 編集:このトピックから、Lispのものとは異なるホモイコニック性を達成する別の方法を見つけました:io言語で実装されたもの。この質問に部分的に答えるかもしれません。 ここでは、簡単なブロックから始めましょう。 Io&gt; plus := block(a, b, a …

2
最小カットから最大フローを計算する
最大フローの応答を計算することを知っています。容量のあるネットワークの最小カットは同等です。cf. 最大フロー最小カット定理。 最大フローを計算するためのアルゴリズム(多少効率的)があり、最大フローが与えられた場合の最小カットの計算も難しくも高価でもありません。 しかし、その逆はどうですか?最小カットが与えられた場合、最大フローをどのように決定できますか?もちろん、ゼロからMax-Flowを解決することなく、できればそれよりも高速です。 いくつかの考え: 最小カットから、最大流量値がわかります。この情報が標準パスのAugmenting-PathおよびPush-Relabelのアプローチにどのように役立つかはわかりませんが、後者の適応はやや理にかなっています。 最小カットを使用してネットワークを2つの部分に分割して再帰することはできません(最悪の場合(1つのパーティションがシングルトンの場合)、問題を縮小しないためです)。また、小さなインスタンスの最小カットもありません。 最大フロー速度の値を知っていると、おそらく補完的なスラックネス条件によって、Max-Flow LPを解くことができますか?

2
Yコンビネータは、カレー-ハワード通信と矛盾しますか?
Yコンビネータのタイプはです。Curry-Howard Correspondenceでは、型(a → a )→ aが存在するため、真の定理に対応しなければなりません。ただし、a → aは常にtrueであるため、Yコンビネータの型は定理aに対応するように見えますが、これは常にtrueとは限りません。どうすればいいの?(a→a)→a(a→a)→a(a \rightarrow a) \rightarrow a(a→a)→a(a→a)→a(a \rightarrow a) \rightarrow aa→aa→aa \rightarrow aaaa

3
SATエンコーディングのレシピ本?
SATソルバーは、大きなインスタンスをより効率的に解決し、さまざまなコンテキストでバックエンドとして使用されています。特定のドメインの問題を解決するためにそれらを使用するたびに、適切なソリューションのセットを持っているだけでなく、フォームに制約(冗長であっても)を置くアドホックエンコーディングを考え出す必要があります。これにより、ソルバーのヒューリスティックが解決策を迅速に見つけることができます。 そのようなエンコードの多くは、私には非常に一般的だと思われます。たとえば、ノードの有限セットがツリー、DAG、またはリストとしてソートされていると断言する... 最適化されたソリューションの一般的な問題に関する一般的なエンコーディングのリポジトリ/レシピ本はありますか?

1
量子コンピューティング-ハミルトニアンモデルとユニタリモデルの関係
量子コンピューティングのアルゴリズムを開発するとき、これを行う主なモデルが2つあることに気付きました。いくつかのアルゴリズム-例えばハミルトニアンNANDツリー問題(Farhi、ゴールドストーン、ガットマン)のよう-ハミルトニアンと、いくつかの初期状態を設計し、次にある時間のためのシュレディンガー方程式によるシステムの進化をさせることにより、作業の測定を行う前に。ttt その他のアルゴリズム(Shorの因数分解アルゴリズムなど)は、一連のユニタリ変換(ゲートに類似)を設計し、これらの変換を一度に1つずつ初期状態に適用してから測定を実行します。 私の質問は、量子コンピューティングの初心者として、ハミルトニアンモデルとユニタリ変換モデルの関係は何ですか?NANDツリー問題のようないくつかのアルゴリズムは、その後、一連のユニタリ変換(Childs、Cleve、Jordan、Yonge-Mallo)で動作するように適合されました。あるモデルのすべてのアルゴリズムを、別のモデルの対応するアルゴリズムに変換できますか?たとえば、特定の問題を解決するためのユニタリ変換のシーケンスが与えられた場合、ハミルトニアンを設計し、代わりにそのモデルで問題を解決することは可能ですか?他の方向はどうですか?もしそうなら、システムが進化しなければならない時間と問題を解決するために必要なユニタリ変換(ゲート)の数との関係は何ですか? 私はこれが事実であると思われるいくつかの他の問題を発見しましたが、これが常に可能または真実であることを示す明確な議論や証拠はありません。おそらく、この問題が何と呼ばれているのかわからないために、何を検索すればよいかわからないからです。

1
通常の言語とのコンテキストの交差
文脈自由言語Lと通常言語Mの共通部分は、常に文脈自由であると言われています。クロスプロダクト構築の証明は理解しましたが、なぜコンテキストフリーであるが通常ではないのかはまだわかりません。 このような共通部分によって生成される言語には、PDA と DFAの両方で受け入れられる文字列があります。DFAで受け入れられているので、通常の言語ではないでしょうか?さらに、交差点が規則的である場合、すべての正規言語にも文脈がないため、文脈がないことを意味します。 誰かがそのような交差点によって得られた言語が規則的でない理由を私に説明できますか?

2
「メモリ合体」とは何ですか?
グラフィック処理ユニットには、メモリ合体と呼ばれるものがあることを知りました。それを読んで、私はこのトピックについて明確ではありませんでした。これは、メモリレベル並列処理に関連する何らかの方法ですか? Googleで検索しましたが、満足のいく答えを得ることができませんでした。 誰かがより包括的で理解しやすい説明をしてくれると助かります。

4
Floyd-Warshall、Dijkstra、Bellman-Fordアルゴリズムの違いは正しいですか?
私は3つを研究してきましたが、それらからの推測を​​以下に述べています。十分に正確に理解しているかどうかを誰かに教えてもらえますか?ありがとうございました。 ダイクストラアルゴリズムは、単一のソースがあり、あるノードから別のノードへの最小パスを知りたい場合にのみ使用されますが、このような場合は失敗します。 Floyd-Warshallアルゴリズムは、すべてのノードのいずれかがソースになる可能性がある場合に使用されるため、任意のソースノードから任意の宛先ノードに到達する最短距離が必要です。これは、負のサイクルがある場合にのみ失敗します。 ソースが1つしかない場合、Bellman-Fordはダイクストラのように使用されます。これは負の重みを処理でき、その動作は1つのソースを除き、Floyd-Warshallと同じですよね?(これは私が最も確信していないものです。)

4
クイックソートが子供に説明しました
昨年、私は「幼稚園のための量子力学」に関する素晴らしい論文を読んでいました。簡単な紙ではありませんでした。 今、私は可能な限り簡単な言葉でクイックソートを説明する方法を疑問に思います。平均複雑度がであることを(または少なくとも手波で)どのように証明できますか?または少なくとも小学校では?O(nlogn)O(nlog⁡n)O(n \log n)

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