コンピュータサイエンス

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

3
最小の移動数で数字を照合するアルゴリズム
これは編集距離の質問の一種で、とても簡単です。私はこの問題についてはかなり頭がおかしくて、今のところそれを理解することはできません。 一連の数値が与えられた場合、例えば [3, 1, 1, 1] 「ムーブ」の数を最小限に抑えて、すべての数値を同じ数値に最も効率的に変換するにはどうすればよいでしょうか。「移動」とは、数値から1を追加または削除することを意味します。 上記の例では、最も効率的な移動は次のとおりです。 [1, 1, 1, 1] これには2回の移動が必要で、最初の数を2回減らします。 数百の数のはるかに大きな配列を考えると、これを見つけるための最良の方法を見つけることができません。 私は最初に丸められた平均数(長さで割ったすべての合計)を計算してから、計算された平均に減らしましたが、上記の例はこれを壊し、2の代わりに4手を必要としました。 私は理解できると思います: 平均、 モード、 中央値 そして、それぞれの編集距離を取得し、最小距離を選択します。ただし、これがすべてのインスタンスで正しいかどうかはわかりません。どうやって知ることが出来ますか?

1
特定のDFAが最小限であるかどうかをどれだけ速く判断できますか?
最小化決定性有限オートマトン(のDFA)は、文献に詳細に研究されてきた問題であり、そしていくつかのアルゴリズム次のような問題を解決するために提案されています:DFAを考えると、同じ言語を受け入れて対応する最小限のDFAを計算A。これらのアルゴリズムのほとんどは、多項式時間で実行されます。AA\mathscr{A}AA\mathscr{A} ただし、この問題の決定バリアントは「DFA 与えられた場合、Aは最小限ですか?」-実際に最小オートマトンを計算するよりも効率的に解くことができます。明らかに、これは、たとえば、Hopcroftのパーティション絞り込みアルゴリズムを実行してから、すべてのパーティションに正確に1つの状態が含まれているかどうかを判断することによっても効率的に実行できます。AA\mathscr{A}AA\mathscr{A} Yuval Filmusが彼の回答で示唆しているように、決定可能性バリアントは、おそらく標準アルゴリズムを使用することで、より速く解決できます。残念ながら、その方法はわかりません(ここで明らかな点を見逃していないことを願っています)。 Yuvalはここのコメントで、最もよく知られているアルゴリズム(上記のものなど)が一定サイズのアルファベットに対して時間で実行されることを指摘しています。したがって、私はランタイムでの漸近的に重要な利益に関心があるだけでなく、かなり可能性が低いように見えます。私が最も気になるのは、私たちがイエスノーノーアンサーだけに関心があるという事実から引き出されるかもしれない「ショートカット」を想像できないことです-漸近的に無視できる時間を節約することを可能にするショートカットさえも。DFAの最小性を決定する賢明なアルゴリズムはすべて、実際にDFAを最小限に抑え、プロセス中に変更がないか確認する必要があると思います。O(nlogn)O(nlog⁡n)\mathcal{O}(n \log n)

1
プロセッサーを使用して
n 2台のコンピューターで時間の複雑さで並列に配列の最大値を見つけるアルゴリズムをクラスで提示されました。O (1 )O(1)O(1)ん2n2n^2 アルゴリズムは: 長さnの配列Aがあるとします。 長さnのフラグ配列Bを作成し、台のコンピューターでゼロで初期化します。んnn 最小値のインデックスでB内のすべての2つの要素とライト1を比較するのコンピュータ。ん2n2n^2 台のコンピューターを持つAで0のインデックスを見つけます。んnn 講師はnでそれができるかもしれないと私たちにからかった台のコンピューターとlogn時間の複雑さ。んログんnlog⁡n\frac{n}{\log n}ログんlog⁡n\log n たくさん考えた後、どうすればいいのかわからなかった。何か案が?

1
ライブコーディングを使用して教えるためのヒント
初年度のプログラミングとアルゴリズムのコースに参加しています。最近の講義で、ライブコーディングを使用して資料を提示することにしました。つまり、本質的にはキーボードの後ろに座ってコードを記述し、emacsを使用してコードを評価し、プロセスを容易にしました。 これは非常に成功し、学生たちはよりアクティブなフォーマットを高く評価したことについてコメントしました。これがこの教育形式を使用した最初の試みだったので、完全に実行されなかったことがわかります。問題の中には、emacsに精通していないことに関連するものもあれば、生徒の質問によってスクリプトから遠く離れすぎてしまうこともありました。私はもっ​​と上手にできることを知っています。 ライブコーディングレクチャーを使用してレクチャー(およびその他のデモンストレーション)を行うためのガイドラインは何ですか? 避けるべき落とし穴は何ですか?

2
特別なクラスの2部グラフの難しい計算問題
私は、二部グラフのクラスのプロパティに興味内のすべてのノードXは、内のすべてのノード3-正規であるYは、 2正規であり、| X | = | 2 Y / 3 | 。まず、これはよく知られたクラスのグラフですか?第二に、G (X∪ Y、E)G(X∪Y,E)G(X \cup Y, E)バツXXYYY| バツ| = | 2Y/ 3 ||X|=|2Y/3||X|=|2Y/3| このクラスの2部グラフに限定された扱いにくい計算問題の例はありますか?

1
これはNPハードですか?証明できません。
私は問題を抱えており、NP難しいと思いますが、それを証明することはできません。 レイヤーグラフは次のとおりです。ここで、レイヤー0が最も高いレイヤー、レイヤーLが最も低いレイヤーです。 レイヤー間にいくつかの有向エッジがあり、エッジ(A、B)はノードAがノードBをカバーできることを示します。AがBをカバーできる場合、AからBへのパス上のすべてのノードがBをカバーでき、Bがカバーできます。自体。 最後に、ノードSのセットがあります。別のノードANSのセットを選択し、Sの各ノードqに対して、ANSにノードpが存在し、pがqをカバーしていることを確認する必要があります。 すべてのノードにはコストがあり、ANSの設定の総コストを最小限に抑える必要があります。 これはNP難しい問題ですか?そう思いますが、証明できません。 私たちを手伝ってくれますか? どうもありがとうございました。
11 graphs  np 

2
文脈自由でない補語を伴う文脈自由言語の例
文脈自由言語は補完の下で閉じられていません。講義では、同じ引数が与えられているここでWikipediaのための: A={anbncm; m,n∈N0}andB={ambncn; m,n∈N0},A={anbncm; m,n∈ℕ0}andB={ambncn; m,n∈ℕ0},A = \{\mathtt a^n \mathtt b^n \mathtt c^m;~m, n ∈ ℕ_0\}\quad\text{and}\quad B = \{\mathtt a^m \mathtt b^n \mathtt c^n;~m, n ∈ ℕ_0\}, 両方のAAA及びBBB文脈自由であるが、それらの交点A∩BA∩BA ∩ Bありません。文脈自由言語は労働組合の下で閉鎖されているので、補完の下で閉鎖することもできません。 しかし、これだけのショーの3つの言語の1というAAA、BBB、及びA¯¯¯¯∪B¯¯¯¯A¯∪B¯\overline A \cup \overline B非文脈自由補完と文脈自由言語であるが、そのためにこれらの一つは、これは真実ではありません。それは何ですか? また、おそらくバイナリアルファベットを超えた、コンテキストフリーでない補完機能を備えたコンテキストフリー言語の最小限かつエレガントな例はありますか?

1
ナップザック問題の変種
定数によってナップザックの項目数を制限する必要がある場合、動的プログラミングの状況でナップザック問題にどのようにアプローチしpppますか?これは同じ問題(最大重みWWW、すべてのアイテムに値vvvと重みwww)ですが、ナップザックに追加できるのはpppアイテムのみで、明らかにナップザックの値を最適化する必要があります。 3次元が必要ですか、それ以外のアプローチを見つけることができますか。セルのナップザックに項目の数を単純に追加しようとし、項目の数<= で最後に最大値を取得しようとしましたpppが、これは最善の解決策ではありません。

1
8パズルの到達可能な状態空間
私は人工知能の研究を始めたばかりで、なぜ8パズルの到達可能な状態空間がか疑問に思っています。/ 29!/29!/29!/2。タイルの順列の数は9!9!9!しかし、パズルの可能な状態の半分がどの状態でも到達できない理由はすぐには明らかではありません。誰でも詳しく説明できますか? 左側にランダムな構成、右側にゴール状態の参照用の8パズルの画像:

1
言語が正規かどうかをテストするアルゴリズム
言語が正規かどうかをテストするためのアルゴリズム/体系的な手順はありますか? 換言すれば、代数形式で指定された言語与えられる(のようなものを考えるL={anbn:n∈N}L={anbn:n∈N}L=\{a^n b^n : n \in \mathbb{N}\})、言語が正規であるかどうかをテストします。学生がすべての宿題を手助けするWebサービスを作成していると想像してください。ユーザーが言語を指定すると、Webサービスは「通常」、「通常ではない」、または「わからない」で応答します。(Webサービスに「わからない」とできるだけ頻繁に回答しないようにしてください。)これを自動化する良い方法はありますか?これは扱いやすいですか?それは決定可能ですか(つまり、「わからない」と答える必要がないことを保証することは可能ですか)?この問題を解決するための合理的に効率的なアルゴリズムはあり、実際に発生する可能性のある多くの/ほとんどの言語に対して「わからない」以外の回答を提供できるでしょうか? 言語が規則的でないことを証明する古典的な方法は、ポンピングレンマです。ただし、ある時点では(たとえば、ポンプする単語を選択するために)手動での洞察が必要となるため、これをアルゴリズムに変換できるかどうかは不明です。 言語が正規であることを証明する古典的な方法は、Myhill–Nerodeの定理を使用して有限状態オートマトンを導出することです。これは有望なアプローチのように見えますが、代数形式で言語に対して基本的な操作を実行する機能が必要です。代数形式の言語で、必要になる可能性のあるすべての操作を象徴的に実行する体系的な方法があるかどうかは、私にはわかりません。 この質問を適切に配置するには、ユーザーが言語を指定する方法を決定する必要があります。私は提案を受け入れていますが、私はこのようなことを考えています: L={E:S}L={E:S}L = \{E : S\} ここで、は単語式、Sは長さ変数に対する線形不等式のシステムであり、次のように定義されています。EEESSS 各ワード表現です。(これらは、Σ ∗の任意の単語をとることができる変数を表します。)x,y,z,…x,y,z,…x,y,z,\dotsΣ∗Σ∗\Sigma^* それぞれワード表現です。(ここで、x rは文字列xの逆を表します。)xr,yr,zr,…xr,yr,zr,…x^r,y^r,z^r,\dotsxrxrx^rxxx それぞれ、B 、Cは、...ワード表現です。(暗黙的に、Σ = { 、B 、C 、... }、そう、B 、C 、...、基礎となるアルファベットで単一のシンボルを表します。)a,b,c,…a,b,c,…a,b,c,\dotsΣ={a,b,c,…}Σ={a,b,c,…}\Sigma=\{a,b,c,\dots\}a,b,c,…a,b,c,…a,b,c,\dots 各η、B η、C ηは、...場合、単語表現であるηは、可変長のです。aη,bη,cη,…aη,bη,cη,…a^\eta,b^\eta,c^\eta,\dotsηη\eta 単語式の連結は単語式です。 各長可変です。(これらは任意の自然数を取ることができる変数を表します。)m,n,p,q,…m,n,p,q,…m,n,p,q,\dots それぞれ x | 、| y | 、| z | 、…は長さ変数です。(これらは対応する単語の長さを表します。)|x|,|y|,|z|,…|x|,|y|,|z|,…|x|,|y|,|z|,\dots これは、教科書の演習で見られる多くのケースを処理するのに十分広いようです。もちろん、より適切な提案があれば、代数形式で言語を指定する他のテキストによる方法で置き換えることができます。

1
間隔のマップのデータ構造
ましょ整数であり、およびlet全ての整数の集合を表します。ましょう整数の意味間隔。nnnZZ\mathbb{Z}[a,b][a,b][a,b]{a,a+1,a+2,…,b}{a,a+1,a+2,…,b}\{a,a+1,a+2,\dots,b\} マップを表すデータ構造を探しています。データ構造で次の操作をサポートする必要があります。f:[1,n]→Zf:[1,n]→Zf:[1,n] \to \mathbb{Z} get(i)get(i)\text{get}(i)は返します。f(i)f(i)f(i) set([a,b],y)set([a,b],y)\text{set}([a,b],y)更新する必要がので、すなわち、更新新しいマップにこのような forおよび for。ffff(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=⋯=f(b)=yf(a)=f(a+1)=\cdots=f(b)=yffff′f′f'f′(i)=yf′(i)=yf'(i) = yi∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = f(i)i∉[a,b]i∉[a,b]i \notin [a,b] stab(i)stab(i)\text{stab}(i)は、とが一定になるような最大間隔を返す必要があります(つまり、)。[a,b][a,b][a,b]i∈[a,b]i∈[a,b]i \in [a,b]fff[a,b][a,b][a,b]f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=⋯=f(b)f(a)=f(a+1)=\cdots=f(b) add([a,b],δ)add([a,b],δ)\text{add}([a,b],\delta)更新する必要が新しいマップにようにためのと for。、F ' 、F '(I )= F (I )+ δ I ∈ [ 、B ] F '(I )= F (I )I ∉ 〔、B ]ffff′f′f'f′(i)=f(i)+δf′(i)=f(i)+δf'(i) = f(i) + \deltai∈[a,b]i∈[a,b]i \in [a,b]f′(i)=f(i)f′(i)=f(i)f'(i) = …

1
数式がちょうど1つの満足のいく割り当てを持っているかどうかを決定する複雑さ
決定問題 ブール式を考えると、んφは、割り当てを満たす正確に一つを持っていますか?ϕϕ\phiϕϕ\phi あると見ることができる、U Pは -hard及びC O N Pは -hard。その複雑さについてもっと知られていますか?Δ2Δ2\Delta_2U PUP\mathsf{UP}c o N PcoNP\mathsf{coNP}

2
Aho-CorasickアルゴリズムとRabin-Karpアルゴリズムの比較
複数のパターン検索をサポートする文字列検索アルゴリズムに取り組んでいます。実行時間の点で最も強力な候補のように見える2つのアルゴリズム、すなわちAho-CorasickとRabin-Karpを見つけました。しかし、2つのアルゴリズムの包括的な比較は見つかりませんでした。どのアルゴリズムがより効率的ですか?また、並列計算と複数パターン検索にはどちらが適していますか?最後に、必要なハードウェアリソースが少ないのはどれですか。 ACアルゴリズムの場合、検索フェーズは時間かかりますが、RKの場合はO (n m )です。ただし、RKの実行時間はあり、ACに類似しています。私の暫定的な結論は、RKはACほど多くのメモリを必要としないため、RKは実質的に優れているように見えるということです。あれは正しいですか?O (n + m )O(n+m)O(n+m)O (n m )O(nm)O(nm)O (n + m )O(n+m)O(n+m)

1
FPTASのすべての問題がFPTにもあるのはなぜですか?
よると、多項式時間近似スキーム上のWikipediaの記事: FPTASのすべての問題は、固定パラメーターで扱いやすくなっています。 この結果は私を驚かせます-これらのクラスは互いに完全に異なっているようです。FPTASは問題を近似するのがいかに簡単かで問題を特徴付け、FPTASはいくつかのパラメーターに対する難易度で問題を特徴付けます。残念ながら、ウィキペディア(私がこの質問をしている時点では)は、これについての引用を提供していません。 この結果の標準的な証拠はありますか?または、この接続について詳しく知るために相談できる情報源はありますか?

1
「kテープ」チューリングマシンのテープを「1テープ」チューリングマシンの単一のテープにマッピングする方法
私はSipserを読んでいて、プロセスが何であるかを理解するのが難しいと感じています。k個のテープが付いたk個のチューリングマシンを提供すると、1本のテープだけで同等のチューリングマシンを吐き出すことができます。例がいいでしょう。実は、テープのTM から1テープのTMへの移行方法を示した例は、私が本当に探しているものです。私はこれまでこれを見つけることができませんでした。私も証拠を探していません。kkk

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