mpi - Resolve this function without recursion in order to use parallelism -


i'm trying optimize process calculate possible combinations of players form partitions. understand problem, use following example.

for exampe have set of players n = {1,2,3,4,5} , players regrouped {1,2},{3,4},{5}. means player 1 play player 2 single player, , one. each group of players has set of strategies or choices. each player chooses group wants belong, example: group {1,2} has these possibilities {{1,2};{1,2,3,4}}; i.e players {1,2} either choose stay or join group {3,4}. same explanation rest of players:

{3,4}=>{{3,4};{3,4,5};{1,2,3,4}} {5}=>{{5};{3,4,5}} 

now, group of players choosing same strategy form new group (coalition). example, group {1,2} chose strategy {1,2,3,4} i.e. players {1,2} want form new group players {3,4}. players {3,4} choose strategy {3,4,5}, player {5} choose strategy {3,4,5}. players choose same strategy grouped form final partition of players this: {1,2},{3,4,5}; players {3,4,5} have chosen same strategy, grouped together, players {1,2} chose different strategy stay alone. have programmed process recursive function admissible partitions of players. problem here: function generate possible partitions , admissibles takes lot of time.

now question if possible resolve problem without using recursive function; i.e. in sequential form in order use parallelism jcuda, when have many players , many partitions. ideal solution here, mpi or jcuda?

import java.util.arraylist; import java.util.hashtable;  public class partitions {     public hashtable<arraylist<integer>, arraylist<arraylist<integer>>> hashtab = new hashtable<arraylist<integer>,arraylist<arraylist<integer>>>(); // key  chosen strategy(coalition) , value group of players have  chosen same coalition(strategy).      // create partitions combination     public void calculstrategiescombination (int index, arraylist<objectscoalitions> playercoalitions, int k,int l) {        index = index +1;            if(index < playercoalitions.size()) {                 for(int j =0; j< playercoalitions.get(index).coaltions.size(); j++) {                    if(!this.hashtab.containskey(playercoalitions.get(index).coaltions.get(j))) {                        arraylist<arraylist<integer>> e = new  arraylist<arraylist<integer>>();                        e.add(playercoalitions.get(index).objects);                        this.hashtab.put(playercoalitions.get(index).coaltions.get(j), e);                    } else {                        this.hashtab.get(playercoalitions.get(index).coaltions.get(j)).add(playercoalitions.get(index).objects);                     }                    if(this.hashtab.size()<k) {                        calculstrategiescombination (index, playercoalitions,k,l);                    }                    if(this.hashtab.get(playercoalitions.get(index).coaltions.get(j)).size()==1) {                       this.hashtab.remove(playercoalitions.get(index).coaltions.get(j));                    } else {                       this.hashtab.get(playercoalitions.get(index).coaltions.get(j)).remove(this.hashtab.get(playercoalitions.get(index).coaltions.get(j)).size()-1);                    }                }            } else {                   // treatment.......             }        }    }     public class objectscoalitions {         public arraylist<integer>objects = new arraylist<integer>(); // example objects = {1,2}        public arraylist<arraylist<integer>> coaltions = new   arraylist<arraylist<integer>> (); //  coalitions (strategis)={{1,2};{1,2,3,4}}    } 


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -