gpt4 book ai didi

arrays - 序言中的快速二维数组

转载 作者:行者123 更新时间:2023-12-01 13:01:37 24 4
gpt4 key购买 nike

在 prolog 中表示二维数组的最有效方法是什么?我想到了一个长列表或列表列表,但它们具有线性访问时间,这对于我的问题来说似乎太慢了。我不一定要寻找一个现成的解决方案,而是一个应该如何实现的概念。

最佳答案

您可以使用 AVL 树或红黑树获得对数时间访问,请参阅 SWI 和 YAP 中的 library(assoc) 和 library(rbtrees)。对于恒定时间访问,使用 N 个参数创建一个术语,并使用 arg/3 进行高效访问。这些参数中的每一个都可以再次成为元数为 N 的项,因此您拥有一个具有高效读取访问权限的数组。使用 setarg/3,你甚至可以破坏性地修改元素,代价是失去良好的逻辑属性和更痛苦的调试和测试。在许多情况下,您可以重新制定您的算法以不需要随机访问,并使用列表列表。如果这不可能,AVL 或其他平衡树通常是一个很好的选择。

关于arrays - 序言中的快速二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com