コンピュータサイエンス

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

3
再帰、スタック、またはキューなしでツリーをたどることができますか?
半年前、私はデータ構造クラスに座っていました。そこでは、再帰、スタック、キューなど(または他の同様のデータ構造)といくつかのポインターを使用せずに誰もがツリーを横断できる場合、教授は追加のクレジットを提供しました。私はその質問に対する明白な答えだと思ったものを思いついたが、それは教授によって最終的に受け入れられた。私は同じ学部の別の教授と一緒に離散数学クラスに座っていました。彼は、再帰、スタック、キューなどなしでツリーを横断することは不可能であり、私の解決策は無効であると主張しました。 それで、それは可能ですか、不可能ですか?なぜですか? 編集:明確化を追加するために、3つの要素(各ノードに保存されたデータと2つの子へのポインター)を持つバイナリツリーにこれを実装しました。私のソリューションは、わずかな変更を加えるだけでn項ツリーに拡張できます。 私のデータ構造の教師は、ツリーの変更に対して何の制約も課していませんでした。実際、彼自身の解決策は、子ポインターを使用してツリーを下に向けることであることがわかりました。私の離散数学教授は、ツリーの突然変異は、ツリーの数学的な定義によるとツリーではなくなったことを意味し、彼の定義は親へのポインタも排除することを言った-これは上記で解決した場合と一致します。

2
ヒープ
おそらく、この質問は以前に聞かれます。CLRS(2nd Ed)problem 6.5-8からのものです- 得マージに時間アルゴリズムをK 1つのソートされたリストの中にリストをソートし、N、すべての入力リスト内の要素の総数です。(ヒント:k方向のマージには最小ヒープを使用します。)O(nlgk)O(nlg⁡k)O(n \lg k)kkknnnkkk あるとしてリストをソートし、合計n個の値、私たちはそれぞれのリストが含まれていると仮定しましょうn個kkknnn番号、また各リストのは、厳密に昇順にソートされ、そして結果はまた、昇順に格納されます。nknk\frac{n}{k} 私の擬似コードはこのように見えます- list[k] ; k sorted lists heap[k] ; an auxiliary array to hold the min-heap result[n] ; array to store the sorted list for i := 1 to k ; O(k) do heap[i] := GET-MIN(list[i]) ; pick the first element ; and …

3
無限言語と有限言語
コンピューター理論で「無限」言語または「有限」言語というフレーズを使用するかどうかはわかりません。 私は、トラブルの根本は似た言語ということだと思うである無限のそれは無限(ただし可算)文字列の数を生成することができることを意味しました。しかし、それはまだ有限状態オートマトンによって認識できます。L = { a b }∗L={ab}∗L=\{ab\}^* また、Sipser本が実際にこの区別を行わないことも助けにはなりません(少なくとも私が知る限り)。無限/有限言語とそれらの通常言語との関係についての質問がサンプル試験で出されました。

4
実行可能な調理レシピを提案するアルゴリズムを考案する方法は?
私はかつて、料理のレシピを提案するアルゴリズムを作成したベテランを私のコースにいました。最初は、あらゆる種類のクレイジーなレシピが出てきました。その後、彼女は実際のレシピで調理アルゴリズムを訓練し、最終的には非常に良いレシピを提案します。 彼女はベイズの定理やクラスタリングに関連するものを使用したと思いますが、彼女はずっといなくなっており、アルゴリズムもそうです。私はインターネットを検索しましたが、料理のレシピを探すとどんな種類の結果も得られますが、私が探しているものではありません。だから、私の質問は: どのアルゴリズムを使用して、実行可能なレシピを(ランダムに)提案するアルゴリズムを考案できますか(固定レシピのデータベースを使用せずに)。 なぜ調理アルゴリズムを探しているのですか?まあ、それは基礎となる概念の現実世界のアプリケーションの非常に良い例であり、そのようなアルゴリズムは現実世界により近いさまざまな設定で役立つ可能性があります。

2
決定可能な非コンテキスト依存言語
日常の問題を記述するために作成されたほとんどの言語は、コンテキストに依存していると言えます。一方、再帰的ではない、または再帰的に列挙できない言語を見つけることは可能であり、難しくありません。 これらの2つのタイプの間には、再帰的な非コンテキスト依存言語があります。ウィキペディアはここに 1つの例を与えます: コンテキストに依存しない再帰言語の例は、EXPSPACEが難しい問題である再帰言語、たとえばべき乗を伴う同等の正規表現のペアのセットです。 質問:決定可能であるが、コンテキストに依存しない他の問題は何ですか?このクラスの問題は、決定可能なEXPSPACEハードと同じですか?


