コンピュータサイエンス

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

1
ドメイン名の圧縮
この質問は、Computer Science Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 任意のIDNホスト名(RFC5890で定義)のドメインを非常にコンパクトに圧縮する方法について興味があり、これが興味深い課題になると思われます。Unicodeホストまたはドメイン名(Uラベル)はUnicode文字の文字列で構成され、通常、トップレベルドメイン(たとえば、ギリシャ文字)に応じて1つの言語に制限され、(対応するラベル)。.grxn-- 正式な要件だけでなく、 各非Unicodeラベルは文字列一致^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$です; 各Aラベルは、一致する文字列^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$です。そして ドメイン全体の長さ(Aラベルと '。'区切り文字で連結された非IDNラベル)が255文字を超えない 次のようなさまざまなヒューリスティックからも: 下位Uラベルは、固有名詞や数字(ハイフンを除く句読点、空白が取り除かれ、Nameprepごとに折り畳まれている)を含む一部の自然言語で、字句的、構文的、意味的に有効なフレーズであることが多く、短いフレーズが優先されます。そして 高次ラベルはSLDおよびTLDの辞書から引き出され、低次ラベルで使用される自然言語を予測するためのコンテキストを提供します。 こうした短い文字列を適切に圧縮することは、データのこれらの特定の機能を考慮せずに困難になること、さらに、既存のライブラリがより一般的なユースケースに対応するために不要なオーバーヘッドを生成することを恐れます。 Matt MahoneyのオンラインブックData Compression Explainedを読むと、上記の(および/または他の)モデリングの前提を活用するために多くの既存の手法を使用して、特定のツールよりもはるかに優れた圧縮を実現できることが明らかです。 コンテキストとして、この質問はSOに関する以前の質問からの派生物です。 最初の考え この問題はオフライントレーニングの優れた候補であり、次の行に沿って圧縮データ形式を想定しています。 「パブリックサフィックス」のハフマンコーディング。ドメイン登録またはトラフィックボリュームの公開されたソースから抽出された確率。 残りのUラベルに使用される(自然言語)モデルのハフマンコーディング。ドメインサフィックスのコンテキストを指定して、ドメイン登録またはトラフィックボリュームの公開されたソースから抽出された確率。 指定された自然言語モデルからいくつかの辞書ベースの変換を適用します。そして Uラベル内の各文字の算術コーディングと、オフライントレーニングから派生した文脈適応型自然言語モデルから得られる確率

5
公開鍵を使用して、対応する秘密鍵で暗号化されたメッセージを復号化できますか?
私が公開鍵と秘密鍵のペアの使用について見てきたことから、公開鍵はメッセージの暗号化に使用され、秘密鍵は暗号化されたメッセージの復号化に使用されます。 メッセージが秘密鍵で暗号化されている場合、対応する公開鍵で解読できますか? 「はい」の場合、このケースがいつ使用されるかについて例を挙げてください。 ありがとう。

1
行の多型とサブタイピングの主な違いは何ですか
行多型はサブタイピングよりも優れたアプローチであるとよく耳にしますが、それらを詳細に比較するものを見つけるのは困難です。システムのユーザーの観点に特に興味があります。 このブログ記事に出くわしましたが、以前よりも多くの質問が残されています。たとえば、サブタイピングを備えたシステムは1つのタイプを割り当て、行タイプを備えたシステムは別のタイプを割り当てると主張します。これは、サブタイピングを意図しているシステムが「行タイピング」タイプを割り当てた場合、それが誤って主張していることを意味しますか? 私が見ている1つの大きな違いは、行の型付けにより引数の型を揃えることができることです(つまり、引数のaフィールドのみに関係するが、引数は同じフィールドを持つ必要がある2つの引数関数を書く) 。
20 typing 

