From 42fda7913f125ef441d845285afc94f96302a47d Mon Sep 17 00:00:00 2001 From: Frank Dellaert Date: Sat, 26 Oct 2013 15:25:56 +0000 Subject: [PATCH] Added path compression --- gtsam/base/DSFVector.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gtsam/base/DSFVector.cpp b/gtsam/base/DSFVector.cpp index 24ac9b9e1..61e878e70 100644 --- a/gtsam/base/DSFVector.cpp +++ b/gtsam/base/DSFVector.cpp @@ -43,12 +43,11 @@ DSFBase::DSFBase(const boost::shared_ptr& v_in) { /* ************************************************************************* */ size_t DSFBase::findSet(size_t key) const { - size_t parent = (*v_)[key]; // follow parent pointers until we reach set representative - while (parent != key) { - key = parent; - parent = (*v_)[key]; - } + size_t parent = (*v_)[key]; + if (parent != key) + parent = findSet(parent); // recursive call + (*v_)[key] = parent; // path compression return parent; }