2010-10-22 10 views
1

J'essaie de comprendre comment http://domize.com code leur site pour la vitesse (j'utilise C#).Algorithme Domize

Par exemple, si je cherche

[cns] [VWL] [cns] [cns] [VWL] [cns]

Cette recherche un nom de domaine 6 lettres qui est dans ce commander

consonne, voyelle, consonne, consonne, voyelle, consonne

Entraînant:

babbab babbac babbad babbaf ... zuzzux zuzzuy zuzzuz

Comme il y a 21 consonnes et 5 voyelles (hors "y"), cela voudrait dire qu'il y a 21 * 5 * 21 * 21 * 5 * 21 = 4 862 025 combinaisons possibles.

Les résultats sont relativement rapides, de sorte qu'ils ne peuvent pas boucler tous ces résultats en si peu de temps. Maintenant, je comprends qu'ils ne montrent que les 100 premiers à la fois, mais pour obtenir ces 100 premiers, ils doivent construire au moins quelques-uns des résultats. Ma question est: comment font-ils si vite? Je pensais créer un tableau de tableaux. Dans ce cas, il y aurait 6 tableaux (à cause de 6 groupes), avec les possibilités consonne/voyelle dans chaque tableau. Mais je ne savais pas comment les parcourir correctement pour construire les domaines. Je suis sûr qu'il y a un moyen plus rapide/meilleur, comme peut-être des tables de hachage ou matrices ou quelque chose, mais je ne sais pas assez sur ceux pour le comprendre par moi-même.

Si quelqu'un pouvait fournir du code C#, j'apprécierais vraiment!

Merci!

Répondre

1

Je voudrais deviner qu'il est soutenu par une variante d'un trie.