index 0cc2796..4dbd543 100644 (file)
@@ -283,7 +283,7 @@ class BipartiteGraph {
/// Adds an edge between node \a n1 of type 1 and node \a n2 of type 2.
/** If \a check == \c true, only adds the edge if it does not exist already.
*/
-        void addEdge( size_t n1, size_t n2, bool check = true );
+        BipartiteGraph& addEdge( size_t n1, size_t n2, bool check = true );
//@}

/// \name Erasing nodes and edges
@@ -353,6 +353,12 @@ class BipartiteGraph {
return nb2(n2).size();
}

+        /// Returns neighbors of node \a n1 of type 1 as a SmallSet<size_t>.
+        SmallSet<size_t> nb1Set( size_t n1 ) const;
+
+        /// Returns neighbors of node \a n2 of type 2 as a SmallSet<size_t>.
+        SmallSet<size_t> nb2Set( size_t n2 ) const;
+
/// Calculates second-order neighbors (i.e., neighbors of neighbors) of node \a n1 of type 1.
/** If \a include == \c true, includes \a n1 itself, otherwise excludes \a n1.
*  \note In libDAI versions 0.2.4 and earlier, this function used to return a std::vector<size_t>
@@ -374,7 +380,7 @@ class BipartiteGraph {
/// Comparison operator which returns true if two graphs are identical
/** \note Two graphs are called identical if they have the same number of nodes
*  of both types and the same edges (i.e., \a x has an edge between nodes
-         *  n1 and n2 if and only if \c *this has an edge between nodes n1 and n2).
+         *  \a n1 and \a n2 if and only if \c *this has an edge between nodes \a n1 and \a n2).
*/
bool operator==( const BipartiteGraph& x ) const {
if( nrNodes1() != x.nrNodes1() )