Здесь нет ошибки здесь. Это явление известно как целочисленное переполнение .
x = np.arange(1,100000001)
print(x.sum()) # 987459712
print(x.dtype) # dtype('int32')
32-битный целочисленный тип, используемый в arange
для данного входа, просто не может содержать 5000000050000000. В лучшем случае это может занять 2147483647 .
Если вы явно используете тип данных с большим целым или с плавающей точкой, вы получите ожидаемый результат.
a = np.arange(1, 100000001, dtype='int64').sum()
print(a) # 5000000050000000
a = np.arange(1.0, 100000001.0).sum()
print(a) # 5000000050000000.0
Я с тех пор нашел соответствующая статья Википедии. Это не NP полная проблема, это может быть сделано в O (млн) время с помощью алгоритма динамического программирования.
В PHP я нашел функция similar_text очень полезный. Вот пример кода, чтобы получить ряд текстовых электронных писем и цикла через них и найти, которые на 90% подобны друг другу. Примечание: Что-то вроде этого не масштабируемо :
<?php
// Gather all messages by a user into two identical associative arrays
$getMsgsRes = mysql_query(SELECT * FROM email_messages WHERE from = '$someUserID');
while($msgInfo = mysql_fetch_assoc($getMsgsRes))
{
$msgsInfo1[] = $msgInfo;
$msgsInfo2[] = $msgInfo;
}
// Loop over msgs and compare each one to every other
foreach ($msgsInfo1 as $msg1)
foreach ($msgsInfo2 as $msg2)
similar_text($msg1['msgTxt'],$msg2['msgTxt'],$similarity_pst);
if ($similarity_pst > 90)
echo "{$msg1['msgID']} is ${similarity_pst}% to {$msg2['msgID']}\n";
?>
функция similar_text может быть тем, что Вы хотите.
Это вычисляет подобие между двумя строками. Возвращает количество соответствия символам в обеих строках
, можно также хотеть посмотреть levenshtein
Тем более, что мое приложение этого должно искать базу данных электронной почты и искать спам (т.е. подобные электронные письма, посланные тем же человеком).
я думаю, что необходимо смотреть на Байесовские алгоритмы вывода спама, не обязательно самую длинную общую подстроку.
http://www.devshed.com/c/a/PHP/Implement-Bayesian-inference-using-PHP-Part-1/
Взгляните на реализация/Строки/Самая длинная Алгоритма общая подстрока на Викиучебнике. Я не протестировал реализацию PHP, но это, кажется, соответствует общему алгоритму на странице Wikipedia.