Tôi đã tò mò theo số Jon Limjap's interview mishap và bắt đầu tìm kiếm các cách hiệu quả để phát hiện palindrome. Tôi đã kiểm tra các câu trả lời palindrome golf và có vẻ như với tôi rằng trong câu trả lời là hai thuật toán duy nhất, đảo ngược chuỗi và kiểm tra từ đuôi và đầu.Hiệu suất phát hiện 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]
Tôi nghĩ rằng không có phương pháp nào trong số này được sử dụng để phát hiện chính xác palindromes trong chuỗi ADN lớn. Tôi nhìn xung quanh một chút và không tìm thấy bất kỳ bài viết miễn phí về những gì một cách cực kỳ hiệu quả cho điều này có thể được.
Cách tốt nhất có thể là song song phiên bản đầu tiên theo cách tiếp cận phân chia và chinh phục, gán một cặp mảng char 1..n và length-1-n..length-1 cho mỗi luồng hoặc bộ xử lý.
Điều gì sẽ là cách tốt hơn?
Bạn có biết không?
Bạn quên rằng tra cứu băm là tuyến tính trong chiều dài của khóa và vì tính toán băm sử dụng một số arithmetics nó thực sự kém hiệu quả hơn so sánh char-by-char. Ngoài ra chunking sẽ không giúp đỡ ngay cả khi bạn partalelize kể từ khi cho mỗi miss bạn sẽ có số tiền rất lớn của công việc lãng phí và có nhiều hơn nữa nhiều hơn so với số truy cập. So sánh từ trung tâm là hiệu quả hơn nhiều kể từ khi bạn có thể bảo lãnh sớm. – ZXX