Мне нужно реализовать найденный алгоритм here (стр. 5), используя данные от here (выберите данные в facebook, размер будет только KB, если вы хотите углубиться). Алгоритм:Анализ и понимание этого алгоритма
1: Ti ← 0 //Ti is pi’s count of triangles
2: for v ∈ Vi do
3: for u ∈ Nv do
4: if u ∈ Vi then
5: S ← Nv ∩ Nu
6: Ti ← Ti + |S|
7: else if u ∈ Vj then
8: Send <data,Nv> to pj if not sent already
9:
10: Check for incoming messages <t,X>:
11: if t = data then
12: Ti ← Ti+ SURROGATECOUNT(X, i)
13: else
14: Increment completion counter
15:
16: Broadcast <notifier,X>
17: while completion counter < P-1 do
18: Check for incoming messages <t,X>:
19: if t = data then
20: Ti ← Ti+ SURROGATECOUNT(X, i)
21: else
22: Increment completion counter
23:
24: MPIBARRIER
25: Find Sum T ← Pi Ti using MPIREDUCE
26: return T
Насколько я понимаю, мне нужен двухмерный массив. Мне нужно запросить каждый элемент внутри оператора if
и сделать +1 в переменной Ti
.
Первый вопрос, S ← Nv ∩ Nu
с чем назначать эту переменную S
?
Wikipedia говорит: A ∩ B means the set that contains all those elements that A and B have in common.
Второй вопрос, если вы посмотрите на данные, мне нужны все они? Мне кажется, мне нужен только файл .edges
.
Этот n-образный символ является пересечением, и большинство языков программирования имеют класс Set/object, который обеспечивает эту операцию. –
@ cricket_007. Я не знаком с этим классом, который вы могли бы предоставить и примером? – Ctrlfreak
['java.util.Set'] (http://docs.oracle.com/javase/7/docs/api/java/util/Set.html) и python [' set() '] (https://docs.python.org/2/tutorial/datastructures.html#sets) –