【发布时间】:2013-09-15 08:16:37
【问题描述】:
抱歉,这似乎是一个显而易见的问题。
我正在创建列表的 Data.map {实际上是整数的元组和列表 (Integer, [(Integer, Integer)])},用于为 Dijkstras 和 Prims 等一些图形算法实现优先级队列 + 邻接列表,
Data.map 是使用二叉树实现的(我读过),所以我只想确认在执行映射操作时(我相信它们将是旋转),解释器不会对列表进行深拷贝,而只是浅拷贝列表的引用对吗?
我这样做是为了在 haskell 中实现一个 prims 算法,该算法将在 n = no 的 O(nlogn + mlogn) 时间内运行。顶点数,m = no。边缘,以纯粹的功能方式, 如果列表存储在优先级队列中,则该算法将在那个时候起作用。我在网上找到的大多数 haskell 实现都没有达到这种复杂性。
提前致谢。
【问题讨论】:
-
Haskell 本身并没有对此做出任何承诺,但我所知道的没有实现深度复制。
标签: list haskell map time-complexity