コンピュータサイエンス

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

9
安全なプログラミング言語とは何ですか?
安全なプログラミング言語(PL)が人気を集めています。安全なPLの正式な定義は何でしょうか。たとえば、Cは安全ではありませんが、Javaは安全です。PL自体ではなく、PL実装にプロパティ「safe」を適用する必要があると思います。もしそうなら、安全なPL実装の定義について議論しましょう。この概念を正式にしようとする私自身の試みは奇妙な結果をもたらしたので、他の意見を聞きたいと思います。すべてのPLに安全でないコマンドがあると言ってはいけません。安全なサブセットをいつでも取得できます。

8
スペースのないモールス信号は一意に解読可能ですか?
すべてのモールス符号文字列は一意に解読可能ですか?スペースなしで、 ......-...-..---.-----.-..-..-.. 可能性はありますHello Worldが、おそらく最初の文字はaです5-実際には、ドットとダッシュの任意のシーケンスが一意の翻訳を持つべきではないようです。 人は多分Kraft不等式を使用するかもしれませんが、それはプレフィックスコードにのみ適用されます。 モールス信号スペースではある接頭コードメッセージは常に一意に復号することができます。スペースを削除すると、これは事実ではなくなります。 私が正しい場合、すべてのモールス信号メッセージを一意にデコードすることはできませんが、考えられるすべてのメッセージをリストする方法はありますか?codegolf.SEで見つけたいくつかの関連する演習を次に示します。 https://codegolf.stackexchange.com/questions/36735/morse-decode-golf https://codegolf.stackexchange.com/questions/131/morse-code-translator

7
チューリングマシンは「定義上」最も強力なマシンですか?
チューリングマシンが「可能なすべての数学的問題」を実行できることに同意します。しかし、それはアルゴリズムの単なるマシン表現であるためです。最初にこれを行い、次にそれを行い、最後にそれを出力します。 解けるものはすべてアルゴリズムで表すことができるということです(正確には「解ける」の定義だからです)。それは単なるトートロジーです。ここで新しいことは何も言わなかった。 また、アルゴリズムのマシン表現を作成することにより、すべての可能な問題を解決することも新しいことではありません。これも単なるトートロジーです。基本的に、チューリングマシンが最も強力なマシンであると言われるとき、それが効果的に意味するのは、最も強力なマシンが最も強力なマシンであることです! 「最も強力な」の定義:任意の言語を受け入れることができるもの。 「アルゴリズム」の定義:何でもするためのプロセス。「アルゴリズム」のマシン表現:​​何でもできるマシン。 したがって、アルゴリズムのマシン表現が最も強力なマシンになることは論理的です。アラン・チューリングが私たちに与えた新しいものは何ですか?

5
最悪の場合、このソートアルゴリズムはΘ(n³)であり、Θ(n²)ではありませんか?
データ構造とアルゴリズムの講座を始めたばかりで、ティーチングアシスタントは整数の配列を並べ替えるための次の擬似コードを提供してくれました。 void F3() { for (int i = 1; i < n; i++) { if (A[i-1] > A[i]) { swap(i-1, i) i = 0 } } } 明確ではないかもしれませんが、ここではソートしようとしている配列のサイズです。nnnA いずれにしても、ティーチングアシスタントはクラスにこのアルゴリズムは時間(最悪の場合、私は信じている)であると説明しましたが、逆に並べ替えられた配列で何度も調べても、私には、ではなくであるように思われます。Θ (n 2)Θ (n 3)Θ(n3)Θ(n3)\Theta(n^3)Θ(n2)Θ(n2)\Theta(n^2)Θ(n3)Θ(n3)\Theta(n^3) 誰かがこれがΘ(n3)Θ(n3)Θ(n^3)ではなくΘ(n ^ 3)である理由を説明できΘ(n2)Θ(n2)Θ(n^2)ますか?



4
末尾再帰とは何ですか?
再帰の一般的な概念を知っています。クイックソートアルゴリズムを勉強しているときに、テール再帰の概念に出会いました。MITの 18:30秒のクイックソートアルゴリズムのこのビデオでは、教授はこれが末尾再帰アルゴリズムであると述べています。末尾再帰が本当に何を意味するのかは私には明らかではありません。 誰かが適切な例で概念を説明できますか? ここで SOコミュニティによって提供されたいくつかの答え。

2
NP完全問題の準指数時間アルゴリズムはありますか?
準指数時間アルゴリズムであることが証明されているNP完全問題はありますか? ここでは、一般的なケースの入力を求めていますが、扱いやすい特別なケースについては説明していません。 部分指数とは、多項式より上の成長の順序を意味しますが、指数的ではありません、たとえば。nlognnlog⁡nn^{\log n}

3
ナップザックの問題—動的プログラミングソリューションにもかかわらずNP完全ですか?
ナップザックの問題は、動的プログラミングで簡単に解決できます。動的プログラミングは多項式時間で実行されます。それが我々がそうする理由ですよね? 私はそれが実際にNP完全な問題であると読んだことがありますが、それは多項式問題で問題を解くことはおそらく不可能であることを意味するでしょう。 私の間違いはどこですか?

6
(オープン)ソースコードでの文字列の秘密の保持
Android用のアプリの開発が完了し、GPLで公開するつもりです-オープンソースにしたいです。ただし、アプリケーション(ゲーム)の性質は、なぞを尋ね、文字列リソースにコード化された回答を持っていることです。答えを公開できません!パスワードを安全に保存することを検討するように言われましたが、適切なものが見つかりませんでした。 隠された、暗号化された、または隠された文字列配列を使用してソースコードを公開することは可能ですか?たぶんオンラインデータベースから答えを読むことで? 更新 以下のYuval Filmusのソリューションが機能しました。私が最初にそれを読んだとき、私はまだそれをする方法がわかりませんでした。2番目のオプションに対するいくつかのソリューションを見つけました。ハッシュされたソリューションをソースに保存し、ユーザーが推測するたびにハッシュを計算します。javascriptでこれを行うには、http: //code.google.com/p/crypto-js/にcrypto-jsライブラリがあります。Androidの場合、MessageDigest関数を使用します。呼ばれる(fdroid / githubの上の)アプリケーションがありHashPassこれを行います。
50 arrays  security 

6
一部のゲームがnp完全なのはなぜですか?
「NP完全問題のリスト」に関するウィキペディアのエントリを読んだところ、スーパーマリオ、ポケモン、テトリス、キャンディクラッシュサガなどのゲームがnp完全であることがわかりました。ゲームのNP完全性をどのように想像できますか?回答はあまり正確である必要はありません。ゲームがnp-completeになり得るということの概要を知りたいだけです。

4
なぜ多項式時間が「効率的」と呼ばれるのですか?
コンピューターサイエンスで、せいぜい多項式の複雑さが効率的であると見なされるのはなぜですか? 実際のアプリケーション(a)では、複雑さアルゴリズムは時間内に実行されるアルゴリズム、たとえばn 80よりもはるかに高速ですが、前者は非効率であると見なされ、後者は効率的です。ロジックはどこですか?!nlognnlog⁡nn^{\log n}n80n80n^{80} (a)たとえば、宇宙の原子数は約と仮定します。1080108010^{80}


3
バイナリ検索が3項検索よりも高速なのはなぜですか?
バイナリ検索を使用して要素の配列を検索するには、最悪の場合、回の反復が必要です。これは、各ステップで検索スペースの半分をトリミングするためです。代わりに、「三分探索」を使用した場合、各反復で探索空間の3分の2を切り捨てるので、最悪の場合は反復が必要です...log 2 N log 3 N &lt; log 2 NNNNlog2Nlog2⁡N\log_2 Nlog3N&lt;log2Nlog3⁡N&lt;log2⁡N\log_3 N < \log_2 N 三項検索の方が速いように思えますが、なぜ二項検索を使用するのですか?

12
Eveが知らないうちにBobと番号を確認する方法は?
友人のボブが正しい電話番号を持っていることを確認する必要がありますが、直接尋ねることはできません。質問をカードに書いて、イブに渡さなければなりません。イブはそのカードをボブに持って行き、答えをあなたに返します。イブがあなたの電話番号を読み取れないように、ボブがメッセージをエンコードできるようにするには、質問に加えて、カードに何を書く必要がありますか? 注:この質問は、「Googleインタビューの質問」のリストにあります。その結果、ウェブ上にはこの質問のバージョンがたくさんあり、それらの多くは明確な、あるいは正解すらありません。 注2:この質問に対するひそかな答えは、ボブが「私に電話してください」と書くべきだということです。はい、それは非常に賢く、「箱の外」とすべてですが、私たちのヒーローを「ボブ」と彼の盗聴敵「イブ」と呼ぶCSの分野のテクニックを使用しません。 更新: あなたとボブの両方が手作業で合理的に完了できるアルゴリズムのボーナスポイント。 更新2: ボブは任意のメッセージを送信する必要はありませんが、イブがそれをデコードすることなく正しい電話番号を持っていることを確認するだけであることに注意してください。

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