更好的参考地?

2024-05-14 01:29:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在geeksforgeeks上读到BFS用例之一是垃圾回收:

7) In Garbage Collection: Breadth First Search is used in copying garbage collection using Cheney’s algorithm. Refer this and for details. Breadth First Search is preferred over Depth First Search because of better locality of reference

这让我想到…这个优势是否依赖于实现?更具体地说,依赖于图形表示?以下是我对BFS better Location的理解:

# Assume that node.neighbors is an "ArrayList"
for neighbor in node.neighbors: # BFS
    queue.append(neighbor)
# cache miss when reading the first element of the array
# cache hits when iterating the rest

for neighbor in node.neighbors: # DFS
    dfs(neighbor)
# worst case, with enough depth, it's possible that cache is full 
# when recursion returns (LRU), which means cache miss for every neighbor

但是如果node.neighbors是一个LinkedList(我发现很多邻接列表的例子都是这样),那么BFS是否仍然具有更好的局部性(我唯一能想到的是BFS使用queue,但我不知道如何解释它对局部性的贡献)? enter image description here


Tags: oftheinnodecacheforsearchis