2010-10-18 24 views
4

Je suis en train d'écrire un calculateur de nombre de fibonacci multi-processus, j'ai un fichier qui suit les nombres de fibonacci, d'abord ouvrir le fichier et écrire les premiers nombres de fibonacci (0 et 1) les nombres les additionnent et écrivent le prochain dans le dossier et ferme le dossier et la fourchette encore ce processus continue comme cela avec le forking et l'enfant additionnant des nombres et écrivant le nombre calculé dans le dossier, utilisant la fourchette dans le pour pas une bonne solution ni l'appel récursif y a-t-il une suggestion pour le problème ??Calculer les nombres de fibonacci de manière multi-processus?

Voici le lien du problème auquel nous sommes parler de partie multi-processus de le problème qui fait partie 2

http://cse.yeditepe.edu.tr/~sbaydere/fall2010/cse331/files/assignments/F10A1.pdf

+1

Est-ce devoir? – ruslik

+0

Ouais c'est les devoirs, j'écris le code mais en utilisant pour est un problème de performance, je cherche une solution pour cela ... –

+0

pourquoi fourches-tu un processus pour le faire? Laissez-vous votre processus parent juste sortir ou que fait-il? –

Répondre

2

En supposant que vous les calculer dans un " Je ne pense pas que ce soit un bon candidat pour le traitement parallèle.

Il est facile de trouver une solution O (n), mais chaque résultat dépend du précédent, il est donc difficile de paralléliser. Je ne vois aucun avantage dans votre approche parallèle actuelle, car une fois que chaque processus a terminé son propre travail et que vous avez forké un enfant pour obtenir le numéro suivant, c'est essentiellement terminé ... donc vous pourriez aussi bien faire le travail de l'enfant dans le processus existant.

+0

Il y en a environ 100 représentables en 64 bits, donc il n'y a pas de raison d'utiliser des calculs parallèles. – ruslik

+0

Je sais que ce n'est pas une bonne solution pour ce problème, mais il est important de montrer que la partie multi-thread est meilleure que cette solution, le problème a également une partie écrite multi-threaded.It est juste comparaison –

+2

@Burak un algorithme a des parties peut être parallélisé et les parties qui ne peuvent pas. Celui-ci ne peut pas être. – ruslik

2

Le calcul de nombre Fibonacci est une idée vraiment étrange d'aller multiprocessus. En effet, pour calculer un nombre, vous devez connaître les deux précédents. Les processus multiples ne peuvent pas calculer d'autres nombres mais le suivant, et seulement le suivant. Plusieurs processus vont tous calculer le prochain numéro de Fibonacci. Quoi qu'il en soit, vous allez vérifier.

0

Ou cette paper. Semble très pertinente, mais je ne suis pas mathématicien.

0

probablement cela n'est pas résoudre votre problème, mais voici un moyen trivial de calculer le nombre de fibonacci d'une plage donnée

int fibo(int n) { return (n<=2)?n:(fibo(n-1))+(fibo(n-2)); }

+0

je n'utilise pas l'algorithme récursif de cette manière et l'algorithme n'est pas le problème ici la performance est, je connais l'algorithme de fibonacci –