約 10^7 という巨大なサイズのキーと値のペアのマップがあり、その内容を更新するために 1 秒間に 15 回ループする必要があります。適切な複雑さを提供し、必要な時間を短縮するクラスまたは構造はありますか?ループする?
現在、私はTreeMapを使用していますが、contains、put、get、removeの複雑さはlog nだけです。要素をループするのは複雑です
構造を知っていますか、またはn 以下の複雑さを減らす可能性のあるアイデアはありますか?
約 10^7 という巨大なサイズのキーと値のペアのマップがあり、その内容を更新するために 1 秒間に 15 回ループする必要があります。適切な複雑さを提供し、必要な時間を短縮するクラスまたは構造はありますか?ループする?
現在、私はTreeMapを使用していますが、contains、put、get、removeの複雑さはlog nだけです。要素をループするのは複雑です
構造を知っていますか、またはn 以下の複雑さを減らす可能性のあるアイデアはありますか?
コレクション全体を任意にループする必要がある場合、n よりもうまくいきません。コレクション全体をループする必要がある場合は、単純な ArrayList を使用できます。ただし、キーを使用してコレクション内の特定のデータにアクセスする必要がある場合は、TreeMap で問題ありません。
問題が O(n) 値のすべてを調べるだけの場合、シーケンシャル (または有限並列) コンピューターで O(n) バウンドを打ち負かすことはできません。
有限並列マシンがあり、要素を更新する方法によっては、高速化を達成できます。たとえば、CUDA と GPU、または OpenMP/MPI とクラスター/マルチコア ワークステーションを使用すると、A[i] = A[i]^3 などを高速に計算できます。もちろん、コミュニケーションの問題もありますが、これは注目すべき点かもしれません。