Program Listing for File GlobalCurveball.hpp

Return to documentation for file (include/networkit/randomization/GlobalCurveball.hpp)

/*
 * GlobalCurveball.hpp
 *
 *  Created on: 26.05.2018
 *      Author: Manuel Penschuck <networkit@manuel.jetzt>
 */

#ifndef NETWORKIT_RANDOMIZATION_GLOBAL_CURVEBALL_HPP_
#define NETWORKIT_RANDOMIZATION_GLOBAL_CURVEBALL_HPP_

#include <memory>
#include <utility>

#include <networkit/base/Algorithm.hpp>
#include <networkit/graph/Graph.hpp>

namespace NetworKit {

// pImpl
namespace CurveballDetails {
class GlobalCurveballImpl;
}

class GlobalCurveball final : public Algorithm {
public:
    explicit GlobalCurveball(const Graph &G, count number_of_global_trades = 20,
                             bool allowSelfLoops = false,
                             bool degreePreservingShufflePreprocessing = true);

    ~GlobalCurveball() override;

    void run() final;

    Graph getGraph();

private:
    std::unique_ptr<CurveballDetails::GlobalCurveballImpl> impl;
    unsigned numGlobalTrades;
    bool degreePreservingShuffle;
};

} // namespace NetworKit

#endif // NETWORKIT_RANDOMIZATION_GLOBAL_CURVEBALL_HPP_