Fermer2
onurLe 19/11/2007 à 12:24
Ce truc là m'est resté dans la tête:
http://linuxfr.org/~Montaigne/25405.html

et aussi mon prof de combinatoire qui avait dit un jour: "si on pouvait programmer en disant 'je veux tous les noeuds de degré 3', je programmerais plus souvent". Autrement dit, il voulait un langage déclaratif.
Avec LINQ, Microsoft a inseré du déclaratif dans son langage impératif C#, une fois la requete executé, on utilise l'objet comme une collection classique. En gros, pour ceux qui connaissent pas, on peut faire (en gros hein c'est pas un truc exact là):

var les_noeuds_qui_minteressent = from noeud in db.noeuds
                                                  where Count(noeud.neighbours) == 3
                                                  select new noeud;

// et après

foreach (b in les_noeuds_qui_minteressent){
    traitement(b);
}
et comme le montre le lien, ca commence à bouger du coté du libre aussi.


D'où l'idée: faire un langage déclaratif pour traiter les graphes. Ca pourrait servir à pas mal d'étudiants en graphe, mais aussi à des professionels qui se retapent les mêmes algos de parcours à chaque coup.
Est-ce que ça existe déjà? J'ai suivi les liens du premier post, j'ai rien vu de précis pour les graphes. Sinon,
Je vois deux possibilités:

1)* Voir ça comme une surcouche de SQL. On peut très bien stocker le graphe sous forme de tables, et traduire la requete écrit en langage déclaratif des graphes en SQL en adaptant. (Là j'ai pris un exemple simple, mais il faudrait pouvoir gérer des cas plus compliqués du genre: "trouver les noeuds qui forment un stable et qui sont du même coté par rapport aux coupes que l'arete 5 intercepte" par exemple )


2)* plus élégant mais plus chiant: Refaire un interpreteur OQL. En partant éventuellement des outils libres qui existent, puisque ce n'est pas bon de réinventer la roue en la rendant carré wink