3
数値アルゴリズムで数値の単項表現を使用しないのはなぜですか?
擬似多項式時間アルゴリズムは、入力値(大きさ)で多項式の実行時間を持ち、入力サイズ(ビット数)で指数関数の実行時間を持つアルゴリズムです。 たとえば、数値が素数であるかどうかをテストするには、2からまでの数値をループし、 modがゼロかどうかを確認する必要があります。modがO(1)時間かかる場合、全体的な時間の複雑さはO(n)になります。n − 1 nnnnn − 1n−1n-1nnn 私私i ただし、を入力の書き込みに必要なビット数とすると、(バイナリ)であるため、あり、問題の実行時間は指数関数的なO()になります。x = log n n = 2 x 2 xバツバツxx = ログnバツ=ログ⁡nx = \log nn = 2バツn=2バツn = 2^x2バツ2バツ2^x 私の質問は、入力単項表現を考慮する場合、常にあり、擬似多項式時間は多項式時間の複雑さに等しくなります。では、なぜこれを行わないのでしょうか?x = nnnnx = nバツ=nx=n さらに、ナップザックには擬似多項式時間アルゴリズムがあるため、をとることにより、ナップザックは結果として多項式になりますP = NPx = nバツ=nx=n

6
線形代数のどの部分がコンピューターサイエンスで使用されていますか?
私は線形代数とそのアプリケーションを読んで、コンピューターサイエンスの教材(主に機械学習)の理解に役立てていますが、CSにとって多くの情報が役に立たないことを心配しています。たとえば、線形方程式のシステムを効率的に解く方法を知ることは、新しい方程式ソルバーをプログラムしようとしない限り、あまり役に立ちません。さらに、本は、行列に逆行列がある場合のスパン、線形依存性、独立性、およびこれらの間の関係について多くのことを話しましたが、CSでこれを適用することは考えられません。それでは、線形代数のどの部分がCSで使用されていますか?

5
グラフの負の重みエッジの重要性は何ですか?
私は動的なプログラミング演習をしていて、Floyd-Warshallアルゴリズムを見つけました。どうやら、負の重みのエッジを持つことができますが、負のサイクルがないグラフのすべてのペアの最短パスを見つけます。 だから、負の重みのエッジの現実世界の重要性は何だろうか?わかりやすい英語の説明が役立つでしょう。

1
2Dたたみ込み:カーネルをめくる?
そもそもなぜ2D畳み込みでカーネルを反転させる必要があるのでしょうか。これの利点は何ですか?では、なぜそれを裏返さないままにできないのでしょうか? http://www.songho.ca/dsp/convolution/convolution2d_example.html 入力 カーネル 出力 「最初に、影付きのボックスであるカーネルを水平方向と垂直方向の両方に反転させます」

4
セットの中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?
私のクラスであるRandomized Algorithmsのためにこの本を読んでいます。この特定の本では、ランダム選択を使用して配列の中央値を見つけることに専念するセクション全体があり、より効率的なアルゴリズムにつながります。今、私は、理論の改善に加えて、コンピューターサイエンスの領域で、このアルゴリズムの実用的なアプリケーションがあるかどうかを知りたかったのです。配列の中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?

1
隣人を比較せずにリストのソートを検証できますか?
その隣人にすべてのアイテムを比較することにより、ソートされたよう-itemリストを確認することができます。私のアプリケーションでは、すべてのアイテムをその隣のアイテムと比較することはできません。代わりに、遠くの要素間で比較することがあります。リストに3つ以上の項目が含まれ、また比較がサポートされる唯一の操作であることを考えると、リストがソートされていることを証明する比較の「ネットワーク」が存在しますが、少なくとも1つの隣接する近隣が欠落しています比較?nnn 正式には、要素シーケンスに対して、、、またはかどうかを知っているインデックスのペアがあります。比較のセットから欠落しているペアが存在します。それでは、シーケンスがソートされていることを証明することは可能ですか?e私eie_i(j 、k )(j,k)(j,k)ej&gt; ekej&gt;eke_j > e_kej= ekej=eke_j = e_kej&lt; ekej&lt;eke_j < e_k(l 、l + 1 )(l,l+1)(l,l+1)
14 sorting 

3
関数型プログラミングのために純粋に設計されたCPUはどう違うのでしょうか?
CPUは、人々が暗黙的または明示的に作成するソフトウェアを念頭に置いて設計されています。 命令セットアーキテクチャの設計を見ると、各命令が命令型コマンドをエンコードするという意味で、それらは非常に「命令型」であるように思えます。また、現在の命令セットアーキテクチャは、プログラマが生成するコードのタイプに部分的に基づいて進化しているようにも思えます。 関数型プログラミングスタイルで記述されたプログラムのみを実行することを知って、CPUをゼロから設計する場合、そのCPUは既存のCPUとは異なるようにどのように設計されますか?

3
0.922のシャノンエントロピー、3つの異なる値
値の文字列を考えるログベースで、シャノンエントロピーを になる。私が理解していることから、基数 切り上げられたシャノンエントロピーは、値の1つを表すためのバイナリの最小ビット数です。AAAAAAAABCAAAAAAAABCAAAAAAAABC2220.9220.9220.922222 このウィキペディアのページの紹介から引用: https://en.wikipedia.org/wiki/Entropy_%28information_theory%29 それでは、どのようにして3つの値を1ビットで表現できますか? は 、 は です。しかし、どのようにを表現できます か?AAA111BBB000CCC 前もって感謝します。

5
どのアルゴリズムでも書き込めない数の存在を証明するにはどうすればよいですか?
私には問題があります: 無限に長く実行され、その数値の10進数を書き込むプログラムが存在しない実数が存在することを示します。 私はそれを停止問題に減らすことで解決できると思いますが、どうすればいいのか分かりません。 さらに練習するために、同様の問題へのリンクも歓迎します。

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