抱歉,这似乎是一个显而易见的问题。
我正在创建列表的 Data.map {实际上是整数和列表的元组 (Integer, [(Integer, Integer)])},用于为 Dijkstras 和 Prims 等一些图形算法实现优先级队列 + 邻接列表,
Data.map 是使用二叉树实现的(我读过),所以我只想确认在执行映射操作时(我相信它们将是旋转),解释器不会执行列表的深层副本,只是引用的浅层副本列表对吗?
我这样做是为了在 haskell 中实现一个 prims 算法,该算法将在 n = no 的 O(nlogn + mlogn) 时间内运行。顶点数,m = no。边缘,以纯粹的功能方式,如果列表存储在优先级队列中,算法将在那个时候起作用。我在网上找到的大多数 haskell 实现都没有达到这种复杂性。
提前致谢。