38#ifndef __SOCIAL_NETWORK_GRAPH__
39#define __SOCIAL_NETWORK_GRAPH__
48template <
class TopoDiscoveryStrategy_t >
52 std::set<size_t>
execute(
size_t numMasters,
size_t dimensions,
77 size_t m =
static_cast<size_t>(std::sqrt(
numMasters_));
79 int64_t south =
myID_ - m;
83 size_t east =
myID_ + 1;
84 if ((
myID_ + 1) % m == 0) {
87 size_t west =
myID_ - 1;
117 size_t m =
static_cast<size_t>(std::sqrt(
numMasters_));
118 int x_from = from / m;
119 int y_from = from % m;
123 return std::abs(x_from - x_to) + std::abs(y_from - y_to);
130 std::vector<double> probabilities(
numMasters_, 0.0);
134 if (i ==
myID_)
continue;
139 if (i ==
myID_)
continue;
144 std::discrete_distribution<size_t>
145 dist(probabilities.begin(), probabilities.end());
T::PETE_Expr_t::PETE_Return_t sum(const PETE_Expr< T > &expr)
void setNetworkNeighbors()
void chooseRandomNeighbor()
double manhattenDistance(size_t from, size_t to)
std::set< size_t > realNetworkNeighborPIDs_
std::set< size_t > execute(size_t numMasters, size_t dimensions, size_t id, int)