Допустим мы не знаем ни одной 9-ки. Посчитаны 18 наименьших паттернов.
Прекрасно. А теперь смотрим на реальность:
Код:
? pp=[1..9]; forprime(p=15,6469693230+900, pp=concat(pp[2..-1],p); if(Vecrev(pp)+pp==vector(#pp,i,pp[1]+pp[#pp]), print(pp[1],": ",pp-vector(#pp,i,pp[1])); ); );
98303867: [0, 6, 30, 36, 60, 84, 90, 114, 120]
580868411: [0, 6, 18, 36, 48, 60, 78, 90, 96]
784857233: [0, 6, 24, 84, 90, 96, 156, 174, 180]
857636081: [0, 12, 18, 42, 60, 78, 102, 108, 120]
909894593: [0, 18, 24, 48, 54, 60, 84, 90, 108]
951508777: [0, 6, 30, 36, 60, 84, 90, 114, 120]
1367470763: [0, 24, 36, 54, 60, 66, 84, 96, 120]
1480028129: [0, 12, 24, 30, 42, 54, 60, 72, 84]
1850590057: [0, 12, 24, 30, 42, 54, 60, 72, 84]
2106973111: [0, 6, 18, 36, 48, 60, 78, 90, 96]
2121382001: [0, 30, 36, 60, 78, 96, 120, 126, 156]
2409717977: [0, 30, 42, 60, 66, 72, 90, 102, 132]
2635873847: [0, 24, 36, 54, 60, 66, 84, 96, 120]
2704854571: [0, 30, 42, 60, 66, 72, 90, 102, 132]
3225527021: [0, 6, 36, 66, 78, 90, 120, 150, 156]
3386231489: [0, 42, 60, 78, 90, 102, 120, 138, 180]
3823509979: [0, 18, 42, 48, 60, 72, 78, 102, 120]
3824915581: [0, 42, 60, 78, 90, 102, 120, 138, 180]
3905211463: [0, 18, 24, 48, 54, 60, 84, 90, 108]
4123167547: [0, 30, 66, 114, 120, 126, 174, 210, 240]
4127991299: [0, 18, 48, 78, 84, 90, 120, 150, 168]
4386448057: [0, 24, 36, 54, 60, 66, 84, 96, 120]
5101652783: [0, 30, 36, 66, 78, 90, 120, 126, 156]
5106241879: [0, 18, 60, 78, 90, 102, 120, 162, 180]
5129361137: [0, 24, 36, 54, 60, 66, 84, 96, 120]
5196185947: [0, 12, 24, 30, 42, 54, 60, 72, 84]
5456228681: [0, 18, 30, 60, 78, 96, 126, 138, 156]
5601567187: [0, 12, 24, 30, 42, 54, 60, 72, 84]
5669384131: [0, 6, 12, 42, 66, 90, 120, 126, 132]
5757284497: [0, 12, 24, 30, 42, 54, 60, 72, 84]
5834474677: [0, 6, 12, 36, 66, 96, 120, 126, 132]
5873268571: [0, 18, 30, 66, 108, 150, 186, 198, 216]
5905502627: [0, 30, 66, 84, 90, 96, 114, 150, 180]
6048371029: [0, 12, 24, 30, 42, 54, 60, 72, 84]
6151077269: [0, 12, 24, 30, 42, 54, 60, 72, 84]
Видим что в 29# найдено 7шт 9-84. Это хорошо.
Плохо что первый кортеж длиной 9 найден и в 23# - и совсем плохо что это совсем не 9-84, а вовсе даже 9-120-1.
Оценим что выгоднее для нахождения
любого кортежа длиной 9, считать весь 29# только для 9-84, считать только 9-84 по периодам 23#, или считать все 18 кортежей кусками по 23#:
1. 9-84 в 29#: 1433600 вариантов.
2. 9-84 кусками по 23#: 7*71680=501760 вариантов.
3. с 9-84 по 9-120-1 в 23# (он будет сразу найден, потому остальные паттерны не проверяются): 71680+107520+143360+129024=451484 вариантов.
Видите? Искать 9-84 невыгодно ни первым ни даже вторым способом! Выгоднее проверять кучу паттернов. О чём я и говорил. Разница правда небольшая, тут скорее везение, ну так и паттерны не длинные и не особо редкие.
Тут конечно вопрос на каком диаметре остановиться в третьем способе, скажем не считать же все паттерны диаметром до 600 для длины 17, их дофига. Но вот длиной 444 встречается лишь в 3.7 раза дальше минимального (который в 1/4 от 47#, т.е. 11-444 есть уже в 47#), диаметром 408 в 17 раз дальше, диаметром 396 в 25.4 раза дальше, диаметром 312 в 43 раза дальше (он 254-й паттерн по счёту), а
если предположить что наиболее вероятным будет с минимальным диаметром 17-240-3 (наименьший из трёх), то он в 1625 раз дальше.
Т.е. если проверять лишь 255 паттернов (диаметры по 312) кусками по 47#, то хватит 11-ти кусков для обнаружения 17-312, это округлённо 2800 итераций (по паттернам и периодам 47#). А для нахождения любого из 17-240 достаточно проверить 3 паттерна по 8*53#=8*36*47#=864 итераций, в 3.5 раза меньше. Но тут использованы априорные знания о месторасположении кортежей разных диаметров.
Да, для поиска любой 17-ки выходит что выгоднее искать наиболее вероятный паттерн (
если таковым действительно является любой из 17-240, на что есть эмпирические основания).
Похоже что таки да, правы Вы, для длинных паттернов (похоже уже с длины 17) наименьшие будут со слишком большим диаметром и перебором паттернов их искать дольше чем искать несколько наиболее вероятных. Но эту оценку надо было провести, и надо её ещё уточнить, я для 17-ек слишком огрубил.