コンピュータサイエンス

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

1
迷路からの脱出を保証する手順
4つのコマンド「上/下/右/左に移動」を与えることができる2次元の迷路があるとします。迷路を知っているが、人がどこにいるかは知らないので、迷路を抜けることを保証するコマンドの最小シーケンスを見つける方法は?迷路のどこから始めても機能する単一のコマンドシーケンスを探しています。 右側に壁があるときにパートナーに「右に移動」コマンドが与えられた場合、彼は単に現在の場所に留まると仮定します。 つまり、迷路が与えられ、一連のコマンドを選択する必要があります。その後、パートナーは迷路のどこかに配置され、事前に選択した一連のコマンドに従います。このシーケンスにより、パートナーが最初に配置された場所に関係なく、パートナーが確実に脱出できるようになります。許可されるコマンドには条件ステートメントがないため、パートナーに応じて異なるシーケンスに従うことはできません。 迷路の説明が与えられた場合、そのようなシーケンスを構築する多項式時間アルゴリズムはありますか? Yuval Filmusは、これは同期語問題の特殊なケースであり、ユニバーサルトラバーサルシーケンスに関連している可能性があると述べています。また、関連があると思われる論文を見つけました。 同時迷路解決問題。Stefan Funke、AndréNusser、Sabine Storandt。AAAI 2017。 残念ながら、一般的なグラフの場合、これは未解決の問題のように見えますが、この特定のケースに適したアルゴリズムがあるのではないかと思っています。候補者のアプローチを思い付きました。すべての位置に、終了するのに必要な最小ステップ数をラベル付けし、迷路内のすべてのエージェントを追跡します。この方法でA *検索を実行できる場合があります。

1
「有名な論理学者はここで恥ずかしいエラーを犯しました」と、SICPの行。これは何を指しているのですか?
コンテキストは次のとおりです(コンピュータープログラムの構造と解釈、セクション1.1.8、「ローカル名」という見出しの下)。 プロシージャの仮パラメータは、仮パラメータの名前が何であるかは関係ないという点で、プロシージャ定義において非常に特別な役割を果たします。このような名前はバインド変数と呼ばれ、プロシージャ定義はその仮パラメータをバインドすると言います。バインドされた変数の名前が定義全体で一貫して変更されている場合、プロシージャ定義の意味は変わりません。 その最後の行の最後に、脚注(26)があります。 一貫した名前変更の概念は実際には微妙であり、正式に定義するのは困難です。有名な論理学者はここで恥ずかしいエラーを犯しました。 テキストは何を指しているのですか?「一貫性のある名前の変更」を定義するのが難しいのはなぜですか、どの論理学者がこれを定義しようとしてエラーを犯しましたか?
13 logic 

1
クラスカルとプリムはすべてのMST最小全域木に到達可能ですか?
これは真実だと思いますが、どちらについても正式な証拠を得ることができませんでした。しかし、クラスカルのアルゴリズムを適用することで、最小スパニングツリーに到達できるというのは本当ですか?同様に、これはプリムのアルゴリズムにも当てはまりますか? 編集:より正確には、接続された無向の重み付きグラフのMSTが与えられた場合、このMSTを生成するKruskalまたはPrimを使用した一連のステップがあることが保証されているかどうかを知りたいです。たとえば、同じ重みを持つ複数のエッジがある場合、クラスカルにはさまざまな選択肢があります。プリムも同様です。

2
マージソートの「分割」ステップを回避できますか?
したがって、マージソートは、分割統治アルゴリズムです。上記の図を見ながら、基本的にすべての分割ステップをバイパスできるかどうか考えていました。 2つずつジャンプしながら元の配列を反復処理した場合、インデックスiおよびi + 1の要素を取得し、独自のソートされた配列に入れることができます。これらのすべてのサブ配列(図に示すように[7,14]、[3,12]、[9,11]および[2,6])を取得したら、通常のマージルーチンに進んで取得します。ソートされた配列。 配列を繰り返し処理し、必要なサブ配列をすぐに生成するのは、分割ステップを全体で実行するよりも効率が悪いですか?

