diff --git a/src/graph/edge.cc b/src/graph/edge.cc
index 412e82fa7df1c90de75dba8222c73b1e29966e29..f7adef5ffd7c5f30e6dc8bbbf45fa64b50166123 100644
--- a/src/graph/edge.cc
+++ b/src/graph/edge.cc
@@ -165,8 +165,10 @@ namespace hpp {
 
       void Edge::initialize ()
       {
-        targetConstraints_ = buildTargetConstraint ();
-        pathConstraints_ = buildPathConstraint ();
+        if (!isInit_) {
+          targetConstraints_ = buildTargetConstraint ();
+          pathConstraints_ = buildPathConstraint ();
+        }
         isInit_ = true;
       }
 
@@ -769,8 +771,10 @@ namespace hpp {
 
       void LevelSetEdge::initialize ()
       {
-        Edge::initialize();
-        buildHistogram ();
+        if (!isInit_) {
+          Edge::initialize();
+          buildHistogram ();
+        }
       }
 
       ConstraintSetPtr_t LevelSetEdge::buildConfigConstraint()