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

Recherche:

Type: Messages; Utilisateur: SpiceGuid

Page 1 sur 3 1 2 3

Recherche: Recherche effectuée en 0,02 secondes.

  1. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Skew max-heap

    :arrow: Un Skew max-heap est un tas-maximum.


    (* skew max-heap *)

    type 'a skew =
    | Empty
    | Skew of 'a skew * 'a * 'a skew

    let rec join ha hb =
  2. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Et oui, il y a forcément un nombre d'éléments en...

    Et oui, il y a forcément un nombre d'éléments en dessous duquel un algo avancé fait moins bien que l'algo naïf. Le contournement habituel consiste à trouver le point où ça bascule (par exemple...
  3. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Environnements par arbres de Braun

    Souvent, par facilité, pour coder un environnment on utilise une simple liste d'association d'un string vers un élément.
    Pour faire un peu mieux on peut désigner les variables par leur indice De...
  4. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : :ccool: tu as eu l'idée lumineuse que j'espérais,...

    :ccool: tu as eu l'idée lumineuse que j'espérais, malheureusement je ne peux pas modifier le code dans mon message original (parce que, pour une raison que j'ignore, je n'y ai pas de bouton Editer)
    ...
  5. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Pour ce qui est de la structure de données je...

    Pour ce qui est de la structure de données je t'encourage à chercher du côté du Kd-Tree.
    C'est généralisable à plus de 2 dimensions :

    (* Kd-Tree en 3D *)
    type ('a, 'b, 'c) kd_tree =
    | Nil
    ...
  6. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Merci

    Merci. J'ai corrigé mon code selon tes indications et j'ai ajouté 1 ou 2 idées d'extensions non triviales.
  7. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Dictionnaire réversible

    Il s'agit d'un TAD qui ressemble fort à un arbre binaire ordonné sauf qu'en plus il fait aussi "annuaire inversé". C'est-à-dire que le domaine d'arrivée est lui aussi totalement ordonné et peut faire...
  8. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Merci, c'est plus clair comme ça, c'est une...

    Merci, c'est plus clair comme ça, c'est une co-récursion sur une co-donnée, on ne lui demande pas d'être bien fondée, on lui demande d'être productive.

    La gendarmerie te souhaites bonne route...
  9. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Et qu'est-ce qu'elle fait la gendarmerie Haskell...

    Et qu'est-ce qu'elle fait la gendarmerie Haskell quand un véhicule grille un real_cmp [] [] ?
  10. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Pour être clair, ce que j'appelle "défonctorisé"...

    Pour être clair, ce que j'appelle "défonctorisé" c'est à la façon OCaml-Reins (une implantation défonctorisée), pas à la façon ExtLib (une interface défonctorisée).

    Plus concrêtement, au lieu de...
  11. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Après avoir tatonné pendant plusieurs heures...

    Après avoir tatonné pendant plusieurs heures (bench puis recodage, en boucle) j'ai finalement réussi à dépasser Map.Make. Ça m'a pris pas mal de temps parce que j'ai suivi toutes les fausses pistes...
  12. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Beaucoup de warnings dans ton code. J'ai...

    Beaucoup de warnings dans ton code.


    J'ai testé mon code (uniquement l'insertion): les arbres générés sont corrects et équilibrés.
    Mais les benchs sont décevants.
    Pourtant avant de les faire...
  13. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : :google: ...

    :google:

    http://caml.inria.fr/pub/ml-archives/caml-list/2006/08/d1ec8eab49ebe7ca40266e6edee0a88c.en.html

    Une autre astuce (utilisée par OCaml-Reins) c'est d'ajouter un variant Leaf pour les...
  14. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : L'astuce c'est d'utiliser un constructeur...

    L'astuce c'est d'utiliser un constructeur "équilibré".


    let balance n =
    match n.left,n.right with
    | None,None -> 0
    | Some t,None -> t.height
    | None,Some t -> - t.height
    ...
  15. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Nous parlons bien de la même chose. C'est juste...

    Nous parlons bien de la même chose.
    C'est juste que c'est mon style qui perturbe tes repères.
    Les algos sont exactement les mêmes que pour un arbre non-équilibré, il suffit simplement d'ajouter un...
  16. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Au point où j'en suis je vais me contenter d'une...

    Au point où j'en suis je vais me contenter d'une version correcte.
    On verra plus tard pour les perfs.

    Est-ce que ce code te paraît correct :question:
    (moyennant les fonctions d'équilibrage...
  17. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : C'est pareil du côté de Niklaus Wirth (Algorithms...

    C'est pareil du côté de Niklaus Wirth (Algorithms and Data Structures), pas utilisable car le code est trop impératif pour du Caml.


    La grande caractéristique d'un AVL c'est qu'il n'est jamais...
  18. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Insertion dans un AVL

    J'ai volontairement effacé toutes les autres fonctions pour améliorer la lisibilité.


    module AvlTreeMap (Ord: Ordered)
    =
    struct

    type key = Ord.t

    type 'a node =
  19. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : nouvel algo pour zip_intersect

    Petite analyse de complexité de la fonction Mutable.MakeSet.zip_intersect.
    Vu que cette fonction est utilisée pour de la recherche bidirectionnelle les deux arbres à intersecter croisent dans les...
  20. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : module PocketCube

    Un plateau de jeu pour le Rubik's Cube Pocket (La version 2 x 2 x 2 du cube classique).


    module PocketCube =
    struct

    type cubie =
    | C1 | C2 | C3 | C4 | C5 | C6 | C7
    type...
  21. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : module Solver

    Un higher-order module pour solutionner des problèmes sur les plateaux de jeu.

    Set est un module pour les tables de transposition
    find permet de rechercher un plateau satifaisant une...
  22. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : module Board

    Un module-type pour les plateaux de jeu.
    Typiquement la fonction compare servira à placer les positions de jeu dans une table de transposition (à l'aide du module Set).


    module type Board = ...
  23. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : module Set

    Un Mutable.Set higher-order module.
    J'ai trop besoin de la fonction zip_intersect, c'est essentiellement ça qui m'empêche d'utiliser le module standard Set.Make.
    (voir mon billet blog pour plus de...
  24. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : J'ai mis à jour la source du module Vect...

    J'ai mis à jour la source du module Vect pour que ni le fold ni le foldi ne traversent les noeuds contenant la valeur par défaut (que cette valeur soit None ou autre).

    Quant au module Shared, pour...
  25. Votes reçus
    +0 -0
    Réponses
    157
    Affichages
    118 623

    Important : Tu as bien vu, le fold "canonique" applique...

    Tu as bien vu, le fold "canonique" applique exactement un morphisme par constructeur, ici il n'y aurait donc qu'un seul morphisme de type 'a * 'b list → 'b.
    (je vais révoir ce passage)

    Sinon, il...
Affichage des résultats 1 à 25 sur 66
Page 1 sur 3 1 2 3