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 :

Une aide pour trouver la complexité de cet algorithme


Sujet :

Algorithmes et structures de données

  1. #41
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour,

    "O(1) ⊂ O(n), donc les fonctions constantes sont polynomiales "

    Donc pour toi, l'inclusion des O(f(n)) dans O(g(n) entraîne l'inclusion de l'ensemble des fonctions de type f(n) dans l'ensemble des fonctions de type g(n). Donc l'ensemble des fonctions logarithmiques est inclus dans l'ensemble des polynômes de degré supérieur ou égal à 1.

    C'est tellement faux que ça n'a pas d'intérêt d'aller plus loin.

    Salutations.
    Effectivement tu n'as pas compris que ce forum traite d'algorithmique et que le sujet traite de la complexité algorithmique ; que du coup (mais peut être vais-je te l'apprendre à l'instar de l'application d'une simple définition) le vocabulaire et le champ lexical utilisés sont spécifiques …
    Après si ta seule argumentation est du niveau d'un PTDR alors oui, il va falloir que tu arrêtes et surtout que tu te mettes à apprendre, entre autre des références que tu donnes.

  2. #42
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut
    Bonjour WhiteCrow,

    Je suis Français, la France est dans l'Europe donc je suis caucasien. Je suis effectivement caucasien mais l'implication est fausse.

    C'est ce que tu fais quand tu écris : "O(1) ⊂ O(n), donc les fonctions constantes sont polynomiales "

    Tu aurais pu ajouter "au sens de la complexité" et mathématiquement cela aurait été correct même si, au sens de la complexité, O(1) ⊂ O(en), donc les fonctions constantes sont exponentielles, O(1) ⊂ O(n!), donc les fonctions constantes sont factorielles... Ce qui n'induit rien de productif.

    Je remarque que tu ne réponds pas sur cette erreur. Si tu ne la vois pas c'est dommage.

    La rigueur ne se réduit pas au seul formalisme qui peut impressionner sans masquer les erreurs de raisonnement.

    O(f(n)) se contente de majorants simples car même si on sait qu'il existe un majorant asymptotique, il peut être difficile voire impossible de le trouver. Cependant, lorsqu'on le trouve ou même quand on trouve simplement un meilleur majorant, c'est lui qu'on utilise. C'est pourquoi, tu écris que QuickSort est en O(n²) pas en O(n3) ou O(n!) etc. Comme déjà évoqué, c'est l'objectif informatique qui prime : comment évolue le besoin de ressources R quand n, grand (i.e. > N0), évolue soit R(a.n)/R(n) avec a > 1.

    Si tu pouvais te concentrer sur les arguments au lieu d'une condescendance malvenue je t'en saurais gré.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  3. #43
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour WhiteCrow,

    Je suis Français, la France est dans l'Europe donc je suis caucasien. Je suis effectivement caucasien mais l'implication est fausse.

    C'est ce que tu fais quand tu écris : "O(1) ⊂ O(n), donc les fonctions constantes sont polynomiales "

    Tu aurais pu ajouter "au sens de la complexité" et mathématiquement cela aurait été correct même si, au sens de la complexité, O(1) ⊂ O(en), donc les fonctions constantes sont exponentielles, O(1) ⊂ O(n!), donc les fonctions constantes sont factorielles... Ce qui n'induit rien de productif.

    Je remarque que tu ne réponds pas sur cette erreur. Si tu ne la vois pas c'est dommage.
    Donc tu peux relire :
    Citation Envoyé par WhiteCrow Voir le message
    Effectivement tu n'as pas compris que ce forum traite d'algorithmique et que le sujet traite de la complexité algorithmique ; que du coup (mais peut être vais-je te l'apprendre à l'instar de l'application d'une simple définition) le vocabulaire et le champ lexical utilisés sont spécifiques …
    et les quelques messages précédents.

    Citation Envoyé par Guesset Voir le message
    La rigueur ne se réduit pas au seul formalisme qui peut impressionner sans masquer les erreurs de raisonnement.

    O(f(n)) se contente de majorants simples car même si on sait qu'il existe un majorant asymptotique, il peut être difficile voire impossible de le trouver. Cependant, lorsqu'on le trouve ou même quand on trouve simplement un meilleur majorant, c'est lui qu'on utilise. C'est pourquoi, tu écris que QuickSort est en O(n²) pas en O(n3) ou O(n!) etc. Comme déjà évoqué, c'est l'objectif informatique qui prime : comment évolue le besoin de ressources R quand n, grand (i.e. > N0), évolue soit R(a.n)/R(n) avec a > 1.

    Si tu pouvais te concentrer sur les arguments au lieu d'une condescendance malvenue je t'en saurais gré.

    Salutations
    1. comme ton histoire de log suivant la base qui n'auraient pas le même O ? ou simplement ta perception de ce qu'est le O ?
    Voyons, sois sérieux.

    Le fait est que, dans l'exemple de quicksort que je donnais, tu ne peux simplement pas dire que c'est un algo en O( n log n ) car c'est un algo en O(n²) et il n'y a pas de «meilleurs majorants» (au sens de O) car le pire cas est en Θ(n²). Tu comprends pourquoi je te demande de bien relire le Cormen que tu cites … tout y est bien expliqué.

    Quant à ton «Si tu pouvais te concentrer sur les arguments au lieu d'une condescendance malvenue je t'en saurais gré.» permets moi de te demander de bien me relire … j'ai argumenté le pourquoi ta réponse à Sandaff est essentiellement, j'ai également pointé tes méconceptions sur ce qu'est et à quoi servent les notations O/Θ/Ω … sans jamais te lancer un, comment dis-tu encore ? un … ptdr sans plus argumenter.

    Je ne peux pas te donner plus que les définitions, ce qu'on fait avec et ce qu'elles impliquent ; et elles impliquent entre autre que tu te trompes dans tes réponses.

  4. #44
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut
    Bonjour WhiteCrow,
    1.
    Citation Envoyé par WhiteCrow Voir le message
    "Comme ton histoire de log suivant la base qui n'auraient pas le même O ? ou simplement ta perception de ce qu'est le O ?
    Voyons, sois sérieux.
    Tu as écrit : "La complexité en temps dans le meilleur cas est effectivement en O(n log n)".

    J'ai répondu : Non. Le meilleur des cas offre une consommation de temps en n.log2(n). Le pire comme le meilleur sont des extrema qui méritent des expressions précises.

    Tu as écrit : "Heu … alors soit je ne te comprends pas, soit tu ne comprends pas la notation O … la base du logarithme ne joue en rien ici …"

    Où as tu vu que j'utilisais la notation O pour le meilleur des cas ? Je vais t'aider. Le meilleur des cas se caractérise par une complexité qui est inférieure ou égale aux autres cas. Ce n'est pas vraiment la définition d'un majorant n'est-ce pas ? Soyons sérieux.

    2.
    C'est comme ta définition de la moyenne qui utilise une équipartition des distributions de données sans l'annoncer. D'une part, c'est un manque de rigueur, d'autre part les distributions de données sont très rarement équiprobables (à part dans une école où on mettrait un générateur quasi aléatoire à contribution). Soyons sérieux.

    3.
    Comme ne pas argumenter sur ton erreur "O(1) ⊂ O(n), donc les fonctions constantes sont polynomiales " et changer de sujet toujours avec cette suffisance ridicule :"Effectivement tu n'as pas compris que ce forum traite d'algorithmique et que le sujet traite de la complexité algorithmique ; que du coup (mais peut être vais-je te l'apprendre à l'instar de l'application d'une simple définition) le vocabulaire et le champ lexical utilisés sont spécifiques …" C'est ça ton argumentaire ? Soyons sérieux.

    ...
    Il y a plein d'autres points de manque de rigueur plus ou moins importants. J'en ai abordé quelques uns comme la contradiction entre ton dogmatisme O qui autorise tout majorant et ton usage commun de O avec un majorant minimal.

    C'est dommage. L'échange aurait pu être profitable mais ça suppose un peu de respect mutuel.

    Salut.
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  5. #45
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour WhiteCrow,
    1.


    Tu as écrit : "La complexité en temps dans le meilleur cas est effectivement en O(n log n)".

    J'ai répondu : Non. Le meilleur des cas offre une consommation de temps en n.log2(n). Le pire comme le meilleur sont des extrema qui méritent des expressions précises.
    «en n log 2 n» est la même chose que en O(n log n).

    Citation Envoyé par Guesset Voir le message
    Tu as écrit : "Heu … alors soit je ne te comprends pas, soit tu ne comprends pas la notation O … la base du logarithme ne joue en rien ici …"

    Où as tu vu que j'utilisais la notation O pour le meilleur des cas ? Je vais t'aider. Le meilleur des cas se caractérise par une complexité qui est inférieure ou égale aux autres cas. Ce n'est pas vraiment la définition d'un majorant n'est-ce pas ? Soyons sérieux.
    Ah ben oui, pourquoi parler de complexité ou citer le chapitre 3 du Cormen sans utiliser les notations usuelles …
    Quand on dit que le meilleur des cas est en O(n log n) cela signifie que ce ne pourra pas être «pire» qu'une fonction log-linéaire à une constante multiplicative près … ce qui effectivement est un … wait for it … majorant.


    Peut-être qu'un autre extrait du Cormen te permettra d'y voir plus clair :
    Nom : Screenshot from 2022-10-04 13-59-41.png
