タグ付けされた質問 「sets」

有限および無限のセットとマルチセット、関連するデータ構造と概念に関する質問。

4
セットとタイプのセマンティックの違いは何ですか?
編集:カテゴリとセットの違いについて同様の質問をしました。 型理論(確かに非公式ですが)について読むたびに、具体的には集合論とどう違うのかを本当に理解できません。 「xはセットXに属している」と「xはタイプXである」という概念的な違いがあることを理解しています。それにもかかわらず、セットもしばしばプロパティに従って定義されます。もしそうであれば、この区別がどのように重要であるかを理解するのに苦労しています。 だから、ほとんどの中で具体的な可能性のある方法、まさにそれがない暗示 についてxxx T S、それは型であることを言ってそれは集合の要素であると言っに比べて、?TTTSSS (比較を最も明確にする任意のタイプとセットを選択できます)。
33 type-theory  sets 

5
ブール検索の説明
母は、ある種の司書になるためにオンラインコースを受講しています。このコースでは、ブール検索を扱っているため、データベースを効率的に検索できますが、次のような質問がありました。 「x OR y」を検索すると、105 000ヒットになりますが、xのみを検索すると80 000ヒットになり、yのみを検索すると35 000ヒットになります。個々の検索を組み合わせて115 000ヒットするのに、なぜ検索 "x OR y"は105 000ヒットするのですか? 私にとってこれは奇妙に聞こえたので、baconとsandwichという言葉を使って自分でテストしました。 ベーコンのみが179 000 000の結果をもたらしました 312 000 000の結果が得られたのはサンドイッチのみ ベーコンORサンドイッチの結果は491 000 000でした しかし、私にとっては、合計:179 000 000(ベーコン)+ 312 000 000(サンドイッチ)= 491 000 000(ベーコンまたはサンドイッチ) ORクエリの結果、個々のクエリを両方組み合わせた場合よりもヒットが少ないのはなぜですか
29 sets  counting 

6
in O(n)time:比較が推移的でないセット内で最大の要素を見つける
タイトルは質問を述べています。 入力として要素のリストがあり、比較することができます(どちらが最も大きいかを判断します)。要素を等しくすることはできません。 キーポイント: 比較は推移的ではありません(じゃんけんを考えてください):これは本当です:A> B、B> C、C> A (ここに有効な答えがないので、これは有効な入力ではないことに注意してください。非推移的比較」という意味) 各入力配列には答えがあることが保証されます 最大は、要素が他のすべての要素よりも大きくなければならないことを意味します 逆の性質が成り立つ、すなわちA> BはB <Aを意味する 例: Input: [A,B,C,D] A > B, B > C, C > A D > A, D > B, D > C Output: D O(n)時間でこれを行う方法がわかりません。私の最善の解決策はO(n ^ 2)です。 答えを確実にするために、要素が他のすべての要素と明示的に比較され、それが実際に答えであることを証明する必要があるという事実のために、すべてのアプローチにこだわっています(比較は推移的ではないため)。 これは、ヒープ、ソートなどの使用を除外します。

1
パーティションの洗練に基づくアルゴリズムが対数線形時間よりも高速に実行される問題
パーティションの洗練は、オブジェクトの有限セットから始めて、セットを徐々に分割する手法です。DFA最小化などの一部の問題は、パーティションの洗練を非常に効率的に使用して解決できます。ウィキペディアのページにリストされているもの以外のパーティションの改良を使用して通常解決される他の問題は知りません。これらすべての問題のうち、ウィキペディアのページでは、パーティションの洗練に基づくアルゴリズムが線形時間で実行される2つについて言及しています。辞書編集的に順序付けられたトポロジカルソート[1]と辞書編集幅優先検索アルゴリズム[2]があります。 パーティションの絞り込みを非常に効率的に使用して解決できる問題の例や参考文献はありますか? [1] Sethi、Ravi、「2つのプロセッサでのグラフのスケジューリング」、SIAM Journal on Computing 5(1):73–82、1976 [2] Rose、DJ、Tarjan、RE、Lueker、GS、「グラフ上の頂点除去のアルゴリズム的側面」、SIAM Journal on Computing 5(2):266–283、1976

4
セット交差点のデータ構造?
次の操作をサポートするセットの集合を保持するデータ構造はありますか?準線形の実行時間はありがたいですか? 空のセットを初期化します。 セットに要素を追加します。 2つのセットを指定して、それらが交差するかどうかを報告します。

