From d10f9b6b7ce22bbe6cab0a76150cd2a509e62196 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 19 Sep 2010 00:51:08 -0300 Subject: [PATCH] Arreglar algoritmo de marcado tri-color MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Además se hace notar que el algoritmo es O(|Live set|) en espacio aunque sea iterativo. --- source/gc.rst | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/source/gc.rst b/source/gc.rst index 4f1fe65..6b26bdf 100644 --- a/source/gc.rst +++ b/source/gc.rst @@ -626,12 +626,15 @@ vacíos):: v = gray_set.pop() black_set.add(v) for (src, dst) in v.edges - if v in white_set - white_set.remove(v) - gray_set.add(v) - -Es simple notar que este algoritmo es naturalmente no recursivo, lo que de por -sí ya presenta una ventaja sobre el marcado *bicolor*. + if dst in white_set + white_set.remove(dst) + gray_set.add(dst) + +Si bien este algoritmo no es recursivo, tiene un requerimiento de espacio +:math:`O(\lvert Live \thickspace set \rvert)`. Un ejemplo donde se aprecia +esto a simple vista es cuando el *live set* resulta una lista simplemente +enlazada, en cuyo caso el :math:`gray_set` deberá almacenar todos los nodos +del *live set*. -- 2.43.0