Skip to content

Commit

Permalink
Update ParallelAlgoPrim.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
SergeyKuz1001 authored Dec 8, 2019
1 parent 751cc47 commit c534543
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions Task02/ParallelAlgoPrim.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ namespace Task02
{
public class ParallelAlgoPrim
{
static int v; // вершина, не лежащая в дереве, расстояние до которой от дерева минимально
static int newV;
static int minDistVertex; // вершина, не лежащая в дереве, расстояние до которой от дерева минимально
static int newMinDistVertex;
static int amountThreads = 6;
static int runningThreads; // количество выполняющихся потоков
static int chunkSize;
Expand All @@ -19,30 +19,30 @@ public class ParallelAlgoPrim
static void FindNewV(Graph graph, int LIndex, int RIndex)
{
// нахождение очередной вершины с минимальным расстоянием до дерева
int localV = -1; // локальный ответ
int localMinDistVertex = -1; // локальный ответ

for (int to = LIndex; to < RIndex; to++)
{
if (!tree.Contains(to))
{
// обновление минимального расстояния после добавления v в дерево
if (minDistToTree[to] > graph.graphMatrix[v, to])
if (minDistToTree[to] > graph.graphMatrix[minDistVertex, to])
{
minDistToTree[to] = graph.graphMatrix[v, to];
minDistToTree[to] = graph.graphMatrix[minDistVertex, to];
}

// обновление локального ответа
if (localV == -1 || minDistToTree[localV] > minDistToTree[to])
localV = to;
if (localMinDistVertex == -1 || minDistToTree[localMinDistVertex] > minDistToTree[to])
localMinDistVertex = to;
}
}

if (localV != -1)
if (localMinDistVertex != -1)
{
mutNewV.WaitOne();
// обновление глобального ответа
if (newV == -1 || minDistToTree[newV] > minDistToTree[localV])
newV = localV;
if (newMinDistVertex == -1 || minDistToTree[newMinDistVertex] > minDistToTree[localMinDistVertex])
newMinDistVertex = localMinDistVertex;
mutNewV.ReleaseMutex();
}

Expand All @@ -61,14 +61,14 @@ public static int Execute(Graph graph)

// начинаем с вершины 0
minDistToTree[0] = 0;
v = 0;
minDistVertex = 0;

while (v != -1)
while (minDistVertex != -1)
{
ans += minDistToTree[v];
tree.Add(v);
ans += minDistToTree[minDistVertex];
tree.Add(minDistVertex);

newV = -1;
newMinDistVertex = -1;

runningThreads = amountThreads;
for (int i = 0; i < amountThreads - 1; i++)
Expand All @@ -82,7 +82,7 @@ public static int Execute(Graph graph)

while (runningThreads > 0) {}

v = newV;
minDistVertex = newMinDistVertex;
}

return ans;
Expand Down

0 comments on commit c534543

Please sign in to comment.