アカウント名:
パスワード:
メモリのアドレス長を4byte、カード番号を16桁、不正カードを最大一千万枚扱うと考えても、6.4Gbytesもメモリがあれば、メモリ上だけで検索できます。
char CardNum[10000000][16];
としてやればインデックスはint32で足りますね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
14万枚 (スコア:2, 参考になる)
ETC
nobuo * Who's gonna die first? *
リアルタイム処理・・・ (スコア:1)
>これを増やすことって、難しいんですかね?単純にストレージを増やせばいいだけということはないのでしょうか?
ETCの場合、検索時間が一定以内でないとダメということも考えないといけないのでは?
# データが増
Re:リアルタイム処理・・・ (スコア:1)
この場合に限って言えば、データが増えても検索時間がO(1)で済むアルゴリズムがありますよね。最もトリビアルには、カード番号を添字とする配列にOK・NGを入れておけばよいし、カード番号が飛んでいると考えても、トライを使えば、一つのカード番号の桁数をkとして、検索時間はO(k)、kは定数なので、O(1)ですね。
必要とする記憶領域は、不正カードの数をnとするとk*nに比例します。つまり、O(n)。単純に考えて、メモリのアドレス長を4byte、カード番号を16桁、不正カードを最大一千万枚扱うと考えても、6.4Gbytesもメモリがあれば、メモリ上だけで検索できます。
他にもハッシュで実現すると言う方法もありますね。
#富豪的プログラミングだ(笑)。
Re:リアルタイム処理・・・ (スコア:0)
Re:リアルタイム処理・・・ (スコア:1)
いや、正直言って見落としてました。ご指摘ありがとう。
Re:リアルタイム処理・・・ (スコア:0)
char CardNum[10000000][16];
としてやればインデックスはint32で足りますね。