1
加算、乗算、等式のみのランダムアクセスマシン
文献は、プリミティブ乗算を備えたユニットコストRAMが不合理であることをかなり明確にしています。 チューリングマシンでは多項式時間でシミュレートできません 多項式時間でPSPACE完全問題を解くことができます ただし、このトピック(Simon 1974、Schonhage 1979)で参照できるすべての参照には、ブール演算、整数除算なども含まれています。 加算、乗算、および等式のみを持つRAMの「合理性」の結果はありますか?つまり、ブール演算、切り捨てられた整数除算、切り捨てられた減算などを持たないものはどれですか? そのようなRAMはまだかなり「不合理」だと思うでしょう。主な赤旗は、線形時間で指数的に大きな整数を生成できることであり、乗算の畳み込みのような効果により、これは特に複雑になる可能性があります。ただし、これによりあらゆる種類の「不合理な」結果(チューリングマシンの指数関数的高速化、PSPACEとの不合理な関係など)が可能になることを示す結果は実際には見つかりません。 文献にはこのトピックに関する結果がありますか?

3
微積分とプログラミング言語の違いは何ですか?
私は微積分学と呼ばれるものとプログラミング言語と呼ばれるものについてかなり混乱していると思います。 私は、微積分はプログラムの等価性について推論するための正式なシステムであると考える傾向があり、言われたかもしれません。プログラムには、マシンによって指定された操作上のセマンティクスがあります。このようにして、言語Lの(正しい)計算LLLは、プログラムの等価性の証明方法です。 これは私にとって合理的な分割のように思えますが、これは一般に受け入れられている意味ですか?それとも間違っているのでしょうか? 関連して、なぜいくつかの操作上のセマンティクスは非決定的です(コンフルエントであると仮定します)?戦略の選択を自由にしておくことから何が得られますか? これらについて明確に説明していただければ幸いです。さらに具体的なリファレンス!ありがとう!

3
文脈自由文法にパラメータを追加するとどうなりますか?
私は、インデンテーションに敏感な言語の文法を考えていましたが、パラメータと組み合わせた場合、CF文法がトリックを行うようです。例として、ANTLRのような形式の単純化されたPython文法の次のフラグメントを考えます。 // on top-level the statements have empty indent program : statement('')+ ; // let's consider only one compound statement and one simple statement for now statement(indent) : ifStatement(indent) | passStatement(indent) ; passStatement(indent) : indent 'pass' NEWLINE ; // statements under if must have current indent plus 4 spaces ifStatement(indent) …

1
学生の合計時間を最小化するための最適な質問のシーケンスを見つける
大学でチュートリアルセッションがあるとします。私たちは、一連の持っている質問との集合 の学生。各学生は、すなわち、各学生のために、質問の特定のサブセットに疑問を持っている、聞かせてQ J ⊆ Qは、生徒が疑問を持っていることを質問の集合とします。仮定 ∀ 1 ≤ jの≤ N :Q J ≠ φと ⋃ 1 ≤ jの≤ N Q J = Q。k Q = { q 1 … q k } n S = { s 1 … s n } s jkkQ={q1…qk}Q = \{ q_1 \ldots q_k \}nnS={s1…sn}S …


7
O(1)追加スペースを使用して、2つの文字列が互いの順列であるかどうかを確認する方法は?
2つの文字列が与えられた場合、O(1)スペースを使用して、それらが互いの順列であるかどうかをどのように確認できますか 文字列を変更することは一切許可されていません。 注:文字列の長さとアルファベットのサイズの両方に関連するO(1)スペース。

2
要素が正確にインデックス±Mでない順列のカウント
私は最近、アルゴリズムのインタビューでこの問題を尋ねられ、解決できませんでした。 NとMの2つの値が与えられた場合、長さNの順列の数を数えなければなりません(1からNまでの数を使用)。順列の任意の数と順列のその位置の絶対差がMと等しくないようにします。 例-N = 3かつM = 1の場合、1 2 3および3 2 1は有効な順列ですが、数字3は位置2にあり、それらの差は= Mであるため、1 3 2は無効です。 NxM Dynamicプログラミングを試しましたが、繰り返しをカウントしない繰り返しを作成できませんでした。

