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. 2次元配列
- 3. 2次元配列
- 4. 2次元配列
- 5. 2次元配列を2次元配列で作成する
- 6. 2次元配列の最大値を見つけるための高速コード
- 7. Python/Cythonの高速n次元スパース配列
- 8. Javascriptでの2次元配列からの3次元配列
- 9. 2次元配列のクリア
- 10. Javaの2次元配列
- 11. JNIの2次元配列
- 12. C#の2次元配列
- 13. 2次元配列のUserControl
- 14. 2次元配列の値
- 15. 2次元配列のコピー
- 16. 2次元配列のキャッシュミス
- 17. 2次元配列のsocket_select()
- 18. 3次元配列を2次元配列に変換する
- 19. 1次元配列を2次元配列に変換する
- 20. 2次元配列から1次元配列へ
- 21. ジグザグ配列の2次元配列から1次元配列へのアルゴリズム
- 22. クリア2次元セッション配列
- 23. 2次元配列処理
- 24. 動的2次元配列
- 25. セグメンテーションフォールト2次元配列
- 26. Java 2次元配列
- 27. フィルタリング2次元javascript配列
- 28. 2つのコンボボックスと2次元配列
- 29. C#シフト2次元配列速い方法
- 30. Numpy reshape 1列の1次元配列から2次元配列