Eficiência de detecção de palíndromo
Fiquei curioso porContratempo da entrevista de Jon Limjap e começou a procurar maneiras eficientes de fazer a detecção de palíndromo. Eu verifiquei opalindrome golf respostas e parece-me que nas respostas existem apenas dois algoritmos, invertendo a string e verificando da cauda e da cabeça.
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]
Eu acho que nenhum desses métodos é usado na detecção de palíndromos exatos em enormes sequências de DNA. Eu olhei em volta e não encontrei nenhum artigo gratuito sobre o que poderia ser uma maneira ultra eficiente.
Uma boa maneira é paralelizar a primeira versão em uma abordagem de dividir e conquistar, atribuindo um par de matrizes de caracteres 1..n e length-1-n..length-1 a cada encadeamento ou processador.
Qual seria a melhor maneira?
Você conhece algum?