4
セットのセットが与えられると、各セットから少なくとも1つの要素を含む最小のセットを見つけます。
集合を考えるとセットの、私はセットを見つけるしたいMは、すべてセットするようなSにおけるSは、少なくとも一つの要素が含まMを。また、この基準を満たしながら、Mにできるだけ少ない要素を含めるようにしますが、このプロパティには複数の最小のMが存在する場合があります(ソリューションは必ずしも一意ではありません)。SS\mathbf{S}MMMSSSSS\mathbf{S}MMMMMMMMM 具体例として、セットが国旗のセットであり、Sの各フラグSの要素がその国旗で使用される色であると仮定します。米国はS = { r e d 、w h i t e 、b l u e }であり、モロッコはS = { r e d 、g r e e n }です。その後、MSS\mathbf{S}SSSSS\mathbf{S}S={red,white,blue}S={red,white,blue}S = \{red, white, blue\}S={red,green}S={red,green}S = \{red, green\}MMMは、すべての国旗がの色の少なくとも1つを使用するプロパティを持つ色のセットです。(青、黒、赤、緑、黄、白のオリンピック色は、このようなMの例であり、少なくとも1920年にはそうでした。)MMMMMM この問題の一般的な名前はありますか?セットを見つけるために受け入れられた「最良の」アルゴリズムはありますか?(計算の複雑さのためにプロセスを最適化するよりも、ソリューション自体に興味があります。)MMM

5
要素の最大のセットを見つける方法
アルゴリズムに問題があります。 TTTnnnSSSTTTA ∈ Sa∈Sa\in Sa⩾|S|a⩾|S|a\geqslant |S| 例えば: 場合 = [1、3、4、1、3、6]、その後、、[3,3]、[6]又は[3、4、6]又は[4、3、6]とすることができます。STTTSSS で = [7,5、1、1,7、4]、次いで [7、5,7、4]です。STTTSSS この再帰関数を試しました。 function(T): if minimum(T) >= length(T): return T else: return function(T\minimum(T)) 非再帰的なアルゴリズムはありますか?(再帰アルゴリズムをチェックしなかったため、いくつかの欠陥がある可能性があります。)

4
2つの大きなセット間のセットの差の計算
整数と 2つの大きなセットがあります。各セットには約100万のエントリがあり、各エントリは最大10桁の正の整数です。 BAAABBB およびを計算する最適なアルゴリズムは何ですか?つまり、ないのエントリのリストを効率的に計算するにはどうすればよいですか?これらの操作を効率的にするために、これら2つのセットを表すのに最適なデータ構造は何でしょうか?B ∖ A A BA ∖ BA∖BA\setminus BB ∖ AB∖AB\setminus AAAABBB 私が思いつく最良の方法は、これらの2つのセットをソート済みリストとして保存し、のすべての要素をすべての要素と線形に比較することです。もっと良くできますか?BAAABBB

4
「指紋」セットを見つける
10人がいて、それぞれにお気に入りの本のリストがあるとします。ある人Xについて、Xだけが好きなXの本の特別なサブセットを見つけたいと思います。つまり、Xの特別なサブセットのすべての本を好きな人は他にいません。私はこの特別なサブセットをXのユニークな「指紋」と考えています。 そのようなセットを見つけるためのアプローチについての提案をいただければ幸いです。(これは宿題のように見えますが、私が解決しようとしている私の生物学研究の問題に関連しています。)
11 algorithms  sets 

4
カテゴリとセットの意味上の違いは何ですか?
この質問では、setとtypeの違いは何かを尋ねました。これらの回答は本当に明確になっているため(たとえば、@ AndrejBauer)、知識への渇望の中で、カテゴリについて同じことを尋ねる誘惑に服します。 カテゴリ理論(確かにかなり非公式です)について読むたびに、それが集合論と具体的にどう違うのか本当に理解できません。 したがって、可能な限り最も具体的な方法では、と言うのと比較して、カテゴリにあると言うことはについて正確に何を意味し ますか?(例えば、がグループであると言うことと、がカテゴリーと言うことの違いは何ですか?)xxxX ∈ S X X G R PCCCx∈Sx∈Sx\in SxxxxxxGrpGrp\mathrm {Grp} (比較を最も明確にする任意のカテゴリとセットを選択できます)。

1
セットのパーティションを表すコンパクトな方法は何ですか?
セットパーティションを表すための効率的なデータ構造が存在します。これらのデータ構造は、UnionやFindなどの操作には時間的に複雑ですが、スペース効率は特に高くありません。 セットのパーティションを表すスペース効率の良い方法は何ですか? 以下は、考えられる開始点の1つです。 N個の要素 を持つセットのパーティション数は、N番目のベル数であるB Nであることを知っています。したがって、N個の要素を持つセットのパーティションを表すための最適な空間の複雑さは、 log 2(B N)ビットです。そのような表現を見つけるために、(N要素のセットのパーティションのセット)と(1からB Nまでの整数のセット)の間の1対1のマッピングを探すことができます。NNNBNBNB_NNNNNNNログ2(BN)log2⁡(BN)\log_2(B_N)NNN111BNBNB_N 計算するのに効率的なそのようなマッピングはありますか?「効率的」とは、このコンパクトな表現を、またはlog 2(B N)の時間多項式で、操作が簡単な表現(リストのリストなど)との間で変換したいということです。NNNログ2(BN)log2⁡(BN)\log_2(B_N)


