2013-11-17 4 views
1

Может ли кто-нибудь указать мне на хороший псевдокод простого параллельного алгоритма кратчайшего пути? Или любой язык, это не имеет значения. У меня возникли проблемы с поиском хороших примеров = [Параллельная реализация Bellman-Ford

ответ

2

я в конечном итоге реализовать его сам для Bitcoin бот с использованием OpenMP:

/*defines the chunk size as 1 contiguous iteration*/ 
#define CHUNKSIZE 1 
/*forks off the threads*/ 
#pragma omp parallel private(i) { 
/*Starts the work sharing construct*/ 
#pragma omp for schedule(dynamic, CHUNKSIZE) 
     list<list_node>::iterator i; 
     for (int u = 0; u < V - 1; u++) { 
      if (dist[u] != INT_MAX) { 
       for (i = adj[u].begin(); i != adj[u].end(); ++i) { 
        if (dist[i->get_vertex()] > dist[u] + i->get_weight()) { 
         dist[i->get_vertex()] = dist[u] + i->get_weight(); 
         pre[i->get_vertex()] = u; 
        } 
       } 
      } 
     } 
    } 

Если вы хотите посмотреть на мою полную реализацию, вы можете view it as a Gist on my GitHub

+0

I сомневайтесь в правильности, когда это работает параллельно! – ahmad

Смежные вопросы