2次元配列をプロローグで表現する最も効率的な方法は何ですか?長いリストやリストのリストを考えましたが、私の問題では遅すぎるような線形アクセス時間があります。私は必ずしも準備ができている解決策を探しているわけではありません。プロローグ内の高速2次元配列
3
A
答えて
4
SWIおよびYAPのライブラリ(assoc)およびライブラリ(rbtrees)を参照して、AVLツリーまたはRed-Blackツリーでログ時間アクセスを取得できます。一定時間アクセスの場合は、N個の引数を持つ項を作成し、効率的なアクセスのためにはarg/3を使用します。これらの引数のそれぞれは、やはりarity Nを持つ項になることができるので、効率的な読み込みアクセスを持つ配列を持つことができます。 setarg/3を使用すると、素早く要素を修正することさえできます。ただし、優れた論理的特性を失うだけでなく、はるかに厄介なデバッグやテストを犠牲にします。多くの場合、ランダムアクセスを必要としないようにアルゴリズムを再構成し、リストのリストを操作することができます。これが不可能な場合は、AVLやその他のバランスのとれたツリーが良いオプションになることがよくあります。
関連する問題
- 1. 1次元配列からJavaの2次元への高速変換
- 2. プロローグ内で高速な大規模配列のアサートと使用
- 3. numpy:ループなしの2次元配列からのuint8値の高速置換
- 4. 2次元配列配列
- 5. 2次元配列の2次元配列をPHPで
- 6. 2次元配列の最大値を見つけるための高速コード
- 7. Python/Cythonの高速n次元スパース配列
- 8. 2次元配列
- 9. 2次元配列
- 10. 2次元配列
- 11. 2次元配列
- 12. 2次元配列
- 13. 2次元配列を2次元配列で作成する
- 14. Javascriptでの2次元配列からの3次元配列
- 15. 2次元numpy配列を3次元配列に配置
- 16. 2次元配列のキャッシュミス
- 17. 2次元配列の値
- 18. 2次元配列のコピー
- 19. 2次元配列のクリア
- 20. Javaの2次元配列
- 21. C#の2次元配列
- 22. 2次元配列のUserControl
- 23. 2次元配列のコピー
- 24. 2次元配列のディープソート
- 25. 2次元配列のsocket_select()
- 26. ポインタの2次元配列
- 27. JNIの2次元配列
- 28. 2次元配列のスワップ?
- 29. Twigの2次元配列
- 30. 2次元配列の和