2
単項言語は、その指数が線形関数である場合に正規ですか?
正式な言語とオートマトンコースの現在の割り当てを行っている間、単項言語(適切な用語であることを望みます)、つまり単一の文字に基づいた言語に関する演習に行き詰まりました。ただし、特定の演習については聞きたくありませんが、私が思いついたはるかに一般的な推測については聞きたくありません。 ましょうと。私の推測は次のとおりです:Σ ={a}Σ={a}\Sigma=\{a\}L = {af(n )∈Σ∗:N ∈N0}L={af(n)∈Σ∗:n∈N0}L=\{a^{f(n)}\in\Sigma^*:n\in\mathbb N_0\} Lは 規則的である⇔ ∃ のx 、y∈ N0:f(N )= X ⋅ N + YL 定期的です⇔∃バツ、y∈N0:f(n)=バツ⋅n+yL\text{ is regular}\Leftrightarrow \exists x,y\in\mathbb N_0:f(n)=x\cdot n+y この質問は以前に科学的な治療を見たことがありますか?「明らかに」true / falseですか? 私には、明らかに「」方向は1つがちょうどでDFAを構築することができますので、本当であるを循環していることの状態後の状態を一読した状態と、それは状態番号である場合に限っ受け入れ。⇐⇐\Leftarrowx + yバツ+yx+yバツバツxyyyyyy

2
「生産」という言葉は、どのようにしてコンピューターサイエンスの文脈で「ルール」という言葉と同義語になったのでしょうか。
私は正式な言語と生産ベースシステム(ルールベースシステム)を研究していますが、これら2つの「生産」と「ルール」という言葉がコンピューターサイエンスの多くの文脈で同じことを意味する理由について少し混乱しています。 英語では、同じことを意味していないようです。私は英語のネイティブスピーカーではありませんが、ルールは人について話すときにやるべき/すべきでないこと、または何度も繰り返されると同じ結果が得られることを指し、いくつかのルールで機能すると言います(毎回同じであるいくつかのプロトコル/手順によって定義される動作方法)。 生産とは、完全に異なるものを指します...現在製造/生産されている物理的な商品またはソフトウェアのフェーズ。物理的または芸術的作品、文章、絵、誰かの身体的または精神的な能力で作られたものを作る行為。特定のものが生産されると言います。 しかし、コンピューターサイエンスでは、英語ではまったく異なるものを表すこれらの単語は、CSでは同じものを意味します。この用語はどのようにしてCSでも似たものになりました。 コンピュータサイエンスのための何らかの語源辞書がありますか。コンピュータサイエンスの用語がどのようになったのかを教えてくれる辞書? ところで、興味深い事実:どちらの生産もルールもこのStack Exchangeサイトのタグではありません。

1
これは、再帰プロシージャを末尾再帰に変換する一般的な方法ですか?
私が変換する一般的な方法見つけたようだ任意の末尾再帰に再帰的な手順を: 追加の「結果」パラメーターを使用して、ヘルパーサブプロシージャを定義します。 プロシージャの戻り値に適用されるものをそのパラメータに適用します。 このヘルパープロシージャを呼び出して開始します。「結果」パラメーターの初期値は、再帰プロセスの終了点の値であるため、結果の反復プロセスは、再帰プロセスが縮小し始めるところから始まります。 たとえば、変換する元の再帰的手順は次のとおりです(SICP演習1.17)。 (define (fast-multiply a b) (define (double num) (* num 2)) (define (half num) (/ num 2)) (cond ((= b 0) 0) ((even? b) (double (fast-multiply a (half b)))) (else (+ (fast-multiply a (- b 1)) a)))) 変換された末尾再帰手続き(SICP演習1.18)は次のとおりです。 (define (fast-multiply a b) (define (double n) (* …

3
決定論的有限オートマトンで可能なすべてのアルファベットの遷移を定義することは必須ですか?
明日は私のプレゼンテーションであり、私の概念を明確にしたい… DFAでは、「各状態について、可能なすべてのシンボル(アルファベット)の遷移を定義する必要がある」と読みました。 各状態について、DFAではすべての可能なシンボルの遷移を定義することが必須ですか?そうでない場合は、例を挙げてください。

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