- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有许多服务器处理世界的矩形 block ,称它们为“区域”。当玩家从一个区域移动到另一个区域时,如果该区域不属于当前服务器,则所有玩家数据都必须发送到拥有他们刚进入的区域的服务器。
您可以想象一个区域只是具有 4 个相邻区域(连接区域)的图上的一个节点。该图会增长和缩小,因此我会定期重新平衡服务器之间的工作分配。
我想使用一种算法将区域最佳地分配给服务器,考虑以下 3 点:
我考虑过实现此目的的一种方法是使用粗略的填充填充,它将分数分配给几种类型的区域分配“填充”,但这是 O(n^2) 并且可能不太适合任务。
我想到的另一种算法从流量最高的区域开始,选择具有最高交叉的节点,直到它满足最低工作阈值。这将是 O(n),但可能会产生非常“搁浅”的空间分配,例如,交叉在工作的重新分配之间的方向上交替。
有没有其他方法可以为我的服务器分配区域,比如说,O(n)?
最佳答案
据我所知,没有一种简单快捷的方法可以创建最佳切边方式来分割节点。由于您计划仅在几台服务器上运行它,并且您知道您的图形将是什么样子,我认为您可以简单地计算一个区域的权重并优化拆分,以便每个区域具有相同的权重。
这应该会给你很好的结果。当在 100 或 1000 台服务器上运行时,这将花费更长的时间,因为您需要保持平衡的区域太多。您仍然知道图形的结构,应该利用这些信息。
如果您不知道结构,有几种算法可以尝试以集中或分散的方式计算最佳边缘切割,但它们都不是您要找的,因为它是一个 NP 复杂问题。我不得不在 Giraph 之上实现一个 - Ja-Be-Ja from KTH (Royal Institute of Technology)他们还将他们的算法与其他算法进行比较。所以你可以看到你的想法肯定会为你的问题提供更好的结果。
希望对你有帮助
关于使用图形分配邻居敏感工作的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721708/
我从 SpatialPolygonsDataFrame 开始,它包含用于创建加纳各地区 map 的数据(可在 http://www.diva-gis.org/datadown 获取)。我正在尝试创建一
我遇到了一个问题,我需要根据存储在前一个元素中的信息修改容器的元素。示例: 如果前一个 vector 元素可被 2 整除,则将当前元素乘以 10 vector -> [12, 11, 33, 10]
总的来说,我对脚本编写还很陌生。我正在编写一个 expect 脚本,它通过 ssh 进入 Cisco 交换机,并运行“show cdp neighbors”命令来获取连接到交换机的所有设备的列表。然后
我正在尝试比较节点的值。使用 flood-fill 算法,我能够垂直和水平检查网格的每个节点。现在我必须更新我的代码以检查位于对 Angular 线上的单元格,如下图所示: 红色是当前节点,黄色是需要
我使用预先计算的指标使用 Scikit-Learn 的最近邻/半径分类。这意味着,我将成对距离的 n_samples_train x n_samples_train 矩阵传递给分类器的拟合方法。 现在
我有一个大的稀疏图,我将其表示为邻接矩阵(100k x 100k 或更大),存储为边数组。具有(非稀疏)4 x 4 矩阵的示例: 0 7 4 0 example_array = [ [7,1,2],
从有向图中并给出两个顶点 (v, u) 我需要找到:共同的“出”邻居和共同的“入”邻居。 例如: import networkx as nx ghybrid = nx.DiGraph() ghybri
我正在使用 JavaScript 进行图像处理,我想知道是否有任何通用公式可以确定像素的 x 邻居。 我知道对于 3*3 的正方形,可以使用特定的 x 和 y 像素确定 8 个邻居。 (x-1,y-1
在 CentOS 6.4(内核 2.6.32)上,为什么下面的第二个 arping 调用会创建一个新的 ARP 表条目,而第一个不会?网络行为是相同的,我感到困惑的是,在我看来,系统调用实际上是等同的
我是一名优秀的程序员,十分优秀!