0

0 と 1 で埋める 11x84 の配列があります。0 と 1 のマトリックスのすべての可能な組み合わせを作成し、それらを sql に保存したいと考えています (実際にはツリー内に移動したい)。結果は巨大(2 ^ 924)になり、プログラムは配列[11,84]を生成し、可能な組み合わせを1つ作成した後、データベースに保存する必要があるため、後でそれらを1つずつ読み取り、それらに対して別の計算を行うことができます.

私はc#MsSql 2008を使用しています。

SQL データベースに使用するデータの種類と、テーブルのセットアップ方法を知りたいですか?

各配列を文字列として保存しますか? 924 文字の文字列になります。( 11x84=924 )。文字列は効率的な方法ですか?

または、配列をデータベースに配列として配置するためのより良い解決策はありますか? バイトストリームまたはその他の種類を使用しますか?

4

2 に答える 2

8

したがって、924 文字の文字列があり、その中に可能なすべての 1 と 0 の値を作成することを計画している場合、2^924 バイトのデータを保持する必要があり、これはインターネットのサイズの約 10^254 倍に相当します。今日。

しかし、これにもどれくらいの時間がかかるか知りたいと思うでしょう。

これをいつでもすぐに実行したいと仮定すると、現時点で世界最速のスーパーコンピューターである Tianhe-2 を使用します。このスーパーコンピューターは毎秒 33,860 兆回の計算を実行します。SINGLE 数の生成に 1 回の計算しかかからないと仮定すると (ちなみに、これは非常に過小評価されています)、約 10^261 秒、または約 10^251 ミレニアを見ています。

近づいて!

したがって、(信じられないほど大雑把に)1 eon を 5 億年と宣言すると仮定すると、appx を見ています。10^245 イオン。ひも理論の周期的な宇宙 ( http://discovermagazine.com/2008/apr/25-3-theories-that-might-blow-up-the-big-bang#.UcCgovnqneo )の 1 つの仮定を取ると、それは起こるでしょう。約1兆年ごとに(つまり2000年ごとに)、そのappxを見つけます。データの計算が終了するまでに、10^242 回の宇宙の再現が行われていることになります。

「でもそんなに待ちたくない!」

良いニュースがあります。これらの数値を使用すると (これが私の計算があいまいになるところです)、10^242 の宇宙の再現が得られます。レクリエーションごとに appx がある365 days * 500 million years * 2000 eonsため、これが完了するまでに合計で約 3.65 * 10^256 日かかります。したがって、 を取得する(3.65 * 10^256) mod 365と、10^242 回前に宇宙の再作成を開始したと仮定すると、タスクを完了するのにちょうど 0 日かかることがわかります。

お腹が空いたので、ピザを持ってきてくれることを願っています(私たちのこの量子世界で時制について話すのはとても難しいです)。

著者注:これは char 配列を想定しています。ビット配列が使用される場合、すべての計算は 2^921 の基数 (8 ではなく「文字」あたり 1 ビット) を使用して計算されるため、計算が短縮されます。

于 2013-06-18T18:19:11.460 に答える
1

さて、この種のデータを格納するには、最もコンパクトな形式は BitArray になると思います。参照については、こちらを参照してください: http://msdn.microsoft.com/en-us/library/system.collections.bitarray.aspx

しかし、あなたの計算が正しければ (そして私はそう思う)、1,4181298336770849826794266683101e+278 の可能性になります。

少なくとも 924 ビット (~ 116 バイト) を使用するそれぞれの合計は、約: 1,4961466213803019672087747815019e+268 TB (テラバイト) になり、地球上のすべてのハードドライブが一緒に保存できるわけではありません! 申し訳ありません....

于 2013-06-18T17:56:47.343 に答える