J'ai été curieux par Jon Limjap's interview mishap et j'ai commencé à chercher des moyens efficaces de détecter le palindrome. J'ai vérifié les réponses palindrome golf et il me semble que dans les réponses sont deux algorithmes seulement, en inversant la chaîne et en vérifiant de la queue et la tête.Efficacité de la détection Palindrome
def palindrome_short(s):
length = len(s)
for i in xrange(0,length/2):
if s[i] != s[(length-1)-i]: return False
return True
def palindrome_reverse(s):
return s == s[::-1]
Je pense qu'aucune de ces méthodes sont utilisées dans la détection des palindromes exactes dans les séquences d'ADN énormes. J'ai regardé un peu autour et n'ai pas trouvé d'article gratuit sur ce que pourrait être un moyen très efficace. Un bon moyen pourrait être de paralléliser la première version dans une approche de division et de conquête, en assignant une paire de tableaux de caractères 1..n et longueur-1-n..length-1 à chaque thread ou processeur.
Quoi de mieux?
En connaissez-vous?
Vous oubliez que la recherche de hachage est linéaire dans la longueur de la clé et puisque le calcul de hachage utilise certains arithmétiques, il est en fait moins efficace que la comparaison char-par-char. De plus, le découpage ne vous aidera pas, même si vous avez une partalité, car chaque fois que vous manquez, vous aurez énormément de travail perdu et il y aura beaucoup plus de ratés que de hits. La comparaison avec le centre est beaucoup plus efficace puisque vous pouvez renflouer tôt. – ZXX