2
Digit Sumシーケンスの要素を効率的に見つける方法は?
興味をそそるだけで、プロジェクトオイラーの「最近の」カテゴリ(数字の合計シーケンス)から問題を解決しようとしました 。しかし、問題を効率的に解決する方法を考えることはできません。問題は次のとおりです(元の質問シーケンスでは最初に2つありますが、シーケンスは変更されません)。 Digit Sumシーケンスは、1,2,4,8,16,23,28,38,49 ....です。ここで、シーケンスのnthnthn^{th}項は、シーケンス内でその前にある数字の合計です。シーケンスの1015th1015th10^{15}th項を見つけます。 素朴なソリューションは多くの時間がかかるため実装できません。私はこの問題を行列の累乗の場合(時間がかかる)に減らすことを試みましたが、このシーケンスの繰り返しはかなり線形であるため、このような繰り返しを見つけることはできませんでした独特の。シーケンスは繰り返しによって管理されていることがわかります。O(log(1015))O(log(1015))O(log ( 10^{15})) an=an−1+d(an−1).....(1)an=an−1+d(an−1).....(1) a_n = a_{n-1} + d( a_{n-1} ) ..... (1 ) ここでanana_nはシーケンスのnthnthn^{th}項であり、dddは入力として自然数が与えられると、その数字の桁の合計を返す関数です(例:d(786)=21d(786)=21\;d(786)=21)。2番目のアプローチは、シーケンス内のパターンを見つけることでした。シーケンスの最初のいくつかの用語は、次のように記述できることがわかります。 a_1 = 1 a_2 = 1 + d( 1 ) a_3 = 1 + d( 1 ) + d( 1 + d( 1 ) ) a_4 = 1 + d( …

2
二倍体(優性/劣性)遺伝子が遺伝的アルゴリズムで広く使用されないのはなぜですか?
この質問は、コンピューターサイエンススタック交換で回答できるため、人工知能スタック交換から移行されました。 5年前に移行され ました。 遺伝的アルゴリズムのほとんどの実装では、焦点は交差と突然変異にあります。しかし、どういうわけか、それらのほとんどは二倍体(優性/劣性)遺伝子の性質を除外しています。私の(限られた)理解に関する限り、遺伝子の優性/劣性の性質は、生物の実際の特性を決定する上で非常に重要な要素です。 だから私の質問は、ほとんどの実装で遺伝子の二倍体の性質が遺伝的アルゴリズムから除外されているのはなぜですか? 理由は: それは多くの利点を提供しません それ以外の場合は単純なアルゴリズムに不必要な複雑さを追加します 実装が難しい それとも完全に何か?

2
ベルマンフォードを使用して負のサイクルを取得
有向グラフで負のサイクルを見つけなければなりません。ベルマンフォードアルゴリズムの仕組みと、到達可能な負のサイクルがあるかどうかがわかります。ただし、明示的に名前を付けるわけではありません。 サイクルの実際のパスを取得するにはどうすればよいですか?v 1 、v 2 、… v k 、v 1v1,v2,…vk,v1v1, v2, \ldots vk, v1 標準アルゴリズムを適用した後、すでに回の反復を行っているため、それ以上の改善は不可能です。それでもノードまでの距離を短くできる場合は、負のサイクルが存在します。n − 1n−1n-1 私のアイデアは次のとおりです。パスを改善できるエッジと各ノードの先行ノードを知っているので、再びエッジに到達するまでそのエッジからさかのぼることができます。これでサイクルができました。 悲しいことに、これが正しいかどうかを伝える論文は見つかりませんでした。それで、実際にそのように機能しますか? 編集:この例は、私の考えが間違っていることを証明しています。次のグラフを考えると、ノードからBellman-Fordを実行します。111 エッジを順に処理します。回の反復の後、ノード距離を取得します:n − 1a 、b 、c 、da,b,c,da, b, c, dn − 1n−1n-1 2 :− 30 3 :− 151 :− 51:−51: -5 2 :− 302:−302: -30 3 :− 153:−153: -15 そして親テーブル:親持ち親持ち親を持っている 3 …

3
計算問題を厳密に定式化する方法は?
私はしばしば、計算の問題(またはその複雑さ)のアルゴリズムを求めたい人とやり取りしますが、私たち(コンピューター科学者)が理解するために厳密な方法でそれを表現しません。 CLRSのような本を参照することは、例えばグラフの隣接リストとその中の2つの頂点がそれらの頂点間の最短経路を計算する場合、通常は非常に簡単に厳密に述べる方法があるため、役に立たない。 CSに関する最低限の知識を持つ人が、コンピューター科学者が理解できる厳密な方法で計算問題を定式化し、述べる方法を学ぶことができる良い本(または他のリソース)はありますか? 本は、さまざまな分野や実世界の例から計算問題を厳密に定式化する方法の多くの例を持っていることが望ましい。 明確化 質問をより具体的にするために、1、2年生のCS学部生のレベルで、セット、関数、グラフ、リストなどの基本的な数学/ CSの用語を知っていると仮定しましょう(私がいる人の場合)マインド)。たとえば、AhoやUllmanのような入門書を読んだことがあります(完全に理解していないかもしれませんが)。 Al AhoおよびJeff Ullman、Foundation of Computer Science、1992年。

