Research Article
Parallel Implementations of Candidate Solution Evaluation Algorithm for N-Queens Problem
Algorithm 6
Calculation of conflicts with the Fork_Join framework.
| Input: | | Output: | (1) | start 0 | (2) | end N-2 | (3) | if end–start < threshold;//calculate small task directly | (4) | then | (5) | Fori = start; i ¡ = end; ++ido | (6) | Forj = i + 1; j ¡ N; ++jdo | (7) | if = = j–i then | (8) | conflicts++ | (9) | end | (10) | end | (11) | end | (12) | else | (13) | middle (start + end)/2; //large task need to be splited | (14) | leftTask new CountTask(start, middle); //generate sub_task_1 | (15) | rightTask new CountTask(middle+1,end); //generate sub_task_2 | (16) | leftTask.fork(); //submit sub_task_1 | (17) | rightTask.fork(); //submit sub_task_2 | (18) | leftResult leftTask.join(); //wait for sub_task_1 | (19) | rightResult rightTask.join(); //wait for sub_task_2 | (20) | conflicts leftResult + rightResult; //merge subtask results | (21) | end |
|