Affichages : 306
Taille : 51,7 Ko

    Citation Envoyé par Guesset Voir le message
    2.
    C'est comme ta définition de la moyenne qui utilise une équipartition des distributions de données sans l'annoncer. D'une part, c'est un manque de rigueur, d'autre part les distributions de données sont très rarement équiprobables (à part dans une école où on mettrait un générateur quasi aléatoire à contribution). Soyons sérieux.
    La littérature n'utilise pas une «équirépartition des distributions» pour calculer une complexité moyenne. En des termes plus simples : tu prends la complexité (en temps pour les comparaisons termes à termes) de tous les tableaux de n éléments, tu divises par le nombre de tableaux considéré ⇒ c'est une moyenne. La fonction obtenue sera en O(n log n).

    À nouveau je me permets de me citer, un passage que tu auras sans doute zappé :

    Citation Envoyé par WhiteCrow Voir le message
    Je vais faire simple et court :

    • la complexité en temps de quicksort est en O(n²). Il n'y a pas d'aléatoire à considérer (pour autant que cela ait un sens). C'est simplement le pire cas, et quel que soit le nombre d'éléments considérés il y a aura toujours un pire cas (déjà trié par exemple) ;
    • la complexité en temps dans le meilleur cas est effectivement en O(n log n). Pas d'aléatoire à considérer non plus ;
    • en moyenne, la complexité est en O(n log n). Toujours pas d'aléatoire à considérer, cela provient simplement du fait que plus le nombre d'éléments à trier est grand moins il y a en proportion de «pires cas» ;
    • dans les jeux de données «réels» … bah ça dépend des données ;
    • il y a des moyens de mitiger les pire cas … choix du pivot parmi le médian d'un choix aléatoire de 3 éléments ; là une analyse «probabilistique» prend du sens.






    Citation Envoyé par Guesset Voir le message
    3.
    Comme ne pas argumenter sur ton erreur "O(1) ⊂ O(n), donc les fonctions constantes sont polynomiales " et changer de sujet toujours avec cette suffisance ridicule :"Effectivement tu n'as pas compris que ce forum traite d'algorithmique et que le sujet traite de la complexité algorithmique ; que du coup (mais peut être vais-je te l'apprendre à l'instar de l'application d'une simple définition) le vocabulaire et le champ lexical utilisés sont spécifiques …" C'est ça ton argumentaire ? Soyons sérieux.

    ...
    Il y a plein d'autres points de manque de rigueur plus ou moins importants. J'en ai abordé quelques uns comme la contradiction entre ton dogmatisme O qui autorise tout majorant et ton usage commun de O avec un majorant minimal.

    C'est dommage. L'échange aurait pu être profitable mais ça suppose un peu de respect mutuel.

    Salut.
    Dogmatisme ? Je ne fais que me référer à la définition de la notation … en rappelant non seulement les autres mais également l'erreur commune qui consiste à ne considérer que O et à le voir comme un Θ …
    Confusion que tu fais, que je me suis permis de relever.

    Maintenant tu aurais sans doute préféré un
    O(1) ⊂ O(n) donc tout algorithme dont une complexité est constante peut également être considéré comme un algorithme dont la même complexité est linéaire ; mais bon comme «ce forum traite d'algorithmique et que le sujet traite de la complexité algorithmique» cela ne me semblait pas utile ; surtout à la vue de ce que tu as pu affirmer…

  6. #46
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut Fin
    Bonjour WhiteCrow,

    J'arrête ces échanges improductifs. Tu sais tout et tes erreurs n'en sont pas.

    Félicitations.
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  7. #47
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Guesset Voir le message
    Bonjour WhiteCrow,

    J'arrête ces échanges improductifs. Tu sais tout et tes erreurs n'en sont pas.

    Félicitations.
    Merci tous les deux;

    improductif?

    NON

    La seule chose qui est déplaisante est la passion et la façon d'aborder;

    Mr WhiteCrow est très important en matière de débat d'idée s'il se débarrasse de ses pic dans ses messages;

    sinon j'ai bien aimé ses interventions et son apport sur ce sujet car je ne vais pas juger tous les deux mais je vous avoue que j'ai beaucoup retenus en tant que lecteur;

    merci tous deux

    si vous n’êtes pas d'accord sur la complexité démontrer alors envoyer la votre, nous allons analyser les deux;

    et puis il y a des questions en suspend;

  8. #48
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut Problème de problème
    Bonjour,

    J'ai répondu à la question initiale avec des arguments comme je le fais systématiquement.

    L'emploi de O dans toutes les études d'algorithmes utilisent le plus petit majorant (si possible asymptotiquement proche de la fonction de complexité). Une autre manière de le dire est qu'on utilise le plus petit ensemble O qui contienne la fonction de complexité (cette formulation permet de préserver la définition initiale de O). La notation devrait être différente mais ce n'est pas le cas (il y a d'autres écarts comme écrire f(n) = O(g(n)) pour exprimer une appartenance à O(g(n)) ). J'invite à lire n'importe quelle étude d'algorithme dans n'importe quelle source.

    Dans le problème initial, il ne me semble pas y avoir de notion de chambre à 2 places mais d'un dortoir dans lequel les incompatibilités ne doivent pas apparaître. C'est beaucoup plus contraignant. A chaque fois qu'un étudiant est choisi, les étudiants qui sont incompatibles avec lui sont exclus. Il n'y a pas non plus de choix aléatoire.

    On voit bien que c'est un problème qui peut n'avoir aucune solution (au sens remplissage des 100 places). Par exemple, si tout le monde est incompatible avec tout le monde.

    J'aurais tendance à tenter une approche heuristique matricielle avec des matrices triangulaires de compatibilités et des opérations matricielles binaires. On aurait de l'ordre de 100* 400 * 400 opérations. Ca demande réflexion.

    Toujours est-il que ce n'est pas vraiment le même problème que celui présenté.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  9. #49
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Bonjour Mr Guesset;

    Citation Envoyé par Guesset Voir le message

    Dans le problème initial, il ne me semble pas y avoir de notion de chambre à 2 places mais d'un dortoir dans lequel les incompatibilités ne doivent pas apparaître. C'est beaucoup plus contraignant. A chaque fois qu'un étudiant est choisi, les étudiants qui sont incompatibles avec lui sont exclus. Il n'y a pas non plus de choix aléatoire.

    On voit bien que c'est un problème qui peut n'avoir aucune solution (au sens remplissage des 100 places). Par exemple, si tout le monde est incompatible avec tout le monde.

    J'aurais tendance à tenter une approche heuristique matricielle avec des matrices triangulaires de compatibilités et des opérations matricielles binaires. On aurait de l'ordre de 100* 400 * 400 opérations. Ca demande réflexion.

    Toujours est-il que ce n'est pas vraiment le même problème que celui présenté.

    Salutations
    Vous aviez dit ça dans votre premier message:

    <<Si tout le monde est incompatible avec tout le monde (même si l'erreur dans la saisie des incompatibilités et celle sur les couples d'une personne cachent ce cas) comment on sort de la recherche de couples?>>

    Et ça aussi:

    <<Le problème de la complexité suppose un algorithme qui fonctionne ce qui n'est pas le cas. L'usage de fonctions random donnera un estimation statistique de la complexité avec un valeur moyenne et une valeur dans le pire des cas>>

    C'est pourquoi j'ai demandé si ma solution est placée dans le contexte avant d'afficher la démonstration mathématique;

    s'il y a une solution pour un dortoir à deux places ou deux lits alors cela équivaux une chambre avec deux places ou deux lits et dans tous les cas on a une seule recherche d'incompatibilité;

    si le nombre de places augmente alors la dimension du tableau de sélection ou tabEtudSelect serra aussi augmentée et le nombre de recherche dans l'incompatibilité augmentera à son tour; les incompatibilité reste toujours deux à deux;

    Je ne vois pas où se trouve la différence;

    <<A chaque fois qu'un étudiant est choisi, les étudiants qui sont incompatibles avec lui sont exclus. Il n'y a pas non plus de choix aléatoire>>

    OUI c'est ça même car c'est une seul chambre ou un seul dortoir;
    à chaque dortoir si c'est le seul qui existe il n' y a pas de choix que de mettre dedans ceux qui sont compatibles car quoi qu'ont ferra il faut choisir et laisser ceux qui n'ont pas de chance; c'est la réalité et non l'imaginaire;

    L'ordinateur évitera au moment de sélection de choisir deux personnes incompatibles ou de favoriser un en le choisissant puis remettre le second dans l'urne; s'il sont incompatibles ils seront tous les deux remis dans l'urne.

    << On voit bien que c'est un problème qui peut n'avoir aucune solution (au sens remplissage des 100 places). Par exemple, si tout le monde est incompatible avec tout le monde >>

    C'étais déjà discuté dans des précédents messages;

    il faut être jésuite pour rendre tout le monde incompatible avec tout le monde et trouver une sélection; ce n'est même pas scientifique car tous les problèmes scientifiques sont liés à un intérêt pratique dont la solution doit revolver le problème posé ;
    mais pour quel intérêt rendre tout le monde incompatible avec tout le monde?

    tout ce qu'on peu faire avec tous id incompatible avec tous id est de le constater et sortir de la boucle; et ça c'est gérer déjà;

    Si vous aviez une solution on attend impatiemment cette solution pourvue que ça soit dans O(nk);

    Mais pour l'instant je ne vois pas d'autre solution facile qu’aléatoire;

  10. #50
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut
    Bonjour,

    Les deux problèmes sont très différents.

    Prenons 2 chambres, il est possible de mettre A avec B et C avec D alors que A n'est pas compatible avec C ce qui ne sera pas possible dans un dortoir.

    Quand on conçoit un algorithme, il faut prévoir son comportement aux limites. Le problème, tel qu'il est posé, ne présume rien sur le nombre d'incompatibilités. La limite d'incompatibilité totale n'est alors pas à exclure aussi improbable qu'elle paraisse (de même que tous sauf 1 incompatibles entre eux, tous sauf 2 etc. jusqu'à sauf 99). Ce n'est pas un choix personnel mais juste le constat que c'est l'un des cas limites du problème tel qu'il est posé. Il faudrait modifier le problème pour qu'il en soit autrement.

    Une autre limite est "tout le monde est compatible avec tout le monde" (ou "il y a un groupe de 100 élèves compatibles entre eux"). Trouver une solution devient alors très simple.

    En ce qui concerne le choix aléatoire, je remarque juste que ce n'est pas une condition du problème mais un choix de solution. J'ai montré qu'on pouvait limiter le tirage au sort pour éviter des boucles sans fin. Cependant dans le cas du problème de dortoir, ce n'est sans doute pas la bonne approche.

    Bonne chance
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

  11. #51
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Pas si vite!!!

    vous ne pouvez pas me fuir de cette façon!!

    Citation Envoyé par Guesset Voir le message
    Les deux problèmes sont très différents.

    Prenons 2 chambres, il est possible de mettre A avec B et C avec D alors que A n'est pas compatible avec C ce qui ne sera pas possible dans un dortoir.
    Je n'ai pas compris;

    Vous voulez dire A avec B dans une première chambre et C avec D dans la deuxième?

    ou les deux dans la même chambre?

    de toute façon ça dépend de la nature du dortoir; si par exemple c'est un couvant dont on a un grand salon ou une grande salle pour tous le monde alors on la considère comme une seule et unique chambre et le choix par deux tirages avant de décider peu ne pas changer; on peu rendre le tirage simple en tirant un à un càd le premier tiré est le plus chanceux car il n y aura pas de vérification lui concernant et pour les autres, on tir puis on recherche parmi ceux qui sont déjà tirés s'il est compatible d'où une augmentation de nombre de recherches à chaque fois qu'on avance;

    mais si le dortoir est un bâtiment comme chez nous et peut être en occident selon mes informations, qui a plusieurs étages avec plusieurs chambres pour chaque étage;

    cet algo est fait en fonction de ça car nous, nous l'appelons parfois ici, à l'Université GAMAL, foyer des étudiants(foyer des médecins, foyer des magistrats, foyer de filles etc.. ) au lieu de dortoir;

    et pour faciliter j'ai considéré une chambre comme un dortoir et qui peut avoir deux ou quatre étudiants/chambre;

    << La limite d'incompatibilité totale n'est alors pas à exclure aussi improbable qu'elle paraisse (de même que tous sauf 1 incompatibles entre eux, tous sauf 2 etc. jusqu'à sauf 99) >>

    dans un message précédant je vous ai donnée ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    EI=tabEtudInc.length;
    EC=n(n-1)/2-EI;
    c = tabEtudSelect.length/2; // Nombre de chambres
     
    if(EI==n(n-1)/2)
    break loop;
    else if (c > EC)
    break loop;
    else ---
    Bon je ne retiens plus si je l'avais testé car je suis concentré sur un autre problème maintenant;

    mais avec aléatoire si un seul est compatible, ça prendra le nombre de tirage qu'il faudra mais s'il est tiré avec un autre, le doit prendre fin car tous les autres seront incompatibles avec son second;
    C(nb chambre)> EC(nb étudiants compatible);

    une idée serrait aussi de supprimer dans tabEtudCopy les incompatibilités du dernier tiré à chaque fois qu'i y a un tirage et si tabEtudCopy.length=0 alors le tirage s’arrêtera;

    il y a pas mal d'idée avec la solution aléatoire donc;

    je vais revoir la version finale et l'afficher quand je vais me retrouver;

  12. #52
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Bonjour tout le monde;

    Après une revue je pense que ceci pourrait être utile;

    Surtout n’hésitez pas à corriger, s'il vous plait;

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
    package complexite;
    import java.util.*;
    public class complexite {	
    	 //__________________________________________________________________
    	   public static void main(String[] args ) {
    	      Scanner keby = new Scanner(System.in);	
    	      System.out.println("Veuillez saisir le nombre d’étudiants :");
    	      // Liste des étudiants
    	      int n = keby.nextInt();
    	      String[][] tabEtud = new String[n][4];     // Une structure ou class aurait été préférable
    	      System.out.println("Veuillez saisir le nombre pair d’étudiant incompatible :");
    	      // Liste de paires étudiants incompatible dans le même dortoir exemple: 2 pr 4 etudiants ou 5 pr 10 etud
    	      int n1 = keby.nextInt();
    	      String [][] tabEtudInc = new String[n1][2];
    	      System.out.println("Veuillez saisir le nombre d’étudiants à sélectionner par pair càd toatl etudiant ou 2 * nbre de chambre :");
    	      // 2 étudiants par chambre soit 2*nombres de chambres 
    	      int m = keby.nextInt();
    	      String [][] tabEtudSelect = new String[m][2];	       
    	      String  clobalId  = "001"; 
    	      String  choix;                   
    	      do {
    	         System.out.println("------Menu principal ---------");
    	         System.out.println("   1. Liste d’étudiants     "); 
    	         System.out.println(" 2.Liste d’étudiants incompatibles  ");
    	         System.out.println("  3. Sélection d’étudiants  ");
    	         System.out.println("           4.Quitter      ");
    	         System.out.println("      Taper votre choix : ");
    	          choix = keby.nextLine();	        
    	         switch(choix) { 
    	            case "1": saisieEtudiant (tabEtud, keby);      
    	               break;
    	            case "2": saisieIncompatibilite (tabEtudInc, keby);   
    	               break;
    	            case "3": Selection(tabEtudSelect, tabEtud , tabEtudInc , keby, clobalId);
    	               break; 
    	            default : System.out.println("Veuillez respecter le menu!");
    	           }
    	         } while(choix != "4");
    	        }
     
    	   //__________________________________________________________________
    	   public static  void saisieEtudiant(String [][] tabEtud, Scanner keby) {
    		      int n = tabEtud.length; 
    		      int i = 0;		      
    		      do { // C'est un do while qui mime exactement un for
    		         System.out.println("Veuillez saisir l’Id de l’étudiants :");
    		         tabEtud[i][0] = keby.nextLine();		         
    		        /* System.out.println("Veuillez saisir le nom de l’étudiants :");
    		         tabEtud[i][1] = keby.nextLine();		         
    		         System.out.println("Veuillez saisir le prénom de l’étudiants :");
    		         tabEtud[i][2] = keby.nextLine();		         
    		         System.out.println("Veuillez saisir l’adresse de l’étudiants :");
    		         tabEtud[i][3] = keby.nextLine(); */		        
    		         i = i + 1;
    		         } while (i < n);
    		       }
     
    		   //______________________________________________________________________________________________
    		   public static void saisieIncompatibilite(String [][] tabEtudInc, Scanner keby) {
    		      int n = tabEtudInc.length;		     
    		      int i = 0;
    		      do {
    		         System.out.println("Veuillez saisir l’Id de l’étudiant1 incompatible:");
    		         tabEtudInc[i][0] = keby.nextLine();		        
    		         System.out.println("Veuillez saisir l’Id de l’étudiant2 incompatible:");
    		         tabEtudInc[i][1] = keby.nextLine();		         
    		         i = i + 1;
    		      } while(i < n);    
    		   }
     
    		   // Sélection par tirage au sort ________________________________________________________________
    		   public static void Selection(String [][] tabEtudSelect, String [][]tabEtud,
    		      String [][]tabEtudInc, Scanner keby,String clobalId) {
    		      int n = tabEtud.length;
    		      int Indice=0; // indice de id incompatible necessaire pour le test de compatibilité	
    		      int  EI=tabEtudInc.length; // nombre etudiants incompatibles
    		      String id1;
    		      String id2;		      
    		      String idRe;
    		      int inRe;
    		      int n1;
    		      //int EC=n*n-1/2-EI; // nombre etudiants compatible
    		      Boolean Ajouter = false;                   // Si Ajouter = vrai sortir du while
    		      String[][] tabTirage = new String[1][2];   // 2x tirés, rangés et remplacés au tirage suivant
    		      // Mets la liste étudiant dans ArrayList pour faciliter le traitement
    		      ArrayList<String> tabEtudCopy = new ArrayList< String > (); 
    		      // Récupère les selections et à la sortie recopierra dans tabEtudSelect
    		      ArrayList<String> tabEtudSelectCopy = new ArrayList< String > ();
    		      int c = tabEtudSelect.length/2; // Nombre de chambres, doit être = m / 2 et m = tabEtudSelect.length
    		      for(int i = 0; i < n; i++) {
    		         tabEtudCopy.add(tabEtud[i][0]); // Transfert de la liste étudiant dans la copie
    		      }	 	     		      
     
    		      /*Saisie des étudiants  dans des chambres; i=0 une chmbre donc deux étudiants; i=1 une seconde
    		      chambre donc deux "tudiants encore ainsi de suite*/
     
    		      if(EI==n*n-1/2) {		    	 
    		          // si tout le monde est incompatible avec tout le monde alors on n'entre pas dans la boucle;
    		    	  // en plus on a deux choix
    		    	  //1-afficher le message d'information
    		    	  //2-faire une seule selection et sortir
    		    	  System.out.println("Selection impossible, tout le monde est incompatible avec tout le monde!");
    		         /* OU
    		            Random random = new Random();        // Tirage au sort ou nombre aleatoire	        		                       
    		            n1 = random.nextInt(n);              // Choix dans l'intervale  0 et n
    		            id1 = tabEtudCopy.get(n1); 
    		            tabEtudSelectCopy.add(id1);            // Si id1 retenu, l'etudiant sera selectionné			 		   			
     
    		    	  */
    		          } else {
    		    	         loop: 
    		    	  for(int i = 0; i < c; i++)  {
    		          Ajouter = false;                        // Chaque ajout egal vrai pour sortir du do while		         
    		         do {
    		            Random random = new Random();        // Tirage au sort ou nombre aleatoire
    		            int nb;
    		            n1  = tabEtudCopy.size();            // Determine le nombre elements restants dans la copie etudiantes; chaque selection est supprimmé dedans 
    		   		 if(n1 == 1){ 
    		   			 id1 = tabEtudCopy.get(n1);          // il est le seul à être logé	dans une chambre 	
    		   			 tabEtudSelectCopy.add(id1);            // Il est rangé dans le tirage de façon definitive
    		             tabEtudCopy.remove(n1);           // Oté du tableau 
    		   			 break loop;                       //fin de selection	
    		   	 } else {
    		   		    // la selection continu meme si le nombre de chambre > aux nombres compatibilites, car la selection s'arrete quand n1=0
    		          nb = random.nextInt(n1);              // Choix dans l'intervale  0 et n
    		          id1= tabEtudCopy.get(nb);            // Si id1 retenu, l'etudiant sera selectionné		            
    		            clobalId = id1;                      //clobalId est un string car c'est id1 declaré comme variable clobale
    		         idRe = recherche(tabEtudInc,clobalId); // id1 dans liste d'incompatibilié ?		          
    		        if(idRe == "-1") {		            	
    		          // Si OUI alors il est ajouté
    		          tabTirage[0][0] = id1;            // Il est rangé dans le tirage
    		          tabEtudCopy.remove(nb);           // Oté du tableau pour ne pas retomber sur le même
    		           n1   = tabEtudCopy.size();
    		           nb  = random.nextInt(n1);
    		           id2 = tabEtudCopy.get(nb);
    		           tabTirage[0][1] = id2;            // Son binomme est aussi tiré
    		           tabEtudCopy.remove(nb);
    		           Ajouter = true;                   // Pour sortir du while, aller dans la chambre suivante		              
    		          }
    		            else {           			            			            	            	
    		            	// Sinon alors on cherche le second et on vérifie s'il sont incompatibles
    		             inRe = recherche2(tabEtudInc,clobalId); // avant on cherche son indice  d'incompatibilié ?
    		             Indice =inRe;
    		             tabEtudCopy.remove(nb);           // Evidemment il faut supprimer id1 avant
    		             n1   = tabEtudCopy.size();
    		             // System.out.println("n1: "+n1);
    		             nb  = random.nextInt(n1);		              
    		            // System.out.println("nb: "+nb);
    		            id2 = tabEtudCopy.get(nb);	
    		            //  System.out.println("id2: "+id2);
    		            if(((id1.equals(tabEtudInc[Indice][0])) && (!id2.equals(tabEtudInc[Indice][1]))) 
    		                 || ((id1.equals(tabEtudInc[Indice][1])) && (!id2.equals(tabEtudInc[Indice][0])))) {
    		                          // Si le couplage est possible alors on les tire tous les deux
    		                 tabTirage[0][0] = id1;
    		                 tabTirage[0][1] = id2;
    		                 tabEtudCopy.remove(nb);
    		                 Ajouter = true;
    		                }
    		               else 		            	   
    		              tabEtudCopy.add(id1);              		               
    		               /* Si le duo n'est pas possible, on remet dans la table tabEtudCopy l'id1 qui a
    		                  été supprimé pour recommencer sans changer de chambre. Ajouter reste false */
    		            }
    		   		    }
    		         } while(Ajouter == false);
    		         // Les deux tirés sont rangés dans la selection
    		         n1 = tabEtudSelectCopy.size();
    		         tabEtudSelectCopy.add(tabTirage[0][0]);
    		         tabEtudSelectCopy.add(tabTirage[0][1]);
    		      }
    		      /* récupére la selection en tableau static si le travail est fini 
    		      et tabEtudSelectCopy aura une taille = 2*c   */		      
    		      int j = 0;
    		      for(String elem:tabEtudSelectCopy) {       // Tiens on repasse de c à m !
    		         tabEtudSelect[j][0] = elem;             // Récupération
    		         System.out.println("tabEtudSelect: "+elem);
    		         j++;
    		      }
    		   }
     
    		   } 
    		   //______________________________________________________________________________________________
    		   public static String recherche(String [][]tabEtudInc, String clobalId) {
    		      int n = tabEtudInc.length;		     
    		      String sortietest="-1"; // cherche les incompatibilités, sort avec "-1" si id n'existe pas
    		      loop:
    		    for(int i = 0; i < n ; i++) {
    		    for(int j = 0; j < 2; j++ ) {
    		    if(clobalId.equals(tabEtudInc[i][j])) {     		               
    		     sortietest = tabEtudInc[i][j];
    		      break loop;
    		       }
    		       }
    		      }	      		     
    		      return sortietest   ;   
    		   }
    		   public static int recherche2(String [][]tabEtudInc, String clobalId) {
    			      int n = tabEtudInc.length;
    			      int Indice=0; // cherche son indice dans la table incompatibilité
    			     loop:
    			     for(int i = 0; i < n ; i++) {
    			     for(int j = 0; j < 2; j++ ) {
    			     if(clobalId.equals(tabEtudInc[i][j])) {	
    			     Indice = i;			              
    			     break loop;
    			      }
    			      }
    			     }	    			     
    			      return Indice   ;   
    			     }		   	
                                }
    Si je considère un dortoir comme un couvant:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    	// Sélectionbis par tirage au sort deuxième version________________________________________________________________
    		   public static void Selection2(String [][] tabEtudSelect, String [][]tabEtud,
    		      String [][]tabEtudInc, Scanner keby,String clobalId) {
    		      int n = tabEtud.length;		     
    		      int  EI=tabEtudInc.length; // nombre étudiants incompatibles
    		      String id1;		      
    		      String idRe;		    
    		      int n1;
    		      String idSup;
    		      int cpteur;
    		      //int EC=n*n-1/2-EI; // nombre etudiants compatible		              
    		      // Mets la liste étudiant dans ArrayList pour faciliter le traitement
    		      ArrayList<String> tabEtudCopy = new ArrayList< String > (); 
    		      // Récupère les selections et à la sortie recopierra dans tabEtudSelect
    		      ArrayList<String> tabEtudSelectCopy = new ArrayList< String > ();		     
    		      int c = tabEtudSelect.length; // Nombre de plce à pouvoir / qui est equivalent aux nombrex de chambres dans recherche1
    		     //création de copy de la table etudiant
    		      for(int i = 0; i < n; i++) {
    		         tabEtudCopy.add(tabEtud[i][0]); // Transfert de la liste étudiant dans la copie
    		      }	    		    	            
     
    	            /*Sélection des étudiants  dans un couvant ou une grande salle*/
     
    		      if(EI==n*n-1/2) {		    	 
    		          // si tout le monde est incompatible avec tout le monde alors on n'entre pas dans la boucle;
    		    	  // en plus on a deux choix
    		    	  //1-afficher le message d'information
    		    	  //2-faire une seule selection et sortir
    		    	  System.out.println("Selection impossible, tout le monde est incompatible avec tout le monde!");
    		         /* OU
    		            Random random = new Random();        // Tirage au sort ou nombre aleatoire	        		                       
    		            n1 = random.nextInt(n);              // Choix dans l'intervale  0 et n
    		            id1 = tabEtudCopy.get(n1); 
    		            tabEtudSelectCopy.add(id1);            // Si id1 retenu, l'etudiant sera selectionné			 		   			
     
    		    	  */
    		           } else {
     
    		    	  cpteur=0;         
    		         Random random = new Random();        // Tirage au sort ou nombre aleatoire
    	                 int nb;
    		         do {		           
    		            n1  = tabEtudCopy.size();            // Détermine le nombre éléments restants dans la copie étudiantes; chaque sélection est supprimé dedans 
    		   	   if(n1 == 1){ 
    		   	   id1 = tabEtudCopy.get(n1);          // il est le seul à être logé	dans une chambre 	
    		          tabEtudSelectCopy.add(id1);            // Il est rangé dans le tirage de façon definitive
    		          tabEtudCopy.remove(n1);           // Oté du tableau 		
    		          n1=0; 
                              cpteur++ ;
    		   	  } else {
    		   		    // la sélection continu même si le nombre de chambre > aux nombres compatibilités, car la sélection s’arrête quand n1=0
    		          nb = random.nextInt(n1);              // Choix dans l’intervalle  0 et n
    		          id1= tabEtudCopy.get(nb);            // Si id1 retenu, l’étudiant sera sélectionné		            
    		          clobalId = id1;                      //clobalId est un string car c'est id1 declaré comme variable clobale		           
    		          idRe = recherche(tabEtudInc,clobalId); // id1 dans liste d’incompatibilité ?		          
    		          if(idRe == "-1") {		            	
    		               // Si oui alors il est ajouté
    		           tabEtudSelectCopy.add(id1);   // Il est rangé dans la sélection		            	  
    		           tabEtudCopy.remove(nb);           // Oté du tableau pour ne pas retomber sur le même		              
    		            cpteur++;
    		            n1  = tabEtudCopy.size();		             
     
    		            }
    		            else {  
     
    		            tabEtudSelectCopy.add(id1);   // Il est rangé dans la sélection		            	  
    			    tabEtudCopy.remove(nb);           // Oté du tableau pour ne pas retomber sur le même			              
     
    			         // suppression des id incompatibles avec id sélectionné
    			      idSup="-1";
    			      for(int i = 0; i < tabEtudInc.length; i++) {// recherche de l'id dans incompatibilité
    			     for(int j = 0; j < 2; j++ ) {
    			      if(id1.equals(tabEtudInc[i][j])) { 
    			      if(j == 0) { // correspond à id sélectionné
    			      idSup = tabEtudInc[i][1];  // correspond à id incompatible
    			      }else { // j=1 correspond à id sélectionné
    				idSup = tabEtudInc[i][0];  //j=0 correspond à id incompatible
    				}
    			       	  // suppression dans la liste d’étudiants
    			     int h=0;
    			     sortir:
    			     for(String elem:tabEtudCopy) {  			            				              			            				         
    			        h++;
    			     if(idSup==elem) {                  // id trouvé
    			      	tabEtudCopy.remove(h) ;       //id supprimé
    			   	break sortir;
    				  }
    			         }	    				   		               
    			         }			            	  
    		  	         }	 	
    		                }
     
    			       cpteur++;
    			      n1  = tabEtudCopy.size();
     
    		            }
     
    		   	   }  		   		 
     
    		         } while((cpteur!=c) && (n1!=0));
     
    		      /* récupère la sélection en tableau static si le travail est fini 
    		      et tabEtudSelectCopy aura une taille = 2*c   */		      
    		      int j = 0;
    		      for(String elem:tabEtudSelectCopy) {      
    		         tabEtudSelect[j][0] = elem;             // Récupération
    		         System.out.println("tabEtudSelect: "+elem);
    		         j++;
    		      }
    		   }
     
    		   }

  13. #53
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Bonjour tout le monde;

    Je voudrais savoir si ce problème est de NP-difficile?

    J'ai travaillé dans ce sens mais si c'est confirmé par des experts, je serrais à 100% rassuré;

    Merci d'avance;

  14. #54
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    pour info :

    Nom : Screenshot from 2022-11-07 17-44-44.png
Affichages : 262
Taille : 10,4 Ko

  15. #55
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par WhiteCrow Voir le message
    pour info :

    Nom : Screenshot from 2022-11-07 17-44-44.png
Affichages : 262
Taille : 10,4 Ko
    Merci pour le message seulement ça n’apparaît pas chez moi ici

  16. #56
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    Sur la page ""Tableau de bord"", à gauche, il y a un lien ""Mes messages"".
    Tu vas dans ""Boite de réception"",
    Et tout en bas, tu vas avoir l'information : Nombre total de messages // Nombre maximum de messages autorisé.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  17. #57
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Sur la page ""Tableau de bord"", à gauche, il y a un lien ""Mes messages"".
    Tu vas dans ""Boite de réception"",
    Et tout en bas, tu vas avoir l'information : Nombre total de messages // Nombre maximum de messages autorisé.
    Merci;

    J'ai supprimé des messages qui bloquaient la réception des messages privés;

  18. #58
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2015
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Guinée

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2015
    Messages : 405
    Points : 0
    Points
    0
    Par défaut
    Article à amender
    Images attachées Images attachées

  19. #59
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 393
    Points
    9 393
    Par défaut
    J'ai vu que tu mettais mon pseudo sur ton document dans les remerciements.
    J'aimerais que tu le retires.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  20. #60
    Expert confirmé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 324
    Points : 4 134
    Points
    4 134
    Par défaut
    Bonjour,

    Comme tbc92, je ne souhaite pas figurer dans les remerciements. Même si l'intention est louable, nos interventions restent du conseil sans participation effective aux projets.

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

Discussions similaires

  1. [RegEx] Aide pour trouver une fonction contenant telle variable
    Par xtremdisc dans le forum Langage
    Réponses: 4
    Dernier message: 30/08/2016, 12h36
  2. Réponses: 2
    Dernier message: 02/04/2012, 16h56
  3. Besoin d'aide pour trouver une classe à créer.
    Par tonykart13 dans le forum Général Python
    Réponses: 13
    Dernier message: 09/02/2012, 21h18
  4. Réponses: 3
    Dernier message: 02/03/2007, 16h28
  5. Réponses: 21
    Dernier message: 10/04/2006, 14h29

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