3
基数ソートの実用化
キーが特定の制限された範囲にあることがわかっている場合、たとえば[ 0 … n k − 1 ]の範囲の値など、基数ソートは理論的に非常に高速です。場合のk &lt; LG のnあなただけのベースに値を変換するn個とるΘ (n個)の時間を、ベース行うn個のソート基数をして、全体のためにあなたの元のベースに戻って変換するΘ (nはkの)アルゴリズム。nnn[ 0 … nk− 1 ][0…nk−1][0\dots n^k -1]k &lt; lgnk&lt;lg⁡nk<\lg nnnnΘ (n )Θ(n)\Theta(n)nnnΘ (n k )Θ(nk)\Theta(nk) ただし、実際には基数ソートは通常、たとえばランダム化されたクイックソートを実行するよりもはるかに遅いことを読みました。 大規模な配列の場合、基数ソートの命令数は最も少なくなりますが、キャッシュパフォーマンスが比較的低いため、全体的なパフォーマンスは、マージソートおよびクイックソートのメモリ最適化バージョンよりも劣ります。 基数の並べ替えは素晴らしい理論上のアルゴリズムですか、それとも一般的な実用的な用途がありますか?

1
多角形を別の多角形の内側にパックする方法は?
エッジを縫い合わせてジャグリングボールを作りたい革シートをいくつか注文しました。ボールの形状にプラトンの立体を使用しています。 革のシートをスキャンして、革のシートの形状に近いポリゴンを生成できます(ご存知のように、動物の皮であり、長方形ではありません)。 それで、ジャグリングボールのサイズを最大化したいと思います。 私の例では、ポリゴンは通常のものですが、単純なポリゴンを使用したソリューションを探しています。 すべてがシート内に収まるようにポリゴンに適用できる最大のスケールファクターは何ですか? できるだけ多くの材料を使用して、無駄を最小限に抑えようとしています。 明らかに、多面体ネットを個々の多角形にカットすると、可能な組み合わせのスペースが増加しますが、最終的なジオメトリの品質も低下します。これは、縫製が多く、エラーが蓄積されるためです。しかし、この質問は、多面体を展開するさまざまな方法を列挙することではありません。それらは独立して考えることができます。したがって、ポリゴンは単純なポリゴンです。 正式に: 入力: PPP:単純なポリゴン(ターゲット) SSS:配置したいポリゴンのセット GGG:単純なポリゴンのグラフ-各ノードは単純なポリゴンを表し、共通のエッジを共有するポリゴンの各ペア間に1つのエッジエッジがあります SnnnSSS α&gt;=0,β&gt;=0α&gt;=0,β&gt;=0\alpha >= 0, \beta >= 0(素材と接続性の使用) 出力: スケール係数fff HHH、部分グラフGGG LocLocLoc:各ポリゴンの位置と角度V(G)V(G)V(G) 解の品質尺度:M = α 。F + β 。| E (H )|mmmm=α.f+β.|E(H)||E(G)|m=α.f+β.|E(H)||E(G)| m = \alpha.f + \beta. {|E(H)|\over|E(G)|} 次の条件に従って最大化します。mmm |V(H)|=|V(G)||V(H)|=|V(G)| | V(H) | = |V(G)| (1) |E(H)|&lt;=|E(G)||E(H)|&lt;=|E(G)| | E(H) …