2
少ないメモリフットプリントでセット実装を探す
セットデータタイプの実装を探しています。つまり、 サイズuのユニバースU = \ {0、1、2、3、\ dots、u – 1 \}からの動的サブセットSSS(サイズnnn)を維持します。U={0,1,2,3,…,u–1}U={0,1,2,3,…,u–1}U = \{0, 1, 2, 3, \dots , u – 1\}uuu 操作insert(x)(要素xをSに追加SSS)およびfind(x)(要素xがSのメンバーかどうかをチェックSSS) 他の操作は気にしません。オリエンテーションについては、私が使用しているアプリケーションでu≈1010u≈1010u \approx 10^{10}ます。 時間O(1)O(1)O(1)で両方の操作を提供する実装を知っているので、主にデータ構造のサイズを心配します。何十億ものエントリを期待していますが、できるだけスワッピングを避けたいです。 必要に応じて、ランタイムを犠牲にしてもかまいません。O(\ log n)の償却実行時間O(logn)O(log⁡n)O(\log n)は、私が認めることができるものです。予想されるランタイムまたは\ omega(\ log n)のランタイムω(logn)ω(log⁡n)\omega(\log n)は許可されません。 私の考えの1つは、SSSを範囲の和集合として表すことができれば[xmin, xmax]、パフォーマンスがいくらか低下する代わりに、ストレージサイズを節約できるということです。また、など、他のいくつかのデータパターンも可能[0, 2, 4, 6]です。 そのようなことを行うことができるデータ構造を私に教えてもらえますか?

1
現代の正規表現の表現力
私は最近、主に単語のグループを特別なプロパティと照合する正規表現の課題を提案するWebサイトについて友人と話し合いました。彼は||||||||、数|が素数であるような文字列に一致する正規表現を探していました。そのような言語は、通常であれば、補題をポンプの翻訳が素数のためにあるという事実与えますので、私はすぐにそれが今まで動作しません彼に言われた十分な大きさ、それが存在するのk ≤ pがあるようP + N kは、すべての主要ですN ≥ - 1、よく、これは全くケースしにくい(素数の配分、そのような未知の自明とプロパティを破砕、...)pppk≤pk≤pk \leq pp+nkp+nkp + nkn≥−1n≥−1n \geq -1 しかし、誰かが解決策に付属している:一致しない(||+?)\1+ キャプチャグループに一致するように、この表現しようとする(つまりすることができ||、|||、||||などの上の出現箇所)のn ≥ 2回。一致する場合、文字列で表される数はkで割り切れるので、素数ではありません。それ以外の場合です。k≥2k≥2k \geq 2|n≥2n≥2n \geq 2kkk そして、グループ化と後方参照により、正規表現が理論的な意味で...正規表現よりも実際にはるかに表現力豊かになることが明らかになったので、私は愚かに感じました。今では、実際の正規表現を実行するときに私が知らなかったルックアラウンドやその他の演算子も追加されました。 ウィキペディアによると、文脈自由文法によって生成された言語よりもさらに表現力があります。だからここに私の質問があります: 現代の正規表現エンジンを使用して、(文脈自由文法から生成された)代数言語を表現できますか より一般的な説明、または現代の正規表現で説明できる言語の種類の複雑さの少なくとも上限はありますか? より実用的には、その背後に深刻な理論がありますか、それとも有限オートマトンに基づく実際の正規表現の最初のブロックに実装可能と思われるたびに新しい機能を追加するだけですか? 「モダンな正規表現」は質問が具体的ではないことを知っていますが、少なくとも後方参照を使用することを意味します。もちろん、この「現代の正規表現」言語に対する特定の制限を想定している部分的な回答者がいる場合は、遠慮なく投稿してください。

2
独立セットとセットパッキングの同等性
ウィキペディアによると、独立集合問題は集合パッキングの特殊なケースです問題の。しかし、これらの問題は同等であるように私には思えます。 独立集合探索問題がある:グラフ所与G(V,E)G(V,E)G(V,E)及び整数nnn、検索nnn隣接しない2つがの頂点。 セットのパッキング探索問題がされて:有限コレクション与えられたの有限集合の整数、見つけるCCCnnnnnn対毎の互いに素であるセット。 次の双方向の削減に基づいて、それらは同等であると思います。 →:グラフ上の独立した集合問題を考えて、集合ののコレクションを作成します。各頂点に対して、隣接するすべてのエッジを含む集合があります。ここで、すべてのパッキングセットは、2つの頂点が共通していない頂点のセットに対応します。つまり、これはの同じサイズの独立したセットです。G(V,E)G(V,E)G(V,E)CCCv∈Vv∈Vv \in VSv∈CSv∈CS_v \in CvvvCCCGGG ←:コレクションセットパッキング問題をとして、すべてのセットに頂点があり、と間にエッジがあるグラフ作成します。セットと交差する場合、。ここで、すべての独立した頂点セットは、2つが交差しないセットのセットに対応します。つまり、これは同じサイズののセットパッキングです。CCCG(V,E)G(V,E)G(V,E)S∈CS∈CS \in CvS∈VvS∈Vv_S \in VvS1vS1v_{S_1}vS2vS2v_{S_2}S1S1S_1S2S2S_2GGGCCCCCC 私の質問は、私の削減は正しいですか?もしそうなら、これらの問題は同等ですか?ある問題に対して他の問題に対して近似アルゴリズムを使用することは可能ですか?

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