J'écris un algorithme qui va d'abord prendre un fichier de configuration de divers paramètres et leur méthode associée comme suit:Quel est le temps d'exécution de mon algorithme?
/guest guestEndpoint
/guest/lists listEndpoint
/guest/friends guestFriendsEndpoint
/guest/X/friends guetFriendsEndpoint
/guest/X/friends/X guestFriendsEndpoint
/X/guest guestEndpoint
/X/lists listEndpoint
/options optionsEndpoint
X
représente ici un caractère générique, de sorte que toute chaîne correspondrait à cela. L'algorithme prend cela comme entrée et construit un arbre avec chaque noeud représentant un jeton entre les /
. Chaque feuille serait un point de terminaison valide.
Ensuite, lorsque l'utilisateur passe quelque chose comme guest/abc/friends
il traverserait l'arbre à partir de la racine, puis chercher un nœud guest
attaché à la racine, si elle existe aller au noeud guest
, si guest
ici invité aurait un wildcard
nœud, donc si abc
ne correspond pas avec l'un des nœuds de guest
, mais il y avait un nœud wildcard
présent, il irait à la wildcard
. Ensuite, il regarderait de wildcard
pour voir s'il avait un nœud friends
, si c'est le cas, allez-y. Ensuite, si friends
est un nœud feuille, il renvoie la méthode correspondante.
Cet algorithme a-t-il un sens? Je me demande quelle serait la durée de la recherche. Je pense que ce serait O (n) où n est le nombre de jetons dans le param qui a été passé.
Voici une image du graphique que je construirais en fonction de l'entrée ci-dessus. Chaque diamant représente une méthode de point final.
Merci pour toute aide!
Alors, ici, joker signifie un Joker que nous utilisons dans le jeu de la carte? La valeur de wild card peut correspondre à n'importe quoi. droite? – Omkar
@ user5250644 correct – zulusam
Ok, je suis toujours confus avec votre arbre. Pouvez-vous poster une image d'arbre pour référence? – Omkar