1
3,400万の組み合わせのピザ商業用クレーム
ピザのコマーシャルは、3400万の異なる組み合わせに成分を組み合わせることができると主張しています。私はそれを信じていなかったので、錆びた組み合わせのスキルを振り払って、それを理解しようとしました。ここに私が持っているものがあります:オンライン注文サイトから私は選択肢を得ました クラスト(4種類、1つ選択) サイズ(4種類、1を選択)いくつかのクラストは特定のサイズに制限されています-それを考慮していないが、したいです。 チーズ(5種類、1つ選択) ソース(4種類、1つ選択) ソースレベル(3種類、1つ選択) 肉(9種類、9種類まで選択) 肉以外(15種類、15個まで選択可能) だから私はこれが組み合わせの問題(順序は重要ではない)であり、nはkを選択しない問題であると考えました.nullはクラストとクラスト、サイズ、チーズ、ソースとソースのレベルがすべて1つのみを選択する場合にのみ許可されます。肉と肉以外?だからそれは次のようになります:2?2?2^? クラスト (41)=4(41)=4\binom{4}{1}=4 サイズ (41)=4(41)=4\binom{4}{1}=4 チーズ(51)=5(51)=5\binom{5}{1}=5 ソース (41)=4(41)=4\binom{4}{1}=4 ソースレベル(31)=3(31)=3\binom{3}{1}=3 肉29=51229=5122^9 = 512 肉以外215=32768215=327682^{15} = 32768 この時点で立ち往生していますが、これらを組み合わせて可能な組み合わせの総数を取得するにはどうすればよいですか? このサイトは役に立ちました。 ETA: クラストサイズの制限を考慮しない場合-一部のクラストは特定のサイズでのみ利用可能です-160億以上あります。16,106,127,360の組み合わせが利用可能なため、かなりの差がありました。

1
ロックのない、一定の更新時間の同時ツリーデータ構造?
私は最近少しの文献を読んでいて、かなり興味深いデータ構造を見つけました。 更新時間を最悪の場合の更新時間まで下げるさまざまな方法を調査しました[1-7]。O(1)O(1)\mathcal{O}(1) 最近、効率的な同時アクセスをサポートするために、ロックフリーのデータ構造の調査を開始しました。 これらの最悪の場合の更新時間技術は、ロックフリーデータ構造の実装に使用されていますか?O(1)O(1)\mathcal{O}(1) 私が尋ねるのは; 私には、それらはこの「理論的強化」の明らかな実際的な拡張のように思えます。 タージャン、ロバート・エンドレ。「O(1)ローテーションでのバランスの取れた検索ツリーの更新。」情報処理レター16、no。5(1983):253 – 257。 Driscoll、JR、N Sarnak、DD Sleator、およびRE Tarjan。「データ構造の永続化」。第18回コンピューティング理論に関する年次ACMシンポジウムの議事録、109–121。STOC '86。ニューヨーク、ニューヨーク、アメリカ:ACM、1986。 Levcopoulos、C。、およびMark H. Overmars。「O(1)最悪の場合の更新時間を備えたバランスの取れた検索ツリー。」Acta Inf。26、いいえ。3(1988年11月):269–277。 フライシャー、ルドルフ。O(1)ワーストケース更新時間を備えた単純なバランスの取れた検索ツリー ディーツ、ポールF、ラジーエフラマン。「一定の更新時間のフィンガー検索ツリー。」情報処理レター52、いいえ。3(1994):147 – 154。 Lagogiannis、George、Christos Makris、Yannis Panagis、Spyros Sioutas、Kostas Tsichlas。「最悪の場合の一定の更新時間を備えた新しい動的なバランスの取れた検索ツリー。」J. Autom。ラング。櫛。8、いいえ。4(2003年7月):607–632。 Brodal、GerthStølting、George Lagogiannis、Christos Makris、Athanasios Tsakalidis、Kostas Tsichlas。「ポインターマシンでの最適な指探索ツリー」。J。Comput。システム。科学 67、いいえ。2(2003年9月):381–418。

2
有向グラフで同じ長さの少なくとも2つのパスを見つける
有向グラフと2つのノードおよびBがあるとします。次の決定問題を計算するためのアルゴリズムが既にあるかどうかを知りたい:A BG = (V、E)G=(V,E)G=(V,E)AAABBB 同じ長さのAAAとBBBの間に少なくとも2つのパスがありますか? 複雑さはどうですか?多項式時間で解決できますか? グラフに新しい制約を追加したいのですが、おそらく問題はより解決可能です。隣接行列では、すべての列が空ではありません。したがって、すべてのノードには入力に少なくとも1つの矢印があり、少なくとも1つのノードが自身に接続されています。そのため、ノードが私ii番目のノードである場合、(i 、i )(i,i)(i,i)はグラフのエッジです。

