コンピュータサイエンス

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

3
サブセット合計要件
次の問題を考えてください。 セットを考える SSS 整数の、関数 f:Z → Zf:Z→Zf : \mathbb{Z} \to \mathbb{Z} そして k∈Zk∈Zk \in \mathbb{Z}、あるかどうかを決定 X⊆SX⊆SX \subseteq S そのような f(∑x∈Xx)=kf(∑x∈Xx)=kf\left(\sum_{x\in X}x\right)=k。 これはまだサブセット合計問題と見なされますか? たとえば、 S={−7,−3,−2,5,8}S={−7,−3,−2,5,8}\qquad \displaystyle S=\{ −7, −3, −2, 5, 8\} そして k=0k=0k=0、サブセットを見つける XXX そのような f(∑x∈Xx)=0f(∑x∈Xx)=0f\left(\sum_{x\in X}x\right)=0 ために f(y)=−3+yf(y)=−3+yf(y)=-3+y。この場合、解決策はX={−3,−2,8}X={−3,−2,8}X=\{ -3,-2,8 \}。

2
2つの要素は常に部分的に順序付けられたセット内の関係にありますか?
部分的に順序付けられたセットでは、セットから任意の2つの要素を常に順序付けできますか?または、セット内の2つの要素が互いに順序関係を持たない可能性はありますか? たとえば、3つの要素ととがある場合、またはどちらを保持する必要がありますか?{a,b,c}{a,b,c}\{a, b, c\}a≤ba≤ba \leq ba≤ca≤ca \leq cb≤cb≤cb \leq cc≤bc≤bc \leq b これは、プログラミング言語のセマンティクス(whileループの表記)の固定小数点理論を理解するために必要です。

1
LALR文法でのreduce reduceおよびshift reduce error
Pascalの文法を書く必要がありますが、問題を引き起こしていることが1つだけあります。 演算子があるとしましょう(優先度の低いものから高いものに並べ替えられます)。 Postfix^。 接頭辞^。 [ ]、及び.、(同じ優先順位と左連想)。 唯一の終端はid小文字であるです。 次に、式が次のとおりだとします。 任意のID。 Postfix^演算子を使用した式。 プレフィックス^演算子を含む任意の式。 が.後に続く任意の式id。 とを含む任意の式[および]。 次に、shift-reduceとreduce-reduceの競合なしにLALR文法を作成する方法、またはそれができない場合は、それができないことをどのように証明できるかを知りたいです。 いくつかの例: good: a.b.c.d a.b^.c ^a.b^ a.b^^[c]^^.d.e ^^a.b^.d.e^[] bad: a.^b.c 接頭辞がなければ^、この問題は簡単に解決できますが、接頭辞の記号が原因で問題が解決しません。誰か助けてもらえますか?これまでの私の解決策: // this works without the prefix but it does not produce a.b^.c which is wrong. A ::= B | A ^ ; B ::= C | …

3
ディオファントス方程式の解はどのように言語として表現できますか?
質問を受けました 次の言語はチョムスキー階層のどこに適合しますか? ディオファントス方程式非負の解。(x,y)(x,y)(x,y)3x−y=13x−y=13x-y=1 ような言語は理解できますが、この言語では混乱します。言語の単語はどのように見えますか?文法や正規表現を使用してそれをどのように表現できますか?L={0n1n∣n≥1}L={0n1n∣n≥1}L = \{ 0^n1^n \mid n \ge 1\}


1
全体的な実行時間を最小化するための負荷分散スキームの分析
特定の並列アプリケーションがマスタースレーブ設計を使用して多数のワークロードを処理するとします。各ワークロードは完了するまでに数サイクルかかります。特定のワークロードにかかるサイクル数は、既知の確率変数によって与えられます。そのようなワークロードが、同等のスレーブ(処理ノード)があると想定します。当然、この質問のより一般的なバージョンは、異なる機能のスレーブのケースに対処しますが、今のところこれは無視します。XXXnnnmmm マスターはワークロードを処理できませんが、ワークロードをスレーブノードに分散し、スレーブノードの進行状況を監視できます。具体的には、マスターは次のアクションを実行できます。 空きノードのワークロードの処理を即座に開始します。kkk 以前に開始されたワークロードのバッチのノードによる完了の確認を瞬時に受信します。kkk いつでも、瞬時に、すべてのノードの状態(空きまたはビジー)、完了したワークロードの数、および残っているワークロードの数を特定します。 簡単にするために、が除算すると仮定します。kkknnn すべてのスレーブを使用してすべてのワークロードの合計実行時間を最小化するための負荷分散戦略には少なくとも2つのカテゴリがあります(明確にするために、総処理時間ではなく、メイクスパンまたは実時間について話します。これは、この質問で行われている単純化の仮定の下で使用されている負荷分散戦略):静的および動的。静的スキームでは、すべての配置決定は時間で行われ。動的スキームでは、マスターは一部のスレーブによって行われている進行状況に関する情報を使用して配置決定を行うことができるため、より良い使用率を達成できます(実際には、静的スケジューリングと比較して動的スケジューリングに関連するオーバーヘッドがありますが、これらは無視してください)。今いくつかの質問のために:t=0t=0t = 0 ワークロードを静的にスケジュールするには、スレーブ間でワークロードのバッチをできるだけ均等に分割するよりも良い方法があります(簡単にするために、は分割するので、バッチを完全に均等に静的にスケジュールできると仮定することもできます)。 ?もしそうなら、どうですか?kkkmmmmmmn/kn/kn/k 最適な静的スケジューリングポリシーを使用して、の平均および標準偏差に関して、総実行時間の平均および標準偏差はどうあるべきですか?μμ\muσσ\sigmaXXX 単純なダイナミック・ロード・バランサは、スケジュール可能性がのバッチ最初に各スレーブへ作業負荷を、次に、ノードは初期完了するとバッチを、追加のバッチスケジュール先着順に各スレーブへ作業負荷を。したがって、2つのスレーブノードが最初にそれぞれ2つのワークロードの2つのバッチをスケジュールし、最初のスレーブが2つのバッチを完了すると、最初のスレーブに追加のバッチがスケジュールされ、2番目のスレーブは動作し続けます。最初のスレーブが2番目のバッチが最初の作業を完了する前に新しいバッチを完了すると、マスターは最初のスレーブへのスケジューリングを続行します。2番目のスレーブが作業の実行を完了すると、新しいワークロードのバッチが発行されます。例:iiikkkiiikkk DYNAMIC STATIC POLICY POLICY slave1 slave2 slave1 slave2 ------ ------ ------ ------ t<0 -- -- -- -- t<1 batch1 batch3 batch1 batch3 batch2 batch4 batch2 batch4 batch5 batch7 batch6 batch8 t=1 -- batch3 batch5 batch3 batch4 batch6 …

