コンピュータサイエンス

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



2
なぜ大きな整数を因数分解するのが難しいと考えられますか?
私はどこかで、最も効率的なアルゴリズムが時間で因子を計算できることを読みましたが、私が書いたコードは、除算とモジュラスの速さに応じて、または場合によってはです。どこかで誤解したことは確かですが、どこにあるのかわかりません。擬似コード形式で記述しました。O(exp((64/9⋅b)1/3⋅(logb)2/3)O(exp⁡((64/9⋅b)1/3⋅(log⁡b)2/3)O(\exp((64/9 \cdot b)^{1/3} \cdot (\log b)^{2/3})O(n)O(n)O(n)O(nlogn)O(nlog⁡n)O(n \log n) function factor(number) -> list factors = new list if number < 0 factors.append(-1) number = -number i = 2 while i <= number while number % i == 0 factors.append(i) number /= i i++ return factors

4
オペレーティングシステムは、管理対象の同じチップ上でどのように実行できますか?
オペレーティングシステムに関する私の読み物(ウィキペディア、技術サイトなどの基本資料を読む)から、オペレーティングシステムは、プログラムとアプリケーションが効率的かつ安全な方法でハードウェアと対話できるようにするプログラムであることを学びました。 ただし、オペレーティングシステム自体を操作する必要があるときに、オペレーティングシステムがコンピューターの操作を監視する方法について混乱しています。 どういう意味ですか?オペレーティングシステムが動作すると想像する方法は、コンピューター上に2つのCPUがあるということです。1つは常にOSを実行し、もう1つはOSがコンピューターを実行するために使用します。ただし、OSは他のプロセスと同じCPUで実行されていることがわかります。これは、マネージャーが従業員と同じ生産ラインで作業しなければならないようなもので、別の従業員が作業ツールを使い終わったときにのみ電動工具を使用できるようになります。彼は、従業員が少しでも規律を欠いている場合、注文を発行することができないため、あまり効果的なマネージャーではありません。 それでは、他のすべてのプロセス間で共有する必要がある同じCPU上で、OSが一部の時間しか実行されないのはどうしてでしょうか。これはどのように解決するのですか?

3
nullノードを表すためにNILを使用する目的は何ですか?
私のAlgorithms and Data Structuresコースでは、教授、スライド、および本(Introduction to Algorithms、第3版)NILは、たとえば存在しないノード(ツリー内)の子を示すためにこの単語を使用しています。 かつて、講義中NILに、クラスメートが言ったのではなく、と言ったのですが、null教授は彼を修正しましたが、教授がこの言葉を強調する理由がわかりません。 人々NILがnull、またはnone、または他の単語の代わりに単語を使用する理由はありますか?ないNIL他の人が持っていないことをいくつかの特定の意味がありますか?歴史的な理由はありますか? また、ウェブのいくつかの場所で、たとえばのnull代わりに単語が使用されているのを見たことがあることに注意してくださいNIL。通常、この最後の単語が使用されます。

4
重複しないビットベクトルのペアを見つける
幅kのビットベクトルのリストを提供します。あなたの目標は、共通の1がない2つのビットベクトルをリストから返すか、そのようなペアが存在しないことを報告することです。nnnkkk 例えば、私があなたに与える場合次いで、唯一の解決策は{ 00110 、11000 }。代替的に、入力[ 111 、011 、110 、101 ]解を持ちません。そして、すべてゼロのビットベクトル000 ... 0と別の要素eを含むリストには、自明な解{ e 、000 ... 0 }があります。[ 00110 、01100 、11000 ][00110,01100,11000][00110, 01100, 11000]{ 00110 、11000 }{00110,11000}\{00110, 11000\}[ 111 、011 、110 、101 ][111,011,110,101][111, 011, 110, 101]000 ... 0000...0000...0eee{ e 、000 ... 0 }{e,000...0}\{e, 000...0\} 少し難しい例がありますが、解決策はありません(各行はビットベクトルで、黒い四角は1で、白い四角は0です): ■ ■ ■ ■ □ □ …


3
「ソフト」リアルタイムオペレーティングシステムが実際に提供する保証
「ハード」リアルタイムオペレーティングシステムとは何かを知っていると思います。これは、アプリケーションプログラマとの契約を提供するスケジューラを備えたオペレーティングシステムです。アプリケーションは、各リソース割り当て要求に期限を提供します。 場合は期限の要求がある実行可能な、スケジューラは、各リソースが締め切り前に要求しているアプリケーションに割り当てられることを保証します。この保証は、アプリケーションプログラマが特定のリクエストの最大レイテンシと最小スループットについて推論できるようにするのに十分です。 「ソフト」リアルタイムシステムについて私が見つけたすべての定義は、私には無意味に思えます。 ウィキペディアによると 結果の有用性は期限後に低下し、システムのサービス品質が低下します。 うーん。はい。その基準では、Windows 95はソフトリアルタイムシステムであり、3BSDもLinuxもそうでした。ウィキペディアは素晴らしい情報源ではありませんが、Googleの次のヒット数はそれほど良くありません。例えばhttp://users.ece.cmu.edu/~koopman/des_s99/real_time/は言います ソフトリアルタイムシステムでは、まれにしか発生しないピーク負荷での動作の低下は許容されます。 それは契約ではありません、それは何も言うことのない派手な方法です。 実際のオペレーティングシステムによって提供される実際のソフトリアルタイムの保証/契約の例は何ですか? 私はフォームの答えを探しています: (OS名)でプログラマーが(プログラマーが何をする必要があるか)を行うと、オペレーティングシステムは(システム保証を)保証します。

4
仕様からコンピュータプログラムを書くシステムを実際に作成した人はいますか?
コンピュータプログラムを生成するシステム(ソフトウェアまたは簡単な例を含む紙の詳細な説明)を実際に書いた人はいますか?I入力、それがリスト素数10未満ことプログラム作成 のP rがiは、mは、E (Xの)単にように定義される 1 &lt; X ∧ ∄ APrime(x)∧x&lt;10Prime(x)∧x&lt;10Prime(x) \wedge x<10Prime(x)Prime(x)Prime(x) 教授は、彼らができると言う誰も実際の完全な例を与えません。1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1<x \wedge \not\exists A\; s.t. 1<A \wedge A<x \wedge x=A\times B,\mbox{ with } A,B\in \mathbb{N}

3
経路誘導は建設的ですか?
HoTTの本を読んでいますが、経路誘導に苦労しています。 私はセクションタイプを見たとき1.12.1: それが何を意味するのかを理解するのに問題はありません(それを確認するために、メモリから型を書きました)。ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),\text{ind}_{=_A}:\prod_{C:\prod\limits_{x,y:A}(x=_Ay)\to \mathcal{U}} \left( \left(\prod_{x:A}C(x,x,\text{refl}_x)\right) \to \prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p) \right), 私が問題にしているのは次のステートメントです: 私の第一印象は、この最後の式はないということであった定義得られた関数 ちょうどそのを述べプロパティ。 F :Πは、xは、Y :A ΠのP :X = A Y C (X 、Y 、P )、with the equalityind=A(C,c,x,x,reflx):≡c(x)with the equalityind=A(C,c,x,x,reflx):≡c(x)\text{with the equality}\quad \text{ind}_{=_A}(C,c,x,x,\text{refl}_x):\equiv c(x)f:∏x,y:A∏p:x=AyC(x,y,p),f:∏x,y:A∏p:x=AyC(x,y,p),f:\prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p), すなわち、誘導原理の以前の実施例とは対照的である、または -がされている方程式の定義これらの要素のために-私たちは、実際に施設が与えられた機能を構築する方法を知っています。これは、この章全体で宣伝されている型理論の「建設性」と一致しています。 ind A + B ind NindA×BindA×B\text{ind}_{A\times B}indA+BindA+B\text{ind}_{A+B}indNindN\text{ind}_\mathbb{N} に戻ると、それが定義されていない(と思われる)ことを疑っていました。要素がちょうど存在するということは、この章の残りの部分とは調和していないように思われました。そして実際、セクション1.12.1は、私の印象は間違っていると、ストレスに思えるし、実際に我々は定義されました find=Aind=A\text{ind}_{=_A}fff ... 関数 によって定義される から経路誘導、さらに …

3
すべての入力で停止するTMがありますが、そのプロパティは証明できませんか?
すべての入力で停止するチューリングマシンはありますが、そのプロパティは何らかの理由で証明できませんか? この質問が研究されたかどうか疑問に思っています。「証明不能」とは、「限定的な」証明システムを意味する場合があることに注意してください(弱い意味では、答えはイエスであると考えられます)。もちろん、可能な限り最強の答え、つまり、ZFC集合論などのすべての入力で停止することが証明できない答えに興味があります。 これは、アッカーマン関数に当てはまる可能性がありますが、詳細は曖昧です。ウィキペディアがこの側面を明確に説明しているようには見えません。

8
OOPは実際に手続き型プログラミングのどのような問題を解決しますか?
私は本「C ++ Demystified」を研究しました。今、私はRobert Laforeによる「Turbo C ++のオブジェクト指向プログラミング初版(第1版)」を読み始めました。これらの本を超えるプログラミングの知識はありません。この本は20年前のものなので、時代遅れかもしれません。私は最新版を持っています、私はそれが好きなので古いものを使用しています。主に、ラフォーの本の初版を通してC ++で使用されるOOPの基本概念を研究しています。 Laforeの本は、「OOP」が大きくて複雑なプログラムにのみ役立つことを強調しています。すべてのOOP本(同じくLaforeの本)で、手続き型のパラダイムはエラーを起こしやすいと言われています。たとえば、グローバルデータは関数によって簡単に脆弱です。プログラマーは、誤ってデータを破壊する関数を作成するなど、手続き型言語で正直なエラーを犯す可能性があると言われています。 正直に言って、この本に記載されている説明を把握していないため、質問を投稿しています。C++(4版)のオブジェクト指向プログラミングラフォーの本に書かれたこれらのステートメントを把握していません。 オブジェクト指向プログラミングは、プログラミングへの以前のアプローチで制限が発見されたために開発されました....プログラムがますます大きく複雑になるにつれて、構造化プログラミングアプローチでさえ緊張の兆候を示し始めます... ....これらの失敗は、手続き型パラダイム自体に弱点があることを明らかにしています。構造化プログラミングのアプローチがどれほどうまく実装されていても、大規模なプログラムは過度に複雑になります。...関連する2つの問題があります。まず、関数はグローバルデータに無制限にアクセスできます。第二に、手続き型パラダイムの基礎である無関係な関数とデータは、現実世界の貧弱なモデルを提供します... 私はジェフ・ケントによる「dysmystified C ++」という本を研究しました。この本がとても好きで、この本では主に手続き型プログラミングが説明されています。手続き型(構造化)プログラミングが弱い理由がわかりません! Laforeの本は、いくつかの良い例を使って概念を非常にうまく説明しています。また、OOPは手続き型プログラミングよりも優れているというLaforeの本を読んで、直感を理解しましたが、実際には手続き型プログラミングがOOPよりも弱いことを知りたいと思います。 手続き型プログラミングで直面する実際的な問題とは何か、OOPがプログラミングを容易にする方法を自分で確認したいと思います。私はLaforeの本を黙想的に読むだけで答えが得られると思いますが、手続き型コードの問題を自分の目で見たいです。プログラムのOOPスタイルのコードが、同じプログラムが手続き型パラダイムを使用して記述されていました。 OOPには多くの機能があり、これらのすべての機能が手続き型のコードを記述することによって発生する前述のエラーをどのように除去するかを説明することは不可能だと理解しています。 だから、ここに私の質問があります: OOPは手続き型プログラミングのどの制限に対処し、実際にこれらの制限を効果的に削除するのですか? 特に、手続き型パラダイムを使用して設計するのは難しいが、OOPを使用して簡単に設計するプログラムの例はありますか? PS:https : //stackoverflow.com/q/22510004/3429430からクロス投稿

5
問題がNP完全ではないことを証明する方法は?
NP完全ではない問題を証明する一般的な手法はありますか? 試験でこの質問を受けて、問題(下記参照)がNP-Completeであるかどうかを尋ねました。私は本当の解決策を考えることができず、それがPにあることを証明しただけです。明らかにこれは本当の答えではありません。 NP-Completeは、NPに存在する問題のセットとして定義され、すべてのNP問題をそれに限定できます。したがって、これらの2つの条件のうち少なくとも1つは、証拠と矛盾するはずです。この特定の問題は、実際にはP(およびNP)にあります。したがって、NPにはこの問題に還元できない問題があることを証明することに固執しています。いったいどうやってこれを証明できるの?? 試験で与えられた特定の問題は次のとおりです。 してみましょう内の文字列の集合とする選言標準形。してみましょうD N F S A Tはから文字列の言語もD N F変数の一部譲渡により、満足できるです。D N F S A TがNP-Completeであるかどうかを示します。DNFDNFDNFDNFSATDNFSATDNFSATDNFDNFDNFDNFSATDNFSATDNFSAT


2
抽象データ構造と具象データ構造の違いは何ですか?
私は中Iソーまで、連想配列(すなわちマップ、または辞書)とハッシュテーブルは同じ概念だと思っていたウィキペディアこと バインディングの数が非常に少ないディクショナリの場合、バインディングのリンクリストであるアソシエーションリストを使用してディクショナリを実装することは理にかなっています。... 連想配列の最も頻繁に使用される汎用実装は、ハッシュテーブルを使用したものです。バインディングの配列と、考えられる各キーを配列インデックスにマッピングするハッシュ関数を使用します。... 辞書は、バイナリ検索ツリー、または基数ツリー、試行、Judy配列、van Emde Boasツリーなどの特定のタイプのキーに特化したデータ構造に格納することもできます。... だから、私の問題は、連想配列(マップや辞書など)が抽象データ型であり、ハッシュテーブルが具体的なデータ構造であり、異なる具体的なデータ構造を使用して実装できることを知らないことだと思う同じ抽象データ型。 私の質問は 抽象データ構造と具体的なデータ構造の違いと関係は何ですか? それぞれの例(抽象および具体的なデータ構造)は何ですか?より良い。 どのような抽象データ構造を実装するためにどの具体的なデータ構造を使用できるかというリストはありますか?持っているといいでしょう。

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