1
入力文字列の長さの帰納法を使用して証明を書くにはどうすればよいですか?
私のコンピューティング理論コースでは、多くの問題は、入力文字列の長さの帰納法を使用して、有限オートマトンに関するステートメントを証明することを伴います。私は数学的帰納法を理解していますが、文字列が出てくると、本当につまずきます。誰かがそのような証拠を段階的に作成するプロセスを経てくれたら本当に感謝しています。 問題の例は次のとおりです(Hopcroft and Ullman 3rd Editionの演習2.2.10): 次の遷移表を持つDFAを検討してください。 0 1 ________ -&gt; A | AB * B | BA このDFAで受け入れられている言語を非公式に記述し、入力文字列の長さの帰納法により、記述が正しいことを証明します。 これは本の中で答えられた問題なので、宿題をする人を探していません。誰かが私にそれをまっすぐに説明してくれるだけです。 本の答え:(ここ から引用) オートマトンは、1の数が偶数(状態A)か奇数(状態B)かを判断し、後者の場合は受け入れます。| w |の簡単な帰納法です。wが1の偶数である場合にのみ、dh(A、w)= Aであることを示します。根拠:| w | =0。その後、空の文字列には必ず1の偶数、つまりゼロの1があり、δ-hat(A、w)= Aになります。 帰納法:wより短い文字列のステートメントを想定します。次に、w = za、ここでaは0または1です。 ケース1: a =0。wの偶数が1の場合、zも同じです。帰納的仮説により、δ-hat(A、z)=A。DFAの遷移はδ-hat(A、w)= Aを示します。wが1の奇数である場合、zも同様です。帰納的仮説、δ-hat(A、z)= B、およびDFAの遷移により、δ-hat(A、w)= Bがわかります。したがって、この場合、δ-hat(A、w)= wが1の偶数である場合に限ります。 ケース2: a =1。wの偶数が1の場合、zの奇数は1です。帰納的仮説により、δ-hat(A、z)=B。DFAの遷移はδ-hat(A、w)= Aを示します。wの奇数が1の場合、zの偶数は1の。帰納的仮説、δ-hat(A、z)= A、およびDFAの遷移により、δ-hat(A、w)= Bがわかります。したがって、この場合もδ-hat(A、w )= wが1の偶数である場合にのみ。 を帰納法で証明する方法を理解しています。私は、これが文字列の構築とどのように機能するのか混乱しています。太字の部分に混乱しています。彼らがどのように思い付いたのか、どのように受け入れられたものを実際に証明したのか、それがどのように帰納的であるのかがわかりません。∑ni = …

1
すべての十分に大きい文字列には繰り返しがありますか?
ましょ固定サイズの文字のある有限集合とします。してみましょうαを超えるいくつかの文字列でΣ。私たちは、空でない部分文字列と言うβのαがある繰り返した場合にβ = γ γ、一部の文字列のためのγ。ΣΣ\Sigmaαα\alphaΣΣ\Sigmaββ\betaαα\alphaβ=γγβ=γγ\beta = \gamma \gammaγγ\gamma さて、私の質問は以下が成り立つかどうかです。 すべてのために、いくつか存在するN ∈ N毎に文字列のようなオーバー少なくとも長さの、少なくとも一つの繰り返しが含まれています。ΣΣ\Sigman∈Nn∈Nn \in \mathbb{N}Σ N ααα\alphaΣΣ\Sigmannnαα\alpha 私はバイナリアルファベットでこれを確認しましたが、これはその場合には非常に簡単ですが、サイズ3のアルファベットはすでに確認するのがかなり難しいため、任意の大きな文法の証明が必要です。 上記の推測が当てはまる場合、他の質問で空の文字列を挿入する要求を(ほぼ)削除できます。

1
難治性/収縮性の充足可能性問題のバリアントの分類
最近、論文[1]で、2/2 / 4-SATと呼ばれるSATの特別な対称バージョンを見つけました。しかし、多くの完全なバリアントがあります。たとえば、MONOTONE NAE-3SAT、MONOTONE 1-IN-3-SAT、...NPNP\text{NP} 他のいくつかのバリアントは扱いやすいです: - SAT、Planar-NAE- SAT、...222SATSAT\text{SAT}SATSAT\text{SAT} NP完全(またはP)であることが証明された(変な)バリアントをすべて分類する調査論文(またはWebページ)はありますか?SATSAT\text{SAT}NPNP\text{NP}PP\text{P} 15パズルの x N拡張の最短解を見つけることは、NNNNNN D。RatnerとM. Warmuth(1986)によって扱いにくい

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