1
最短経路グラフに還元できるすべての特別なグラフを見つける
有向加重グラフがあります G = (V、E、W)G=(V,E,W)G = (V, E, W)。常に頂点からのエッジがあります私ii 別のものに jjj、 重量 w (i 、j )w(i,j)w(i,j) 正の無限大である可能性があり、負のサイクルは存在しません。 一部のアルゴリズムを実行すると、頂点のすべてのペア間の最短パスの長さ(合計重み)が検出されますが、パス自体の詳細は返されません。たとえば、Floyd–Warshallアルゴリズムは単純であり、機能します。結果を次のように表しますG′=(V,E,W′)G′=(V,E,W′)G' = (V, E, W')。 に G′G′G'、からのエッジの可能性があります iii に jjj、 w′(i,j)=w′(i,k0)+w′(k0,k1)+⋯+w′(kn,j)w′(i,j)=w′(i,k0)+w′(k0,k1)+⋯+w′(kn,j)w'(i,j) = w'(i, k_0) + w'(k_0, k_1) + \dots + w'(k_n, j)。から作りましょうG′G′G' 別のグラフ G′′G″G''を除いて、任意の要素はと同じです。そこで我々は、最短経路の実行は、アルゴリズムにいることを知っている与える。G′G′G'w′′(i,j)=∞≠w′(i,j)w″(i,j)=∞≠w′(i,j)w''(i,j) = \infty \neq w'(i,j)G′′G″G''G′G′G' したがって、与えられた場合、すべてのと、となるように、ようなすべてのグラフを見つけたいと思います。とは、最短経路アルゴリズムを使用して減らすことができます。G′G′G'G′′G″G''iiijjjw′′(i,j)∈{w′(i,j),∞}w″(i,j)∈{w′(i,j),∞}w''(i,j) \in \{ w'(i,j), \infty\}G′′G″G''G′G′G' 私の質問が明確であることを願っています...これのアルゴリズムがすでに存在するかどうかわかりませんが、誰かが何か考えを持っていますか?

4
アルゴリズムのループ不変式
ペアの合計の問題の次の疑似コードを開発しました。 与えられた配列 AAA 整数と整数の bbb、位置があり、場合はYESを返し、それ以外の場合はNOを返します。i,ji,ji,jAAAA[i]+A[j]=bA[i]+A[j]=bA[i] + A[j] = b 次に、私のアルゴリズムが正しいことを示すループ不変条件を記述します。誰かが有効なループ不変のヒントを教えてくれますか? PAIRSUM(A,b): YES := true; NO := false; n := length(A); if n<2 then return NO; SORT(A); i := 1; j := n; while i < j do // Here I should state my invariant currentSum := A[i] + A[j]; if …

1
文脈自由文法をPDAに変換する—私のソリューションは正しいですか?
私は私の中間期を検討していて、誰かがエラーを見つけることができるかどうかを確認するためにこれを投稿したいと思います。私はこのCFGを認識するPDAを作成することになっています: SR→ R 1 R 1 R 1→ 0 R | 1 R | εS→R1R1R1R→0R|1R|ε\qquad\begin{align} S &\to R1R1R1 \\ R &\to 0R \mid 1R \mid \varepsilon \end{align} これが私の解決策です。私は自分の受け入れ状態の周りに2番目の円を描くのを忘れたことを知っています。

2
計算可能な関数ごとに同等の演算回路はありますか?
計算可能な関数ごとに同等の演算回路はありますか? 私は上記の発言に頭を抱えていますが、その発言は誤りであると思いますが、反例は見つかりませんでした。 私が不思議に思ったのは、プロトコル(暗号化プロトコル理論)は計算可能な関数を計算できるが、その関数を算術回路として指定する必要があるといういくつかの定理を読んだことです。

1
一般的なソフトウェアで使用されるデータ構造に関する情報はどこにありますか?
私がデータ構造について教えているコースの一部として、学生に一般的なソフトウェア/サービスでのデータ構造の使用を調査して提示してもらいたいです。ただし、基本的なグーグル検索では、この情報がすぐに利用できないことがわかります。 誰かが私に学生と共有する可能性のある適切なリソースを彼らの研究の出発点として私に示すことができますか? 編集 受け取った回答から判断すると、元の質問は十分に明確ではないため、詳細を追加します。 たとえば、service-xがdata-structure-aを使用して、property-bのために機能性yを実行するというタイプのリソースを探しています。これは理想的なケースです。同様の情報を提供する他のリソースも歓迎します。

1
3次スプラインの最大曲率を計算する効率的な方法
2D 3次スプライン(ベジェ)があり、そのスプラインを離散化したポリゴンラインがあります。 滑らかな表現または離散ポリラインのいずれかを使用して、スプラインの最大曲率を計算する方法を実装するための効率的で簡単な方法はありますか?それはゲーム用であるため、正確である必要はありません。約10%のエラーは完全に許容されます。 別の言い回し:知りたいのですが、スプラインに沿って一定の速度で運転している車を運転する場合、ハンドルを切るためにハンドルを回さなければならない最大の度合いはどのくらいでしょうか?

1
パレートフロンティア要素を見つけるオンラインアルゴリズム
要素のストリームを取得し、パレートフロンティアにある要素(たとえば、すべての非支配要素)を保持するオンラインアルゴリズムを探しています。 例えば。以下の入力が与えられると、保持されているパレートフロンティアセットは次のように進化します。 (3,7) 要素b / cを挿入します最初の要素です パレートセットに含まれるもの {(3,7)} (7,3) 最初に支配されていない要素b / cを挿入します パレートセットに含まれるもの {(3,7), (7,3)} (8,4) 支配されていない要素b / cを挿入します。(7,3)両方の次元で支配されているものを削除する パレートセットに含まれるもの {(3,7), (8,4)} (1,1) 両方の次元で支配的であるため、挿入しないでください パレートセットに含まれるもの {(3,7), (8,4)} (9,9) 支配されていない要素b / cを挿入します。他のすべての要素を削除します。これは、両方の次元でそれらを支配するためです パレートセットに含まれるもの {(9,9)} 私の例では2タプルを使用していますが、「小さい」N(たとえば、<10)のNタプルを処理できるアルゴリズムを探しています。 素朴な解決策は、各要素を現在セット内のすべての要素と比較することです。実際には、素朴なアプローチはそれほど悪くないかもしれません(例えば、サブO(n2)O(n2)O(n^2))要素は比較セットによって定期的に排除されるためです。しかし、このための効率的なアルゴリズムが知られているかどうか疑問に思っていました。メモリの効率と計算の複雑さに興味があります。(ハ!そして実際のところ、メモリと計算の複雑さに関してパレート最適であるアルゴリズムのセットを探しています。) これの私の現在のアプリケーションは、最も関連性の高いドキュメント(検索エンジンの一般的な使用例)を収集しないが、指定された次元に沿ってパレート最適ドキュメントを収集するLucene検索ドキュメントの構築Collectorです。

2
もし
誰かが私に言った ログログ\log計算を簡単にするために関数が導入されました。計算する必要がある場合x yバツyxy、代わりに計算できます ログx + ログyログ⁡バツ+ログ⁡y\log x+\log y 以来 ログx y= ログx + ログyログ⁡バツy=ログ⁡バツ+ログ⁡y\log xy=\log x+\log y。これはどのように計算を簡単にすることができますか?数学者の視点からかもしれませんが、コンピューター科学者の視点はどうでしょうか? それが計算をより簡単にするならば、なぜ人々はそれを使って乗算アルゴリズムの複雑さを単純化しないのですか? 私の考えでは、この変換は計算をより困難にします。どのように計算できますかログバツログ⁡バツ\log x そして expバツexp⁡バツ\exp x コンピュータで機能する? 私は正しいですか?何か提案してください?お時間をいただきありがとうございます。

4
プロセススケジューリングにおける護送効果
私が護送船団の効果を理解しているように、道路システムの車両通行の状況で。動きの遅い車両グループがシステムを通過するため、コンボイの影響を直接受けていないエリアでも交通が遅くなります。 これは、CPUスケジューリングのコンテキストでどのように適用されますか?これは類似の状況ではないようです。

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