IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme Crible d'Ératosthène en distribué (application réparti)


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Par défaut Algorithme Crible d'Ératosthène en distribué (application réparti)
    Salut

    Je voudrais faire une application réparti sur deux ou plusieurs machines pour le calcule des nombres premiers. J'ai vu qu'il y avais l'algorithme de Crible d'Ératosthène: http://fr.wikipedia.org/wiki/Crible_...atosth%C3%A8ne
    mais je ne vois pas comment l'appliquer pour un calcule distribué sur deux machines, vu qu'il n y pas de mémoire commune contenant le tableau.
    Avez vous des idées sur comment faire svp ?
    Merci d'avance.

    Voici l'algorithme (code C) de crible d'Eratosthène en séquentiel (non distribué) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void premiers(int tableau[], long tailleTableau)
    {
       long i, j;
     
       tableau[0] = tableau[1] = 0;
       for (i = 2 ; i < tailleTableau ; i++)
          tableau[i] = 1;
     
       for (i = 2 ; i < sqrt(tailleTableau) ; i++)
          if (tableau[i])
             for (j = i*i ; j < tailleTableau ; j += i)
                tableau[j] = 0;
     
       /*Affichage :
       for (i = 0 ; i < tailleTableau ; i++)
          if (tableau[i]) printf ("%ld ", i);
       Fin Affichage */
    }
    EDIT:
    Pour pouvoir répartir le calcule sur plusieurs processus (ce trouvant sur des machines différentes) j'ai pensé à considérer un processus maître qui envoi au autres processus esclaves leur intervalles de calcule (la suite de nombres sur lesquels le processus exécutera l'algorithme) et ce processus maître a lui aussi son intervalle de calcule.

    Mais même comme ça ce n'est évident car l'algorithme de calcule des nombres premiers que va effectué un processus P1 sur le 1er intervalle de nombres va avoir un impacte sur le reste des nombres (voir l'algorithme de Crible d'Ératosthène) et donc les calcules du processus P2 par exemple pourront être fausse car peut être P1 a éliminé un nombre (non premier) appartenant à l'intervalle de calcule de P2 mais P2 va quand même effectué le calcule sur ce nombre car il n'as pas été informé par P1.

    Vous pouvez peut être me dire dans ce cas de faire en sorte qu'à chaque fois qu'un processus élimine un nombre (non premier), il envoi un message au autres processus (ou au processus concerné) afin les informé que ce nombre est non premier pour qu'ils ne le traitent pas. Mais le problème dans ce cas serai: si le processus P2 (par exemple) a déjà traité le nombre en question avant qu'il ne reçoi le message provenant de P1 lui disant de ne pas le traiter (car non premier).

    Des idées pour régler ces problèmes svp ?

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Eratosthene, me parait difficilement parallélisable.
    Atkin par contre (voir wiki) ou mon cours:
    Nombres-->naturels-->exercices-->>programmation -->atkin
    l'est sans doute (voir les 3 if successifs dans la solution python).
    http://perso.univ-rennes1.fr/antoine...51_088_096.pdf
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Crible de Lachkar
    Bonjour,

    Si je participe à ce forum, c'est seulement pour attirer l'attention aux developpeurs que vous êtes, que j'ai vu qu'il y a un Crible sur un autre forum qui s'appelle " CRIBLE DE LACHKAR" sur le forum de Bibm@th / nombres.
    Peut être que crible est rapide que celui d'Eratosthene.
    Il faut l'essayer pour juger.

    Salut

  4. #4
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par lakkarin Voir le message
    Bonjour,

    Si je participe à ce forum, c'est seulement pour attirer l'attention aux developpeurs que vous êtes, que j'ai vu qu'il y a un Crible sur un autre forum qui s'appelle " CRIBLE DE LACHKAR" sur le forum de Bibm@th / nombres.
    Peut être que crible est rapide que celui d'Eratosthene.
    Il faut l'essayer pour juger.

    Salut
    C'est bien de se balader de forum en forum pour faire la pub pour un crible inexistant, mais ce serait peut être un peu mieux de le décrire sérieusement, d'en proposer une implémentation et de montrer en quoi il est plus efficace que celui d'Eratosthène hein...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    C'est bien de se balader de forum en forum pour faire la pub pour un crible inexistant, mais ce serait peut être un peu mieux de le décrire sérieusement, d'en proposer une implémentation et de montrer en quoi il est plus efficace que celui d'Eratosthène hein...
    Bonjour,

    Si je me balade d'un forum à l'autre, c'est pour rester toujours en contact avec du nouveau.
    En ce qui concerne Le Crible de Lachkar, d'après ce que j'ai vu sur le Forum de Bibmath, il s'agit bien d'un Crible qui se compose de 5 colonnes et N-1 lignes.

    Il se présente comme di-dessous :


    1 2 3 4 5
    0 1 3 5 7 9
    1 6 8 10 12 14
    2 11 13 15 17 19
    3 16 18 20 22 24
    4 21 23 25 27 29
    5 26 28 30 32 34


    Donc on peut facilement commencer par l'élimination de certaines colones, lignes en les barrant horizontalement, verticalement ou diagonalement .

    la colonne 3 c'est les multiples de5
    les lignes impaires sont les nombres impairs,
    les multiples de 3 sont les diagonales de droites vers la gauches,
    les multiples de 7 sont les diagonales de gauches vers la droite..

    Donc, on procèdant de cette façon, il nous ne reste que les nombres premiers.

    Sur le Forum en question, ils ont commencer à faire des essais de programmations.

    Salut

  6. #6
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par lakkarin Voir le message
    En ce qui concerne Le Crible de Lachkar, d'après ce que j'ai vu sur le Forum de Bibmath, il s'agit bien d'un Crible qui se compose de 5 colonnes et N-1 lignes.

    Il se présente comme di-dessous :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	1	2 	3	4	5
    0	1	3 	5	7	9
    1	6	8	10	12	14
    2	11	13	15	17	19
    3	16	18	20	22	24
    4	21	23	25	27	29
    5	26	28	30	32	34
    Donc on peut facilement commencer par l'élimination de certaines colones, lignes en les barrant horizontalement, verticalement ou diagonalement .

    la colonne 3 c'est les multiples de5
    les lignes impaires sont les nombres impairs,
    les multiples de 3 sont les diagonales de droites vers la gauches,
    les multiples de 7 sont les diagonales de gauches vers la droite..
    C'est incompréhensible là ton explication... Et puis bon, s'appuyer sur une représentation graphique, c'est peut être bien à la main, mais pour le programmer, ça ne sert à rien... Parcourir une diagonale pour supprimer les multiple de 7, ça n'a aucune chance d'être plus rapide que de faire une boucle en incrémentant l'indice de 7 à chaque fois. Sans compter le temps passé à construire le tableau initialement alors que pour le crible d'Eratosthène c'est trivial.

    Et puis bon, j'attends avec angoisse la représentation graphique des multiples de 163...

    Et accessoirement, tu n'as pas 2 et 4 dans ton tableau. Autant le second, ce n'est pas bien grave, autant le premier, pour récupérer tous les nombres premiers sans qu'il soit là, c'est un peu mal barré...

    Bref, c'est mal barré ton "crible de Lachkar"

Discussions similaires

  1. Application réparti avec utilisation algo ricart agrawala
    Par caribou90 dans le forum Général Java
    Réponses: 0
    Dernier message: 04/05/2010, 21h54
  2. Est ce une application répartie ?
    Par tastika dans le forum Général Java
    Réponses: 3
    Dernier message: 01/03/2009, 23h28
  3. VB2005 Distribuer application
    Par cricrides dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/02/2008, 15h40
  4. [Débutant][Application répartie] Technologie et architecture
    Par soulhouf dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 7
    Dernier message: 28/09/2005, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo