Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2818 connectés 

 

Sujet(s) à lire :
    - {Vb.net} Form Opacity
 

 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[Ada] Mon implémentation du Jeu du Taquin ::=la file de priorités

n°1370975
Profil sup​primé
Posté le 20-05-2006 à 05:44:01  answer
 

Reprise du message précédent :
Bon, ben fausse anonce, ça marche toujours pas,
pour une matrice 2x2 pas de probleme  [:666rip666]  
 
A+

mood
Publicité
Posté le 20-05-2006 à 05:44:01  profilanswer
 

n°1370979
Profil sup​primé
Posté le 20-05-2006 à 07:20:47  answer
 

Quasiment 5 minutes pour resoudre un matrice 3x3 sur un Pc  :lol:  
 
L'ago, :sol:  
 

Code :
  1. while not Fini loop
  2.     while A_Un_Fils(Dans) loop
  3.            Passer_Au_Suivant(Dans);
  4.     end loop;
  5.     ---------------------
  6.        ajouter_les noeuds suivants
  7.     ---------------------
  8.      Passer_Au_Parent(Dans);
  9.         while not A_La_Racine(Dans) loop
  10.            while A_Un_Frere(Dans) loop
  11.  
  12.               Passer_Frere_Suivant(Dans);
  13.               while A_Un_Fils(Dans) loop
  14.                  Passer_Au_Suivant(Dans);
  15.               end loop;
  16.             ---------------------
  17.                ajouter_les noeuds suivant
  18.              ---------------------
  19.               Passer_Au_Parent(Dans);
  20.  
  21.            end loop;
  22.          Passer_Au_Parent(Dans);
  23.       end loop;
  24.   end loop;

 :wahoo:

n°1371406
Profil sup​primé
Posté le 21-05-2006 à 10:00:11  answer
 

:hello:  
A la rechereche de doublons
 
Comme aujoud'hui c'est dimance je me lance a la recherche d'un algo pour revisiter mon arbre afin de determiner si une matrice a dejas des enfants dans l'arbre, histoire de minimiser un peut la consomation de la mémoire.  
il s'agit de revisiter un arbre n-aire peut-etre un peut particulier puisque je l'ai conçu moi même, sans me conformer a un standard.
 

Code :
  1. -- retourne VRAI si l'on trouve la matrice dans les noeuds des etages supperieurs, faut si non.
  2. function Dans_Les_etages_supperieurs(Dans : T_Arbre; Matrice : T_Matrice) Return Boolean;


 
les sources de Taquin_9 sont toujours dispo ICI
 
je pourrai lancer un truc du genre, le premier qui trouve l'algo gagne un boutielle de champagne, mais je me tate,  
... aller bon c'est ok, une bouteille de champ au gagnant  ;)

n°1371999
Profil sup​primé
Posté le 22-05-2006 à 11:41:29  answer
 

Voila pour la recherche de doublons, l'algorithme est quasiment le même que celui utilisé pour la creation de l'arbre . Avec cet algo j'ai divisé par 100 le nombre de matrices générées pour trouver une solution dans une matrice 3x3. j'ai lancé hier soir la resolution d'une matrice 4x4 au par avant impossible a resoudre avec mon PC (trop peut de memoire), j'attend les resultat. En tout cas c'est lent  [:666rip666]  
 

n°1373019
Profil sup​primé
Posté le 23-05-2006 à 12:00:58  answer
 

Hey, how do you do ?
 
J'ai lessé tomber ma resolution de matrice 4*4 apres 18 heures  [:frag_facile] , 500_000 matrices générées, le programme ramait lamentablement.
 
Je suis donc obligé, de m'attaquer à d'autres algoritmes, de vrais algos.
 
C'est donc à l'algorithmes A* que je décide de m'attaquer.
http://www-apache.imag.fr/~zara/SiteFlash/cv/IntellArtif/img43.png
et déjàs, j'y comprend qu'dâle, enfin presque. Y a du taf.
 
J'aurai grand plaisir à partager le travail, non pas pour en faire moins mais pour avoir la contrainte de travailler en equipe, ce qui me pousserai à faire un travail peut-etre un peut plus carré.
 
La page complete au j'ai trouvé l'image ci-dessu L'algorithme A*
un autre lien vers l'algorithme A* Taquin ameliore
 
Voila, y a plus qu'à   :p  

n°1373189
Profil sup​primé
Posté le 23-05-2006 à 14:30:59  answer
 

je me repete un peut, c'est pour la bonne cause  
 


algorithme de DIJKSTRA
 
données :
      un graphe d'ordre n
      un sommet particulier x0 dans ce graphe (la source)
      les longueurs L[x,y] des arcs x -> y du graphe (réels >= 0)
         (si l'arc x -> y n'existe pas, L[x,y] vaut +infini)
 
résultats :
   pour chaque sommet y du graphe :
         la longueur du plus court chemin allant de x0 à y
         le précédent de y dans ce plus court chemin (pour reconstituer le chemin)
 
   initialisations :
      marquer x0
      pour tout sommet y non marqué :
         poser D[y] = L[x0,y]
         poser P[y] = x0
      fin pour
 
   traitement :
      tant qu'il reste des sommets non marqués
         soit y le sommet non marqué dont la distance D[y] est la plus courte
         marquer y
         pour tous les sommets z non marqués tels qu'il existe un arc y -> z :
            si D[z] > D[y] + L[y,z] alors
               remplacer D[z] par D[y] + L[y,z]
               remplacer P[z] par y
            fin si
         fin pour
      fin tant que
 
fin de l'algorithme de DIJKSTRA


Source : Chemins optimaux
 
Wikipedia de l'algorithme A*

n°1373281
Profil sup​primé
Posté le 23-05-2006 à 15:37:24  answer
 

j'ai faï oublier cette superbe page sur le sujet Implémentation de l'algorithme de Dijkstra algorithme duquel dérive l'agorithme A*

n°1374121
Profil sup​primé
Posté le 24-05-2006 à 14:14:04  answer
 

Un autre speudo-code de l'algorithme A* ou A star,  
 


Recherche informée : l'algorithme A*
 
En général, les méthodes décrites précédemment sont irréalistes, elles consomment trop de mémoire ou trop de temps. Une solution est d'ajouter de l'information heuristique pour orienter la recherche.
 
On se donne une fonction f capable d'évaluer un noeud et définie comme suit :
f(n) = g(n) + h(n)
 
avec
 
    * g(n) le coût du meilleur chemin connu pour atteindre n depuis l'état initial ;
    * h(n) l'estimation du coût du chemin entre n et un état final ;
    * f(n) est donc une estimation du coût du meilleur chemin solution passant par n.
 
On note f*, g* et h* les coûts optimaux.
 
Insistons sur le fait que h(n) garde la même valeur alors que g(n) varie en cours de recherche. On a cependant toujours g(n) supérieure ou égale à g*(n).



Algorithme A-étoile
 
Début
  ouverts = { état initial }
  fermés  = vide
  succès  = faux
  Tant que (ouverts non vide) et (non succès) faire
    choisir n dans les ouverts tel que f(n) est minimum
    Si est_final(n) Alors succès=vrai
    Sinon ouverts = ouverts privé de n
          fermés  = fermés + n
          Pour chaque successeurs s de n faire  
            Si (s n'est ni dans ouverts ni dans fermés)
            Alors
              ouverts = ouverts + s
              père(s) = n
              g(s) = g(n) + coût(n,s)
            Sinon
              Si (g(s) > g(n) + coût(n,s)) Alors
                père(s) = n
                g(s) = g(n) + coût(n,s)
                Si (s se trouve dans fermés) Alors
                  fermés  = fermés  - s
                  ouverts = ouverts + s
                Fin si
              Fin si
            Fin si
          Fin pour
    Fin si
  Fin TQ
Fin

n°1374128
Profil sup​primé
Posté le 24-05-2006 à 14:21:43  answer
 

Encore un speudo-code de l'algorithme A* ou A star
 


Paramètres :
 
    START : nœud de départ
    GOAL : nœud d'arrivée
    OPEN : liste des nœuds à traiter (en général : représenté comme une file de priorité)
    CLOSED : liste des nœuds traités
    N : nombre de nœuds
    h() : distance estimée d'un nœud i au nœud d'arrivée (i ∈ {1, 2, ..., N})
    g() : distance réelle d'un nœud i au nœud de départ (i ∈ {1, 2, ..., N})
    parent() : parent d'un nœud i (parent(x) donne la position dans parent() du nœud précédant x))



    * Initialiser la liste OPEN à vide
    * Initialiser la liste CLOSED à vide
 
 
    * Ajouter START à la liste OPEN
    * Tant que la liste OPEN n'est pas vide
 
    * Retirer le nœud n de la liste OPEN tel que f(n) soit le plus petit
    * Si n est le GOAL on a trouvé une solution ; traiter CLOSED et retourner la solution.
 
    * Pour chaque successeur n´ du nœud n
 
    * Heuristique H = estimation du coût de n´ au GOAL
    * Stocker dans G_tmp g(n´), le coût g(n) + le coût pour aller de n à n´
    * Stocker dans F_tmp f(n´), g(n´) + H ; c'est l'heuristique
 
    * Si n´ se trouve déjà dans OPEN avec un f(n´) meilleur on passe au point n´ suivant
    * Si n´ se trouve déjà dans CLOSED avec un f(n´) meilleur on passe au point n´ suivant
    * Mettre n dans parent(n')
    * Mettre G_tmp dans g(n')
    * Mettre F_tmp dans f(n´)
    * Retirer n´ des deux listes OPEN et CLOSED
    * Ajouter n´ à la liste OPEN
 
    * Ajouter n à la liste CLOSED
 


 
plus ça va, plus c'est plus pire  :pt1cable:

n°1374222
Profil sup​primé
Posté le 24-05-2006 à 15:06:16  answer
 

Le pire c'est quand même celui-la


Selectionne_Nœud (NŒUD)
 
Définit la valeur et le père de NŒUD. La caractéristique de valeur est donnée par l’heuristique d’évaluation en fonction de la valeur du chemin déjà pris, de la distance restant à parcourir jusqu’à la fin…
 
Meilleur_Element (PILE_PRIORITE)
 
retourne le meilleur nœud présent dans  PILE_PRIORITE
 
Est_Nœud_Final (NOEUD)
 
retourne VRAI si NŒUD est le fils du rectangle de déplacement de destination
 
Construit_Meilleur_Chemin (NŒUD)
 
construit le chemin final en remontant de père en père à partir du nœud final NŒUD
 
Place_Voisins (PILE_PRIORITE, NŒUD)
 
Met dans PILE_PRIORITE tous les voisins intéressants de NŒUD après avoir définit leurs caractéristiques.
 



Quant au pseudo-code de cette méthode, il ressemble schématiquement à ceci :
 
  PROGRAMME A_Star_Classic {
     PILE_PRIORITE        Open
     Selectionne_Nœud(Noeud_Depart)
     MET Noeud_Depart DANS Open
     TANT QUE (Open != VIDE) FAIRE {
            Nœud_Courant = Meilleur_Element(Open)
            SI (Est_Nœud_Final(Nœud_Courant) == VRAI) ALORS {
                    Construit_Meilleur_Chemin(Nœud_Courant)
                    RETOURNE (SUCCES)
            } SINON
    Place_Voisins(Open, Nœud_Courant)
      }
 RETOURNE (RATE)
}


 
mais je kif sur celui-la  [:frag_facile]  
 


Voisins_Possibles (NŒUD)
 
Retourne le nombre de nœuds intéressants à sélectionner qui sont voisins de NŒUD. Un nœud voisin est intéressant s’il est possible d’aller dessus, s’il n’a jamais été parcouru ou s’il a été parcouru mais par un chemin moins bon et s’il permet au moins dans le meilleur des cas de mener vers un chemin meilleur que le meilleur trouvé jusqu’alors.
 
Est_Nœud_Final (NŒUD)
 
Retourne VRAI si NŒUD est le fils du rectangle de déplacement de destination
 
Met_A_Jour_Meilleur_Chemin ()
 
Définit le chemin actuel comme le chemin sélectionné
 
Revenir_Au_Pere ()
 
Revient au nœud père
 
Meilleur_Voisin (NŒUD)
 
Retourne le voisin ayant la meilleure valeur d’après l’heuristique d’évaluation
 
Possible_Mise_A_Jour_Meilleur_Chemin (NŒUD)
 
Regarde si NŒUD appartient au meilleur chemin actuel, et si oui, met à jour le meilleur chemin en conséquence



Quand au pseudo-code de cette méthode, il ressemble schématiquement à ceci :
 
TANT QUE (Voisins_Possibles(Nœud_Courant) > 0) FAIRE {
SI (Est_Nœud_Final(Nœud_Courant) == VRAI) ALORS
Met_A_Jour_Meilleur_Chemin()  
TANT QUE (Voisins_Possibles(Nœud_Courant)==0) FAIRE  
Revenir_Au_Pere() Nœud_Courant = Meilleur_Voisin(Nœud_Courant)  
Possible_Mise_A_Jour_Meilleur_Chemin(Nœud_Courant) }


 
Ce dernier est une variante "recherche en profondeur" de l'algorithme A*
 
mais on puet lire dans Résolution de problèmes en Intelligence Artificielle

Citation :


Cas particuliers :
 
    * si h=0, alors f(n)=g(n) et l'algorithme se comporte comme une largeur d'abord ;
    * si f(n) = h(n), l'algorithme ressemble à une profondeur d'abord, on parle de gradient ;
 


 
Alors bon, va comprendre Charles  :??:

mood
Publicité
Posté le 24-05-2006 à 15:06:16  profilanswer
 

n°1374751
Profil sup​primé
Posté le 25-05-2006 à 07:02:14  answer
 

:hello:  
 
Encore de l'algorithme A*, ce serait plutôt ça forme mathematique
 
Principe général : évaluation du coût
total d’un sommet
 
Coût total (F) = Coût depuis la source (G) +
Coût vers la destination (H)
 
ß G : Coût depuis la source
° Algorithmes classiques (Ford, Bellman, Dijkstra)
° Gi = min Gj+ Cij / i prédecesseur de j
                                Cij coût de l’arc (i,j)
ß H : Coût vers la destination
° Difficile puisque le reste du chemin (vers la
destination) est encore inconnu.

n°1375059
Profil sup​primé
Posté le 25-05-2006 à 19:56:29  answer
 

j'ai un problème avec cette procedure, qui plante sur le Put_Line("TOTO-11" ); ligne 7 et courant n'est pas null à la ligne 8 :pt1cable:  
 
 

Code :
  1. ------------------------------------------------------------------------
  2.   --   la fonction qui retourn l'element avec la distance minimale      --
  3.   --   Methode : parcourt total de la liste
  4.  
  5.   function L_Element_Min (Ensemble : T_Ensemble) Return T_Place_Ensemble is
  6.      Courant : T_Ptr_Place_ensemble := Ensemble.Tete;
  7.      Element_Min : T_Ptr_Place_Ensemble := Ensemble.Tete;
  8.   begin
  9.      Put_Line("TOTO-11" );
  10.      if Courant = null then
  11.         raise Program_Error;
  12.      end if;
  13.      while Courant.suivant /= null loop
  14.         Put_Line("TOTO-11-1" );
  15.         if (Distance_A_La_Terminale(Courant.Matrice,Dans.Matrice_melangee,Dans.Matrice_Initiale) +
  16.           Distance_A_L_initiale(Courant.Matrice,Dans.Matrice_melangee)) <
  17.           (Distance_A_La_Terminale(Element_Min.Matrice,Dans.Matrice_Melangee,Dans.Matrice_Initiale) +
  18.           Distance_A_L_initiale(Element_Min.Matrice,Dans.Matrice_melangee)) then
  19.            Put_Line("TOTO-12" );
  20.            Element_Min := Courant;
  21.         end if;
  22.         Put_Line("TOTO-13" );
  23.         Courant := Courant.Suivant;
  24.      end loop;
  25.      Put_Line("TOTO-14" );
  26.      return Element_Min.all;
  27.   end L_Element_Min;


Merci pour votre aide

n°1375148
Profil sup​primé
Posté le 25-05-2006 à 22:00:54  answer
 

[:trotter88]  
 
Ben en fait courant est null alors c'est normal que ça plante  [:dawa_neowen]  
Tout ça a cause de mes calculs de distances, c'est n'importe quoi  :pfff:
en plus je les ai afficher pour voir leur poids, ils sont fauts  :cry:  
je retourne voire que quoi il en retourne  [:aldiallo]  
 

n°1375196
Profil sup​primé
Posté le 25-05-2006 à 23:02:54  answer
 

Finalement c'est à peut près "juste", j'avais mal compris ce que le m'expliquais à moi même
j'ai mis juste entre guillemets parce que c'est encore mon code perso et pas les distances réelles
 
je programme tourne un peut, je resouds, surement pas hazard, une matrice / trois
 
 
mais maintenant j'ai un problème avec un := new T_Type ' (null,val); qui lève Constraint_Error
 
un := new qui lève constarint_error, ça dis quelque chose à quelqu'un à cette heure ci ?
 
Merci


Message édité par Profil supprimé le 25-05-2006 à 23:03:35
n°1375235
Profil sup​primé
Posté le 25-05-2006 à 23:38:47  answer
 

Ba, j'ai trouvé, merci à ceux qui planche

n°1375330
Profil sup​primé
Posté le 26-05-2006 à 09:01:21  answer
 

:hello:  
Comme aujourd'hui c'est vendredi, je fait le point
 
1 : dans le pseudo-code que j'utilise pour implémenter l'algorithme A*, qui se trouve un peut plus haut dans cette page,
      je ne comprend pas pere(s) = n, j'ai bien une idée, mais pour l'instant elle n'apporte rien.
 
2 : j'ai implémenté deux fonction Distance_A_Linitiale et Distance_A_La_Terminale qui calculent les distances et qui sont les même en fait
     ça m'étonnerai qu'elles soient justes, je les ai inventées en toute simplicité
 
3 : la fonction L_Element_min dépendant directement de ces fonction de calcul de distance,
     L_Element min doit etre faussé.
 
4 : l'algorithme tourne un peut, c'est à dire qu'il lui arrive de trouver une solution (pas optimale).
      Quand bien même, la liste des permutations obtenue dans l'ensemble fermé n'est pas continue,
      c'est à dire que je permute des element non contiguë dan la matrice
      Normal me dirais-vous vue les trois premiers points
 
Ma fonction de calcul de distance, retourne Somme

Code :
  1. for I in 0..N*M-1 loop
  2.         Somme := Somme + ((abs(Absisse(Courante,I) - Absisse(terminale,I)) +
  3.                           abs(ordonnee(Courante,I) - ordonnee(terminale,I))));
  4.      end loop;

 
 
j'ai entendu parler de pondération, mais je vois pas comment pondérer correctement cette somme.
j'ai bien un exemple, mais il est adapté a un Jeu de Taquin faisant toujours 3x3
 
Bonne journé à tous , sauf à Giz  ;) , dont j'attend avec impatience le retour sur le topic
Bonne continuation

n°1376166
Profil sup​primé
Posté le 28-05-2006 à 12:17:44  answer
 

:hello:  
 
Bonjour,
Comme aujourd'hui c'est dimache .... je vous l'ai déjàs faite peut-etre  [:dawa_neowen]  
 
je disais donc, comme demain c'est lundi, et que je voudrais pousser personne au travail  [:dawa_neowen]  
 
je vous propose, en cette belle journée de printemp,
de vous pencher, sans tomber, sur la manière d'obtenir une liste chainee, triée selon plusieur critères,
Deux en fait, dans mon cas ... c'est pour la liste Open de l'algorithme A Star
 
Voila, je ne sais pas si ça vaut le coup d'ouvrir un nouveau topic ?
 
j'ai deux clefs par element, Hcost et Ucost et je doit maintenir
une liste trier dans l'odre croissant selon une clef et decroissant selon l'autre clef
 
Je suis dans le cas oû les clefs ne sont pas uniques
 
exemple :
A 9
A 5
A 3
B 7
B 5
B 2
C 3
C 1
 
 
J'ai une procedure de trie-fusion, que j'ai utilisé succesivement avec les deux critères
mai je doit obtenir un truc dans ce genre
 
A n
A n
A n
B n
B n
C n
C n
 
 au premier trie,
 
et
 
X 9
X 7
X 5
X 5
X 3
X 3
X 2
X 1
 
 après le second trie
 
donc voila, comment trier, ou maintenir une liste triée selon 2 criteres ? tel est ma question
 
Bonne journée,
Bonne continuation
 
 
   

n°1376314
Profil sup​primé
Posté le 28-05-2006 à 20:43:22  answer
 

Voila, j'espere, la moitié d'un reponse à ma derniere interrogation,
comment obtenir un liste chainee triée selon deux criteteres ?
 
Pour trier, je ne sais pas trop, mais pour maintenir, voila ce que j'ai fait
 

Code :
  1. procedure Add(Ensemble : in out T_Ensemble ;
  2.                 Ptr : T_Ptr_Place_Ensemble)   is
  3.      Courant : T_Ptr_Place_Ensemble := Ensemble.Tete;
  4.      Precedent : T_Ptr_Place_Ensemble := null;
  5.  
  6.   begin
  7.      if Ensemble.Tete = null then
  8.         Ensemble.Tete := Ptr;
  9.         Ensemble.Longueur := Ensemble.Longueur + 1;
  10.      elsif Ensemble.Longueur < 2 then
  11.         if Ptr.hcost <= Courant.hcost then
  12.            if Ptr.ucost > Courant.ucost then
  13.               Precedent := Ensemble.Tete;
  14.               Ensemble.Tete := Ptr;
  15.               Ptr.Suivant := Precedent;
  16.               Ensemble.Longueur := Ensemble.Longueur + 1;
  17.            else
  18.               Ensemble.Tete.Suivant := Ptr;
  19.               Ensemble.Longueur := Ensemble.Longueur + 1;
  20.            end if;
  21.         else
  22.            Ensemble.Tete.Suivant := Ptr;
  23.            Ensemble.Longueur := Ensemble.Longueur + 1;
  24.         end if;
  25.      else
  26.         while Courant.Suivant /= null and then -- parcours selon un critere
  27.           Ptr.hcost > Courant.hcost loop
  28.            Precedent := Courant;
  29.            Courant := Courant.Suivant;
  30.         end loop;
  31.         while Courant.Suivant /= null and then -- parcours selon un deuxieme criteres
  32.           Ptr.ucost < Courant.ucost loop
  33.            Precedent := courant;
  34.            Courant := Courant.Suivant;
  35.         end loop;
  36.         if Precedent = null then
  37.            raise Program_Error;
  38.         end if;
  39.         Precedent.Suivant := Ptr;
  40.         Ptr.Suivant := Courant;
  41.         Ensemble.Longueur := Ensemble.Longueur + 1;
  42.      end if;
  43.   end Add;


Des boucles successives de parcours de la chaine avec des criteres de comparaison differents

 

n°1377212
Profil sup​primé
Posté le 30-05-2006 à 09:45:41  answer
 

:hello:  
Et bonjour,
 
j'appelle au secour, ...
 
j'ai un bug monstrueu dans mon implementation de l'algorithme A star
 
dans la fonction existe qui renvoie vrai si la matrice existe dans une liste chaînée, faut si non
 
et bien vouz savez quoi ... courant.suivant n'est jamais null :??:  
autrement dit la liste est infinit
 
alors j'ai mis des .suivant := null; dans mes procedure d'extraction et d'insertion, poll et put, la source et la destination
 
d'ou mon appel au secour
 
la fonction existe, est tout ce qu'il y à de plus classique
 

Code :
  1. function Existe (Ensemble : in T_Ensemble ; L_Element : T_Matrice) return Boolean is
  2.          Courant : T_Ptr_Place_Ensemble := Ensemble.Tete;
  3.       begin
  4.          while Courant /= null loop
  5.             if Sont_Egales(Courant.Matrice,L_Element)  then
  6.                return True;
  7.             end if;
  8.             Courant := Courant.Suivant;
  9.          end loop;
  10.          return False;
  11.       end Existe;


 
Quelqu'un aurait-il une idée de l'erreur ?
 
le reste des source de Taquin_14 est disponible ICI


Message édité par Profil supprimé le 30-05-2006 à 09:51:10
n°1377299
Profil sup​primé
Posté le 30-05-2006 à 10:30:19  answer
 

Un autre monstruosité pendanss qu'on y est
 

Code :
  1. Count_Mal_Places : T_Borne_2 := T_Borne_2'Last+1;


 
et ça compile, et ça compile, et oui,  :lol:  
 
elle est bonne, non   :fou:  :pt1cable:  :cry:  :heink:

n°1378445
Profil sup​primé
Posté le 31-05-2006 à 22:19:14  answer
 


 
 :hello:  
 
Donc, voila, la deusième version, plus serieuse que la première, est presque terminée, Merci à Giz
j'ai utilisé dans cette deusième version pour resoudre le jeu du Taquin l'algorithme A* ou A star et la distance de Manhattan
j'ai ouvert un topic dans la categorie algo
 
il me reste c'est deux problèmes à resoudre,
 1 : je ne peut pas passé mon instance de integer_io.put en parametre de genericité de p_mon_appli_taquin à p_taquin  :heink:  :??:  
       le compilateur dit ::=

Citation :


no visible subprogram matches the specification for "Afficher"
missing specification for "Width" and other formals with defaults


 2 : ma liste Fermés/Close est circularisée, elle ne devrait pas l'etre  :heink:  :??:  
 
les sources de Taquin_14 sont toujours disponibles ICI
 

n°1379378
Profil sup​primé
Posté le 01-06-2006 à 23:17:21  answer
 

Bon, et bien finalement, c'est le boxon
 
En effet, j'avais fait une erreur, j'ai revue ma copie, essayant de me confrmer au publication sur l'algorithme A*,
Mais bizarement les performances sont moindres que celles obtenues l'orsque qu'il y avais des erreur ?
 
Alors je sais plus quoi faire,
 
Est-ce qu'un peut de desodre serait-il bénéfique à la resolution du taquin ?  :??:  
 
je repart donc dans la cat algo pour élucider l'affaire

n°1380727
ChOoN
Posté le 04-06-2006 à 11:46:21  profilanswer
 


 
=> Erf t'es trop rapide à la reflexion ;)

n°1383799
Profil sup​primé
Posté le 08-06-2006 à 14:49:17  answer
 

:hello: bonjours
 
j'ai dejàs ecrit dans mon topic Algo, mais comme c'est un implémentation Ada que je veux
 
Ce sont les Files de priorités que je souhiterai aborder ici,
En effet, pour implémenter le gestionnaire de donnée de l'ensemble Open de l'agorithme A*,
j'ai choisi une liste châiné, hors celle ci s'avere etre innadapté au probleme.
 
Sur les conseils de Giz, je souhaiterai implémenter une File de priorité avec Ada.
Seulement je comprend rien à ce qu'est une file de priorité,
surtout que, apparement, mon ensemble contient des doublons, pourtant differant, ou alors les element ne sont pas comparable. :pfff:  
Enfin bref, je reformule plus concretement
 
J'ai besoin d'une file de priorité pour l'ensemble Open de l'algorithme A* appliqué au jeu du taquin.
 
 
 

n°1385087
Profil sup​primé
Posté le 10-06-2006 à 13:37:06  answer
 

[:atreyu]  :hello: Bonjour à tous,
Toujours pour ma file de priorité, j'étudie la structure arbre de recherche, et je suis pas fort en arbre :p  
Est-ce que qu'elqu'un serait inspiré par un arbre binaire de recherche maintenu trier selon deux critère ??  
je ne sais pas si c'est possible ??
Enfin bref, c'est pour une file de priorités, avec Ada bien sure ! :sol: !
 
Merci, merci !!

n°1385366
Profil sup​primé
Posté le 11-06-2006 à 11:59:33  answer
 

j'ai fait un arbre qui marche pour une matrice 2x2, c'est pas mal déjàs  [:666rip666]  [:frag_facile]
je vous passe le code  [:666rip666]

n°1386216
Profil sup​primé
Posté le 13-06-2006 à 08:19:35  answer
 

:hello:  
Défois, que certains ne s'interressent aux offres d'emplois,
je réitère mon offre dans le topic
 
je suis planté, parce que je connais rien ni aux files de priorités, ni au tables de hachage, ni aux abres d'ailleur   [:dawa_neowen] :cry:  
 
je propose
200 Euros pour une implèmentation d'un gestionnaire de données pour l'ensemble Close de l'algoritme A* exploité dans le cadre d'un projet de developpement d'un programme de résolution du jeu du Taquin, apriori, une Table de hachage
 
300 Euros pour une implémentation d'un gestionnaire de données pour l'ensemble Open de l'algorithme A* exploité dans le cadre d'un projet de developpement d'un programme de résolution du jeu du Taquin, apriori, une File de priorités

Topic Annonces d'emplois
 
Merci à ceux qui planche  ;)  
 
A part ça ben, justement mon implémentation ne marche pas terrible,
j'ai des problème pour résoudre un matrice que Giz m'a donné dans le topic algo
j'aurais du générer un peut plus de 2_000_000 de matrices, j'en suis a 3_000_000
et j'ai pas la solution, Blem  :??:  
 
 
 

n°1386679
Profil sup​primé
Posté le 13-06-2006 à 16:21:51  answer
 

Je viens de trouver une info pour l'ensemble Close
A priori, il existe un paquetage Ada, Ada.Containers qui implémente une table de hachage
le problème la, c'est que j'ai pas cette librairie dans ma distrib Debian
 
Si quelqu'un pouvait me faire un petit tgz ou un zip du paquetage Ada.Containers et de ces fils ...
Merci
 
 
edit : Au zut, en fait je l'ai vous derangez pas, excuses


Message édité par Profil supprimé le 13-06-2006 à 16:25:26
n°1386698
Profil sup​primé
Posté le 13-06-2006 à 16:36:25  answer
 

Désolé pour ceux qui aurais sauté sur leur zipeur !!
Heureu d'apprendre qu'il existe une version 2005 d'Ada  :bounce:  
Malheuresement je ne pense pas pouvoir utiliser ces implémentations de containers de cette nouvelle version  :cry:  
 
 

n°1486837
Profil sup​primé
Posté le 05-12-2006 à 20:55:55  answer
 

:hello:  
 
Re bonjour à tous
 
D'abord, pour qui ça peut interresser, je viens de faire une mise à jour (de bosser un peu) de mes deux implémentations du jeu du Taquin sur denimes.net à http://denimes.net/des_prog/Taquin/index.html.
 
 
je suis toujours à la recherche de tuyaux, d'aide, de sous traitant pour implémenter une file de priorités et une table de hachage avec Ada (j'avais une adresse mais je l'ai perdu). Ces gestionnaires de données doivent etre adapté à l'algorithme Astar.

n°1486841
red factio​n
Posté le 05-12-2006 à 21:11:05  profilanswer
 

Code :
  1. procedure jovalise
  2.   count : Integer := 99;
  3. begin
  4.   while count > 0 loop
  5.     Put_Line ("[:666rip666]  " );
  6.   end loop;
  7. end jovalise;


 
 [:tinostar]


Message édité par red faction le 05-12-2006 à 21:12:06
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[RESOLU] retourner l'extension d'un fichier dans un champ file avec JS[Algo][Résolut]Cherche algorithmes pour le Jeu du Taquin
implémentation du protocole[Batch] Automatiser save file en codage ANSI
file() ou file_get_contents() en safe modePetit programme pour faire ses comptes ; C'est quoi ce gros bug
Problème pour récupérer le champ texte d'une input type fileFile et tableau de record
[Batch File] Problème d'espace 
Plus de sujets relatifs à : [Ada] Mon implémentation du Jeu du Taquin ::=la file de priorités


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR